<?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>177917</bug_id>
          
          <creation_ts>2017-10-04 22:09:39 -0700</creation_ts>
          <short_desc>[iOS] Tweak support for classifying form controls (followup to r222487)</short_desc>
          <delta_ts>2019-11-21 12:03:43 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=204464</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Wenson Hsieh">wenson_hsieh</reporter>
          <assigned_to name="Wenson Hsieh">wenson_hsieh</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>dino</cc>
    
    <cc>mitz</cc>
    
    <cc>rniwa</cc>
    
    <cc>thorton</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1356842</commentid>
    <comment_count>0</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-10-04 22:09:39 -0700</bug_when>
    <thetext>&lt;rdar://problem/34820122&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1356863</commentid>
    <comment_count>1</comment_count>
      <attachid>322788</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-10-04 23:06:39 -0700</bug_when>
    <thetext>Created attachment 322788
First pass</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1357212</commentid>
    <comment_count>2</comment_count>
      <attachid>322903</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-10-05 13:23:54 -0700</bug_when>
    <thetext>Created attachment 322903
More API test fixes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1357299</commentid>
    <comment_count>3</comment_count>
      <attachid>322927</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-10-05 15:55:16 -0700</bug_when>
    <thetext>Created attachment 322927
Fix some ChangeLog wording</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1357585</commentid>
    <comment_count>4</comment_count>
      <attachid>323018</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-10-06 08:36:36 -0700</bug_when>
    <thetext>Created attachment 323018
Remove unintended change in DataInteractionTests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1357691</commentid>
    <comment_count>5</comment_count>
      <attachid>323018</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-10-06 11:53:04 -0700</bug_when>
    <thetext>Comment on attachment 323018
Remove unintended change in DataInteractionTests.

Clearing flags on attachment: 323018

Committed r222991: &lt;http://trac.webkit.org/changeset/222991&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1357692</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-10-06 11:53:06 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>322788</attachid>
            <date>2017-10-04 23:06:39 -0700</date>
            <delta_ts>2017-10-05 13:23:53 -0700</delta_ts>
            <desc>First pass</desc>
            <filename>bug-177917-20171004230639.patch</filename>
            <type>text/plain</type>
            <size>24744</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIyODg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGM1OGI3ZTQ3OTIyNmQ3NjBj
MTYxNmFmMjkyZWJjYWRkOGI3N2FjNGYuLjE0Yzc0NDQ4OTY5ZWRlZTQ0MWJkNjczYmVhNzVkNzQ1
MzNjNjhmNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDkgQEAKKzIwMTctMTAtMDQgIFdlbnNvbiBI
c2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgW2lPU10gVHdlYWsgc3Vw
cG9ydCBmb3IgY2xhc3NpZnlpbmcgZm9ybSBjb250cm9scyAoZm9sbG93dXAgdG8gcjIyMjQ4NykK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NzkxNwor
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzQ4MjAxMjI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBmb2xsb3dzIHVwIHdpdGggPGh0
dHA6Ly90cmFjLndlYmtpdC5vcmcvcjIyMjQ4Nz4uIEl0IGNvbWJpbmVzIHRoZSBmdW5jdGlvbmFs
aXR5IG9mIHR3byBTUEkgaG9va3MKKyAgICAgICAgaW1wbGVtZW50ZWQgb24gV0tDb250ZW50Vmll
dyBpbnRvIGEgc2luZ2xlIG1ldGhvZCB0aGF0IHZlbmRzIGEgc2luZ2xlIGNvbnRleHQsIGFuZCBh
ZGRpdGlvbmFsbHkgYWRkcmVzc2VzIGFuCisgICAgICAgIGlzc3VlIHdpdGggdGhlIG9yaWdpbmFs
IGltcGxlbWVudGF0aW9uLCB3aGVyZWluIHNvbWUgY2FjaGVkIHN0YXRlIG9uIFdlYlBhZ2VQcm94
eSBpcyBzZXQgdXBvbiBzdGFydGluZyBub2RlCisgICAgICAgIGFzc2lzdGFuY2UsIGJ1dCBpcyBu
ZXZlciB1bnNldCB3aGVuIHN0b3BwaW5nIG5vZGUgYXNzaXN0YW5jZSwgbm9yIHNldCBhbnl3aGVy
ZSBlbHNlLiBTZWUgcGVyLW1ldGhvZCBjb21tZW50cyBmb3IKKyAgICAgICAgbW9yZSBkZXRhaWwu
CisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisKKyAgICAgICAgUmVtb3Zl
IGNsYXNzIG1lbWJlcnMgbV9hY2NlcHRzQXV0b2ZpbGxlZExvZ2luQ3JlZGVudGlhbHMgYW5kIG1f
cmVwcmVzZW50aW5nUGFnZVVSTCBmcm9tIFdlYlBhZ2VQcm94eS4gVGhpcyBzdGF0ZQorICAgICAg
ICBpcyByZXRyaWV2ZWQgZnJvbSB0aGUgQXNzaXN0ZWROb2RlSW5mb3JtYXRpb24gc3RydWN0IHdo
ZW4gc3RhcnRpbmcgbm9kZSBhc3Npc3RhbmNlLCBidXQgaXMgbmV2ZXIgcmVzZXQgYW55d2hlcmUK
KyAgICAgICAgZWxzZS4gSW5zdGVhZCBvZiBpbnRyb2R1Y2luZyBuZXcgbWVtYmVycyB0byByZW1l
bWJlciB0aGlzIHN0YXRlLCB3ZSBjYW4ganVzdCB1c2UgdGhlIFdLQ29udGVudFZpZXcncyBjdXJy
ZW50CisgICAgICAgIGFzc2lzdGVkIG5vZGUgaW5mb3JtYXRpb24uCisKKyAgICAgICAgVGhpcyBh
bHNvIG1lYW5zIHRoYXQgcHJvZ3JhbW1hdGljYWxseSBmb2N1c2luZyBmb3JtcyAod2l0aG91dCB1
c2VyIGdlc3R1cmUpIHdpbGwgbm8gbG9uZ2VyIGNhdXNlIFdLQ29udGVudFZpZXcKKyAgICAgICAg
dG8gYWNjZXB0IGF1dG9maWxsZWQgbG9naW4gY3JlZGVudGlhbHMsIHNpbmNlIHdlIGJhaWwgb3V0
IG9mIG5vZGUgYXNzaXN0YW5jZSBhbmQgZG9uJ3QgYmVnaW4gYW4gaW5wdXQgc2Vzc2lvbi4KKwor
ICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlldy5tbToKKyAgICAgICAgKC1bV0tD
b250ZW50VmlldyBhY2NlcHRzQXV0b2ZpbGxlZExvZ2luQ3JlZGVudGlhbHNdKTogRGVsZXRlZC4K
KyAgICAgICAgKC1bV0tDb250ZW50VmlldyByZXByZXNlbnRpbmdQYWdlVVJMXSk6IERlbGV0ZWQu
CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW06Cisg
ICAgICAgICgtW1dLQ29udGVudFZpZXcgX2F1dG9maWxsQ29udGV4dF0pOgorCisgICAgICAgIE1l
cmdlIGZ1bmN0aW9uYWxpdHkgb2YgdGhlIHByZXZpb3VzIHR3byBTUEkgaG9va3MsIHN1Y2ggdGhh
dCAtX2F1dG9maWxsQ29udGV4dCB3aWxsIHJldHVybiBhIG5vbi1udWxsIGRpY3Rpb25hcnkKKyAg
ICAgICAgY29udGFpbmluZyB0aGUgVVJMIG9mIHRoZSBmb2N1c2VkIGVsZW1lbnQncyBkb2N1bWVu
dCBpZiBhbmQgb25seSBpZiBXS0NvbnRlbnRWaWV3IGFjY2VwdHMgYXV0b2ZpbGxlZCBsb2dpbgor
ICAgICAgICBjcmVkZW50aWFscywgYW5kIHRoZXJlIGV4aXN0cyBhIHJlcHJlc2VudGluZyBwYWdl
IFVSTC4KKworICAgICAgICBXaGVuIHRoZSBwYWdlIHN0b3BzIGFzc2lzdGluZyB0aGUgZm9jdXNl
ZCBub2RlLCB3ZSBzZXQgdGhlIEFzc2lzdGVkTm9kZUluZm9ybWF0aW9uJ3MgZWxlbWVudCB0eXBl
IHRvIE5vbmUsIHNvIHdlCisgICAgICAgIGFkZGl0aW9uYWxseSBiYWlsIGFuZCByZXR1cm4gbmls
IGlmIHRoZSBlbGVtZW50IHR5cGUgaXMgTm9uZS4gQXMgYW4gYXNpZGUsIGl0IHNlZW1zIGEgbW9y
ZSByZWFzb25hYmxlIGFwcHJvYWNoIHRvCisgICAgICAgIHJlc2V0dGluZyBzdGF0ZSB1cG9uIHN0
b3BwaW5nIG5vZGUgYXNzaXN0YW5jZSBpcyB0byBqdXN0IGNvbXBsZXRlbHkgcmVzZXQgX2Fzc2lz
dGVkTm9kZUluZm9ybWF0aW9uIHRvIGl0cyBpbml0aWFsCisgICAgICAgIHZhbHVlLCBpLmUuIHZp
YSBfYXNzaXN0ZWROb2RlSW5mb3JtYXRpb24gPSB7IH0uIEl0J3Mgbm90IGNsZWFyIHdoZXRoZXIg
dGhlcmUgYXJlIGJlaGF2aW9ycyByZWx5aW5nIG9uIHRoZSBmYWN0CisgICAgICAgIHRoYXQgdGhl
IGFsbCBidXQgdGhlIGVsZW1lbnQgdHlwZSBpbiB0aGUgY29udGVudCB2aWV3J3MgYXNzaXN0ZWQg
bm9kZSBpbmZvcm1hdGlvbiBjb3VsZCBiZSBzdGFsZSwgYnV0IHRoaXMgc2VlbXMKKyAgICAgICAg
dG8gYmUgd29ydGggc29tZSBpbnZlc3RpZ2F0aW9uLgorCisgICAgICAgICogVUlQcm9jZXNzL2lv
cy9XZWJQYWdlUHJveHlJT1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c3Rh
cnRBc3Npc3RpbmdOb2RlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjphY2NlcHRz
QXV0b2ZpbGxlZExvZ2luQ3JlZGVudGlhbHMpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OnJlcHJlc2VudGluZ1BhZ2VVUkwpOiBEZWxldGVkLgorCiAyMDE3LTEwLTA0
ICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIHVu
dXNlZCB2YXJpYWJsZXMgaW4gbGFtYmRhcyBmb3IgbmV0d29yayBwcm9jZXNzIGNhY2hlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggNzNhNTY5YjUwNWZmMmRiNTc5ZTU4NTc3OGRlNTU3
ZmY1YjIzNDMxOS4uYmFjZDJkZjE4YjI0MTAwZmI3YzdhZDdhODcxNTc1NDlkNjkxZjYwNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDE3LTEwLTA0ICBX
ZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIFR3
ZWFrIHN1cHBvcnQgZm9yIGNsYXNzaWZ5aW5nIGZvcm0gY29udHJvbHMgKGZvbGxvd3VwIHRvIHIy
MjI0ODcpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
Nzc5MTcKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzM0ODIwMTIyPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudCBfYXV0b2ZpbGxDb250
ZXh0IGluIGxlZ2FjeSBXZWJLaXQsIGFuZCByZW1vdmUgdGhlIHR3byBwcmV2aW91cyBTUEkgaG9v
a3MuCisKKyAgICAgICAgKiBET00vRE9NSFRNTElucHV0RWxlbWVudC5tbToKKyAgICAgICAgKC1b
RE9NSFRNTElucHV0RWxlbWVudCBfYXV0b2ZpbGxDb250ZXh0XSk6CisgICAgICAgICgtW0RPTUhU
TUxJbnB1dEVsZW1lbnQgYWNjZXB0c0F1dG9maWxsZWRMb2dpbkNyZWRlbnRpYWxzXSk6IERlbGV0
ZWQuCisgICAgICAgICgtW0RPTUhUTUxJbnB1dEVsZW1lbnQgcmVwcmVzZW50aW5nUGFnZVVSTF0p
OiBEZWxldGVkLgorCiAyMDE3LTA5LTI5ICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUu
Y29tPgogCiAgICAgICAgIEZvbGxvdy11cCB0byBodHRwczovL3RyYWMud2Via2l0Lm9yZy9yMjIy
MjM5IHRvIGZpeCBjcmFzaGVzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApp
bmRleCA3MDU4YzhlMTEwYmEzZmI3MzNiNjllM2NkNTExZGNkZmY1YmMxYjFkLi43MDVlZmJmYWNm
ZTgzNDJlNTU4ZThkNzc1YTUwMzhjNWYyYWEzZjIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuaApAQCAtNTU5LDggKzU1OSw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldElz
U2Nyb2xsaW5nT3Jab29taW5nKGJvb2wpOwogICAgIHZvaWQgcmVxdWVzdFJlY3RzRm9yR3JhbnVs
YXJpdHlXaXRoU2VsZWN0aW9uT2Zmc2V0KFdlYkNvcmU6OlRleHRHcmFudWxhcml0eSwgdWludDMy
X3Qgb2Zmc2V0LCBXVEY6OkZ1bmN0aW9uPHZvaWQoY29uc3QgVmVjdG9yPFdlYkNvcmU6OlNlbGVj
dGlvblJlY3Q+JiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOwogICAgIHZvaWQgcmVxdWVzdFJl
Y3RzQXRTZWxlY3Rpb25PZmZzZXRXaXRoVGV4dChpbnQzMl90IG9mZnNldCwgY29uc3QgU3RyaW5n
JiwgV1RGOjpGdW5jdGlvbjx2b2lkKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpTZWxlY3Rpb25SZWN0
PiYsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKLSAgICBib29sIGFjY2VwdHNBdXRvZmlsbGVk
TG9naW5DcmVkZW50aWFscygpOwotICAgIFdlYkNvcmU6OlVSTCByZXByZXNlbnRpbmdQYWdlVVJM
KCk7CiAgICAgdm9pZCBhdXRvZmlsbExvZ2luQ3JlZGVudGlhbHMoY29uc3QgU3RyaW5nJiB1c2Vy
bmFtZSwgY29uc3QgU3RyaW5nJiBwYXNzd29yZCk7CiAjaWYgRU5BQkxFKERBVEFfSU5URVJBQ1RJ
T04pCiAgICAgdm9pZCBkaWRQZXJmb3JtRGF0YUludGVyYWN0aW9uQ29udHJvbGxlck9wZXJhdGlv
bihib29sIGhhbmRsZWQpOwpAQCAtMTk5Niw4ICsxOTk0LDYgQEAgcHJpdmF0ZToKICAgICBib29s
IG1faGFzRGVmZXJyZWRTdGFydEFzc2lzdGluZ05vZGUgeyBmYWxzZSB9OwogICAgIHN0ZDo6dW5p
cXVlX3B0cjxOb2RlQXNzaXN0YW5jZUFyZ3VtZW50cz4gbV9kZWZlcnJlZE5vZGVBc3Npc3RhbmNl
QXJndW1lbnRzOwogICAgIGJvb2wgbV9mb3JjZUFsd2F5c1VzZXJTY2FsYWJsZSB7IGZhbHNlIH07
Ci0gICAgYm9vbCBtX2FjY2VwdHNBdXRvZmlsbGVkTG9naW5DcmVkZW50aWFscyB7IGZhbHNlIH07
Ci0gICAgV2ViQ29yZTo6VVJMIG1fcmVwcmVzZW50aW5nUGFnZVVSTDsKICNlbmRpZgogCiAjaWYg
RU5BQkxFKFBPSU5URVJfTE9DSykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9XS0NvbnRlbnRWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29u
dGVudFZpZXcubW0KaW5kZXggNjg1ZTM5NDY0NWY3N2I4MDA4ZDc4OGFkOTU1OTJkNjRjYjllYmEx
ZC4uZDYxY2VkZmMxNGUyNmVjNDgzZTBlOTBjMTg2MjdmMjM0MWU5NTBjMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcubW0KKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcubW0KQEAgLTI1OCwxNiArMjU4LDYg
QEAgLSAoV2ViUGFnZVByb3h5KilwYWdlCiAgICAgcmV0dXJuIF9wYWdlLmdldCgpOwogfQogCi0t
IChCT09MKWFjY2VwdHNBdXRvZmlsbGVkTG9naW5DcmVkZW50aWFscwotewotICAgIHJldHVybiBf
cGFnZS0+YWNjZXB0c0F1dG9maWxsZWRMb2dpbkNyZWRlbnRpYWxzKCk7Ci19Ci0KLS0gKE5TVVJM
ICopcmVwcmVzZW50aW5nUGFnZVVSTAotewotICAgIHJldHVybiBfcGFnZS0+cmVwcmVzZW50aW5n
UGFnZVVSTCgpOwotfQotCiAtICh2b2lkKXdpbGxNb3ZlVG9XaW5kb3c6KFVJV2luZG93ICopbmV3
V2luZG93CiB7CiAgICAgTlNOb3RpZmljYXRpb25DZW50ZXIgKmRlZmF1bHRDZW50ZXIgPSBbTlNO
b3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQppbmRleCBmYTlh
ODEyOGFkYzBhMDFjMDdlOGE5NGUyYmU4OGMyYmMwZGI0ZTBhLi4wYmEzMDg4YTg0N2VlZTZmMjRi
YWIyOTQ5MjdmYzEyYWIxMmFkYjE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KQEAgLTQ1MTgsNiArNDUxOCwx
OCBAQCAtIChOU0FycmF5PFVJRHJhZ0l0ZW0gKj4gKilfaXRlbXNGb3JCZWdpbm5pbmdPckFkZGlu
Z1RvU2Vzc2lvbldpdGhSZWdpc3RyYXRpb25MaQogICAgIHJldHVybiBkcmFnSXRlbXM7CiB9CiAK
Ky0gKE5TRGljdGlvbmFyeSAqKV9hdXRvZmlsbENvbnRleHQKK3sKKyAgICBpZiAoX2Fzc2lzdGVk
Tm9kZUluZm9ybWF0aW9uLmVsZW1lbnRUeXBlID09IElucHV0VHlwZTo6Tm9uZSB8fCAhX2Fzc2lz
dGVkTm9kZUluZm9ybWF0aW9uLmFjY2VwdHNBdXRvZmlsbGVkTG9naW5DcmVkZW50aWFscykKKyAg
ICAgICAgcmV0dXJuIG5pbDsKKworICAgIE5TVVJMICpwbGF0Zm9ybVVSTCA9IF9hc3Npc3RlZE5v
ZGVJbmZvcm1hdGlvbi5yZXByZXNlbnRpbmdQYWdlVVJMOworICAgIGlmICghcGxhdGZvcm1VUkwp
CisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICByZXR1cm4gQHsgQCJfV2ViVmlld1VSTCIgOiBw
bGF0Zm9ybVVSTCB9OworfQorCiAjcHJhZ21hIG1hcmsgLSBVSURyYWdJbnRlcmFjdGlvbkRlbGVn
YXRlCiAKIC0gKEJPT0wpX2RyYWdJbnRlcmFjdGlvbjooVUlEcmFnSW50ZXJhY3Rpb24gKilpbnRl
cmFjdGlvbiBzaG91bGREZWxheUNvbXBldGluZ0dlc3R1cmVSZWNvZ25pemVyOihVSUdlc3R1cmVS
ZWNvZ25pemVyICopY29tcGV0aW5nR2VzdHVyZVJlY29nbml6ZXIKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0gYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCmluZGV4IGQzZTY3ZDdlMzUzOTI4MTVh
MTM1MWFjYjFjNDZkMzE2ZTQ3YmE1YTQuLmFhYjA3YTdlMzFiN2VkZDdlN2MzZTdjMzE1ZDUxYjdl
MDU3MTM4ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdl
UHJveHlJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94
eUlPUy5tbQpAQCAtODkxLDggKzg5MSw2IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRHZXRUYXBI
aWdobGlnaHRHZW9tZXRyaWVzKHVpbnQ2NF90IHJlcXVlc3RJRCwgY29uc3QgV2ViQ29yCiAKIHZv
aWQgV2ViUGFnZVByb3h5OjpzdGFydEFzc2lzdGluZ05vZGUoY29uc3QgQXNzaXN0ZWROb2RlSW5m
b3JtYXRpb24mIGluZm9ybWF0aW9uLCBib29sIHVzZXJJc0ludGVyYWN0aW5nLCBib29sIGJsdXJQ
cmV2aW91c05vZGUsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKIHsKLSAgICBtX2FjY2VwdHNB
dXRvZmlsbGVkTG9naW5DcmVkZW50aWFscyA9IGluZm9ybWF0aW9uLmFjY2VwdHNBdXRvZmlsbGVk
TG9naW5DcmVkZW50aWFsczsKLSAgICBtX3JlcHJlc2VudGluZ1BhZ2VVUkwgPSBpbmZvcm1hdGlv
bi5yZXByZXNlbnRpbmdQYWdlVVJMOwogICAgIEFQSTo6T2JqZWN0KiB1c2VyRGF0YU9iamVjdCA9
IHByb2Nlc3MoKS50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgpKS5n
ZXQoKTsKICAgICBpZiAobV9lZGl0b3JTdGF0ZS5pc01pc3NpbmdQb3N0TGF5b3V0RGF0YSkgewog
ICAgICAgICBtX2RlZmVycmVkTm9kZUFzc2lzdGFuY2VBcmd1bWVudHMgPSBzdGQ6Om1ha2VfdW5p
cXVlPE5vZGVBc3Npc3RhbmNlQXJndW1lbnRzPihOb2RlQXNzaXN0YW5jZUFyZ3VtZW50cyB7IGlu
Zm9ybWF0aW9uLCB1c2VySXNJbnRlcmFjdGluZywgYmx1clByZXZpb3VzTm9kZSwgdXNlckRhdGFP
YmplY3QgfSk7CkBAIC05MTIsMTYgKzkxMCw2IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzdG9wQXNz
aXN0aW5nTm9kZSgpCiAgICAgbV9wYWdlQ2xpZW50LnN0b3BBc3Npc3RpbmdOb2RlKCk7CiB9CiAK
LWJvb2wgV2ViUGFnZVByb3h5OjphY2NlcHRzQXV0b2ZpbGxlZExvZ2luQ3JlZGVudGlhbHMoKQot
ewotICAgIHJldHVybiBtX2FjY2VwdHNBdXRvZmlsbGVkTG9naW5DcmVkZW50aWFsczsKLX0KLQot
V2ViQ29yZTo6VVJMIFdlYlBhZ2VQcm94eTo6cmVwcmVzZW50aW5nUGFnZVVSTCgpCi17Ci0gICAg
cmV0dXJuIG1fcmVwcmVzZW50aW5nUGFnZVVSTDsKLX0KLQogdm9pZCBXZWJQYWdlUHJveHk6OmF1
dG9maWxsTG9naW5DcmVkZW50aWFscyhjb25zdCBTdHJpbmcmIHVzZXJuYW1lLCBjb25zdCBTdHJp
bmcmIHBhc3N3b3JkKQogewogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
QXV0b2ZpbGxMb2dpbkNyZWRlbnRpYWxzKHVzZXJuYW1lLCBwYXNzd29yZCksIG1fcGFnZUlEKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MSW5wdXRFbGVt
ZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxJbnB1dEVsZW1lbnQu
bW0KaW5kZXggOGJkOGNjNzc3ZWU2ZjZhZGI5M2RjYzRlMDM4ZGNiMTdjNjM2YmNlZC4uY2M4N2Qw
Y2VlNmZlMTAzNjU2MTg2MGY1YTE5YTI3OGQ4MzQ1OTI1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxJbnB1dEVsZW1lbnQubW0KKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxJbnB1dEVsZW1lbnQubW0KQEAgLTY4MywxNiArNjgz
LDE3IEBAIC0gKHZvaWQpc2V0VmFsdWVGb3JVc2VyOihOU1N0cmluZyAqKWluVmFsdWUKICAgICBJ
TVBMLT5zZXRWYWx1ZUZvclVzZXIoaW5WYWx1ZSk7CiB9CiAKLS0gKEJPT0wpYWNjZXB0c0F1dG9m
aWxsZWRMb2dpbkNyZWRlbnRpYWxzCistIChOU0RpY3Rpb25hcnkgKilfYXV0b2ZpbGxDb250ZXh0
CiB7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIHJldHVy
biAhIVdlYkNvcmU6OkF1dG9maWxsRWxlbWVudHM6OmNvbXB1dGVBdXRvZmlsbEVsZW1lbnRzKCpJ
TVBMKTsKLX0KKyAgICBpZiAoIVdlYkNvcmU6OkF1dG9maWxsRWxlbWVudHM6OmNvbXB1dGVBdXRv
ZmlsbEVsZW1lbnRzKCpJTVBMKSkKKyAgICAgICAgcmV0dXJuIG5pbDsKIAotLSAoTlNVUkwgKily
ZXByZXNlbnRpbmdQYWdlVVJMCi17Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRl
IHN0YXRlOwotICAgIHJldHVybiBbTlNVUkwgVVJMV2l0aFN0cmluZzpzZWxmLm93bmVyRG9jdW1l
bnQuVVJMXTsKKyAgICBOU1VSTCAqZG9jdW1lbnRVUkwgPSBbTlNVUkwgVVJMV2l0aFN0cmluZzpz
ZWxmLm93bmVyRG9jdW1lbnQuVVJMXTsKKyAgICBpZiAoIWRvY3VtZW50VVJMKQorICAgICAgICBy
ZXR1cm4gbmlsOworCisgICAgcmV0dXJuIEB7IEAiX1dlYlZpZXdVUkwiIDogZG9jdW1lbnRVUkwg
fTsKIH0KIAogI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspICYmIFRBUkdFVF9PU19JUEhPTkUK
ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBjMGY3
ZGY5NGNkNTc5NDc0MzhhNzk0ZWI2MTY0ZmNhYzJhMDVkN2I4Li5hNjhhY2I0MThkOWY0NmQzMjBh
NzI5Y2E5YTg4ODliNTM5NjNlMzdlIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIv
VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjggQEAKKzIwMTctMTAtMDQgIFdlbnNvbiBIc2ll
aCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgW2lPU10gVHdlYWsgc3VwcG9y
dCBmb3IgY2xhc3NpZnlpbmcgZm9ybSBjb250cm9scyAoZm9sbG93dXAgdG8gcjIyMjQ4NykKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NzkxNworICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vMzQ4MjAxMjI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgTWlub3IgY2xlYW51cCBhcm91bmQgYXV0b2ZpbGwgQVBJ
IHRlc3RzIGFkZGVkIGluIHIyMjI0ODcuIEFkZGl0aW9uYWxseSwgYXVnbWVudHMgc29tZSBvZiB0
aGVzZSBBUEkgdGVzdHMgdG8KKyAgICAgICAgdmVyaWZ5IHRoYXQgYWZ0ZXIgYmx1cnJpbmcgdGhl
IGZvY3VzZWQgZWxlbWVudCwgdGhlIGNvbnRlbnQgdmlldyBubyBsb25nZXIgYWNjZXB0cyBhdXRv
ZmlsbCBjcmVkZW50aWFscyAoc2VlCisgICAgICAgIFdlYktpdCBDaGFuZ2VMb2cgZm9yIG1vcmUg
ZGV0YWlscykuIEFsc28gYXVnbWVudHMgdGVzdHMgdG8gdmVyaWZ5IHRoYXQgdGhlIFVSTCBpbiB0
aGUgYXV0b2ZpbGwgY29udGV4dCBtYXRjaGVzCisgICAgICAgIHRoZSBkb2N1bWVudCBVUkwuCisK
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9XS1dlYlZpZXdBdXRvZmlsbFRlc3Rz
Lm1tOgorICAgICAgICAoY3JlYXRlVUlLZXlib2FyZExvZ2luQ3JlZGVudGlhbHNTdWdnZXN0aW9u
KToKKyAgICAgICAgKC1bVGVzdElucHV0RGVsZWdhdGUgX3dlYlZpZXc6Zm9jdXNTaG91bGRTdGFy
dElucHV0U2Vzc2lvbjpdKToKKyAgICAgICAgKC1bQXV0b2ZpbGxUZXN0VmlldyBpbml0V2l0aEZy
YW1lOl0pOgorICAgICAgICAoLVtBdXRvZmlsbFRlc3RWaWV3IF9wcml2YXRlVGV4dElucHV0XSk6
CisgICAgICAgICgtW0F1dG9maWxsVGVzdFZpZXcgdGV4dElucHV0SGFzQXV0b2ZpbGxDb250ZXh0
XSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKC1bV0tXZWJWaWV3
IF9wcml2YXRlVGV4dElucHV0XSk6IERlbGV0ZWQuCisgICAgICAgICogVGVzdFdlYktpdEFQSS9p
b3MvVUlLaXRTUEkuaDoKKworICAgICAgICBNaW5vciBnYXJkZW5pbmcgdG8gcmVtb3ZlIGlPUyB2
ZXJzaW9uID49IDExIGd1YXJkcyB0aGF0IGFyZSBub3cgdW5uZWNlc3NhcnkuCisKIDIwMTctMTAt
MDQgIEpGIEJhc3RpZW4gIDxqZmJhc3RpZW5AYXBwbGUuY29tPgogCiAgICAgICAgIFdURjogVXBk
YXRlIHN0ZDo6ZXhwZWN0ZWQgdG8gbWF0Y2ggY3VycmVudCBwcm9wb3NhbApkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9pb3MvV0tXZWJWaWV3QXV0b2ZpbGxUZXN0cy5tbSBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvaW9zL1dLV2ViVmlld0F1dG9maWxsVGVzdHMubW0K
aW5kZXggZTExMjg1ZWM0OTU2OTQxNTFlMTFmNTdjZmExYTUzZGM2MjdlZTBiNi4uYzEyN2Q1MzU2
NDNhYmNlZDc2MmUwNzI5NjhjNjIxOTQ3ZWFkNTIxMSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9pb3MvV0tXZWJWaWV3QXV0b2ZpbGxUZXN0cy5tbQorKysgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9XS1dlYlZpZXdBdXRvZmlsbFRlc3RzLm1tCkBAIC0zMCwz
NSArMzAsNzMgQEAKICNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJUZXN0
V0tXZWJWaWV3LmgiCiAjaW1wb3J0ICJVSUtpdFNQSS5oIgotCiAjaW1wb3J0IDxVSUtpdC9VSVRl
eHRJbnB1dFRyYWl0c19Qcml2YXRlLmg+CiAjaW1wb3J0IDxVSUtpdC9VSVRleHRJbnB1dF9Qcml2
YXRlLmg+Ci0KLS8vIEZJWE1FIDM0NTgzNjI4OiBTaW1wbHlmeSB0aGlzIG9uY2UgdGhlIFVJS2l0
IHdvcmsgaXMgYXZhaWxhYmxlIGluIHRoZSBidWlsZC4KLSNpZiBfX2hhc19pbmNsdWRlKDxVSUtp
dC9VSUtleWJvYXJkTG9naW5DcmVkZW50aWFsc1N1Z2dlc3Rpb24uaD4pCi0jaW1wb3J0IDxVSUtp
dC9VSUtleWJvYXJkTG9naW5DcmVkZW50aWFsc1N1Z2dlc3Rpb24uaD4KLSNlbHNlCiAjaW1wb3J0
IDxVSUtpdC9VSVRleHRTdWdnZXN0aW9uLmg+Ci1AaW50ZXJmYWNlIFVJS2V5Ym9hcmRMb2dpbkNy
ZWRlbnRpYWxzU3VnZ2VzdGlvbiA6IFVJVGV4dFN1Z2dlc3Rpb24KKyNpbXBvcnQgPFdlYktpdC9X
S1dlYlZpZXdQcml2YXRlLmg+CisjaW1wb3J0IDxXZWJLaXQvX1dLSW5wdXREZWxlZ2F0ZS5oPgog
CisvLyBGSVhNRTogU2ltcGxpZnkgdGhpcyBvbmNlIHRoZSA8cmRhcjovL3Byb2JsZW0vMzQ1ODM2
Mjg+IGlzIGF2YWlsYWJsZS4KK0BpbnRlcmZhY2UgVUlLZXlib2FyZExvZ2luQ3JlZGVudGlhbHNT
dWdnZXN0aW9uIDogVUlUZXh0U3VnZ2VzdGlvbgogQHByb3BlcnR5IChub25hdG9taWMsIGFzc2ln
bikgTlNTdHJpbmcgKnVzZXJuYW1lOwogQHByb3BlcnR5IChub25hdG9taWMsIGFzc2lnbikgTlNT
dHJpbmcgKnBhc3N3b3JkOworQGVuZAorCitzdGF0aWMgVUlLZXlib2FyZExvZ2luQ3JlZGVudGlh
bHNTdWdnZXN0aW9uICpjcmVhdGVVSUtleWJvYXJkTG9naW5DcmVkZW50aWFsc1N1Z2dlc3Rpb24o
TlNTdHJpbmcgKnVzZXJuYW1lLCBOU1N0cmluZyAqcGFzc3dvcmQpCit7CisgICAgVUlLZXlib2Fy
ZExvZ2luQ3JlZGVudGlhbHNTdWdnZXN0aW9uICpzdWdnZXN0aW9uID0gW05TQ2xhc3NGcm9tU3Ry
aW5nKEAiVUlLZXlib2FyZExvZ2luQ3JlZGVudGlhbHNTdWdnZXN0aW9uIikgbmV3XTsKKyAgICBz
dWdnZXN0aW9uLnVzZXJuYW1lID0gdXNlcm5hbWU7CisgICAgc3VnZ2VzdGlvbi5wYXNzd29yZCA9
IHBhc3N3b3JkOworICAgIHJldHVybiBzdWdnZXN0aW9uOworfQorCit0eXBlZGVmIFVJVmlldyA8
VUlUZXh0SW5wdXRQcml2YXRlLCBVSVRleHRJbnB1dFRyYWl0c19Qcml2YXRlLCBVSVRleHRJbnB1
dFRyYWl0c19Qcml2YXRlX1N0YWdpbmdfMzQ1ODM2Mjg+IEF1dG9maWxsQ29udGVudFZpZXc7CisK
K0BpbnRlcmZhY2UgVGVzdElucHV0RGVsZWdhdGUgOiBOU09iamVjdCA8X1dLSW5wdXREZWxlZ2F0
ZT4KIAogQGVuZAotI2VuZGlmCiAKLXN0YXRpYyBVSUtleWJvYXJkTG9naW5DcmVkZW50aWFsc1N1
Z2dlc3Rpb24gKmNyZWF0ZVVJS2V5Ym9hcmRMb2dpbkNyZWRlbnRpYWxzU3VnZ2VzdGlvbigpCitA
aW1wbGVtZW50YXRpb24gVGVzdElucHV0RGVsZWdhdGUKKworLSAoQk9PTClfd2ViVmlldzooV0tX
ZWJWaWV3ICopd2ViVmlldyBmb2N1c1Nob3VsZFN0YXJ0SW5wdXRTZXNzaW9uOihpZCA8X1dLRm9j
dXNlZEVsZW1lbnRJbmZvPilpbmZvCiB7Ci0gICAgcmV0dXJuIFtbTlNDbGFzc0Zyb21TdHJpbmco
QCJVSUtleWJvYXJkTG9naW5DcmVkZW50aWFsc1N1Z2dlc3Rpb24iKSBuZXddIGF1dG9yZWxlYXNl
XTsKKyAgICByZXR1cm4gWUVTOworfQorCitAZW5kCisKK0BpbnRlcmZhY2UgQXV0b2ZpbGxUZXN0
VmlldyA6IFRlc3RXS1dlYlZpZXcKKworQGVuZAorCitAaW1wbGVtZW50YXRpb24gQXV0b2ZpbGxU
ZXN0VmlldyB7CisgICAgUmV0YWluUHRyPFRlc3RJbnB1dERlbGVnYXRlPiBfdGVzdERlbGVnYXRl
OwogfQogCi10eXBlZGVmIFVJVmlldyA8VUlUZXh0SW5wdXRQcml2YXRlLCBVSVRleHRJbnB1dFRy
YWl0c19Qcml2YXRlLCBVSVRleHRJbnB1dFRyYWl0c19Qcml2YXRlX1N0YWdpbmdfMzQ1ODM2Mjg+
ICBBdXRvZmlsbENhbmRpZGF0ZVZpZXc7CistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhGcmFtZToo
Q0dSZWN0KWZyYW1lCit7CisgICAgaWYgKHNlbGYgPSBbc3VwZXIgaW5pdFdpdGhGcmFtZTpmcmFt
ZV0pIHsKKyAgICAgICAgX3Rlc3REZWxlZ2F0ZSA9IGFkb3B0TlMoW1tUZXN0SW5wdXREZWxlZ2F0
ZSBhbGxvY10gaW5pdF0pOworICAgICAgICBzZWxmLl9pbnB1dERlbGVnYXRlID0gX3Rlc3REZWxl
Z2F0ZS5nZXQoKTsKKyAgICB9CiAKLUBpbXBsZW1lbnRhdGlvbiBXS1dlYlZpZXcgKEF1dG9maWxs
VGVzdEhlbHBlcnMpCisgICAgcmV0dXJuIHNlbGY7Cit9CiAKLS0gKEF1dG9maWxsQ2FuZGlkYXRl
VmlldyAqKV9wcml2YXRlVGV4dElucHV0CistIChBdXRvZmlsbENvbnRlbnRWaWV3ICopX3ByaXZh
dGVUZXh0SW5wdXQKIHsKLSAgICByZXR1cm4gKEF1dG9maWxsQ2FuZGlkYXRlVmlldyAqKVtzZWxm
IHZhbHVlRm9yS2V5OkAiX2N1cnJlbnRDb250ZW50VmlldyJdOworICAgIHJldHVybiAoQXV0b2Zp
bGxDb250ZW50VmlldyAqKVtzZWxmIHZhbHVlRm9yS2V5OkAiX2N1cnJlbnRDb250ZW50VmlldyJd
OworfQorCistIChCT09MKXRleHRJbnB1dEhhc0F1dG9maWxsQ29udGV4dAoreworICAgIFtzZWxm
IHdhaXRGb3JOZXh0UHJlc2VudGF0aW9uVXBkYXRlXTsKKyAgICBOU1VSTCAqdXJsID0gW3NlbGYu
X3ByaXZhdGVUZXh0SW5wdXQuX2F1dG9maWxsQ29udGV4dCBvYmplY3RGb3JLZXk6QCJfV2ViVmll
d1VSTCJdOworICAgIGlmICghW3VybCBpc0tpbmRPZkNsYXNzOltOU1VSTCBjbGFzc11dKQorICAg
ICAgICByZXR1cm4gTk87CisKKyAgICBFWFBFQ1RfV0tfU1RSRVEoW3NlbGYgc3RyaW5nQnlFdmFs
dWF0aW5nSmF2YVNjcmlwdDpAImRvY3VtZW50LlVSTCJdLCB1cmwuYWJzb2x1dGVTdHJpbmcpOwor
ICAgIHJldHVybiBZRVM7CiB9CiAKIEBlbmQKQEAgLTY3LDEwNyArMTA1LDkwIEBAIG5hbWVzcGFj
ZSBUZXN0V2ViS2l0QVBJIHsKIAogVEVTVChXS1dlYlZpZXdBdXRvZmlsbFRlc3RzLCBVc2VybmFt
ZUFuZFBhc3N3b3JkRmllbGQpCiB7Ci0gICAgVGVzdFdLV2ViVmlldyAqd2ViVmlldyA9IFtbVGVz
dFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDMyMCwgNTAw
KV07Ci0gICAgQXV0b2ZpbGxDYW5kaWRhdGVWaWV3ICpjb250ZW50VmlldyA9IFt3ZWJWaWV3IF9w
cml2YXRlVGV4dElucHV0XTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbQXV0b2ZpbGxU
ZXN0VmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDMyMCwgNTAwKV0p
OwogICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZzpAIjxpbnB1dCBpZD0n
dXNlcicgdHlwZT0nZW1haWwnPjxpbnB1dCBpZD0ncGFzc3dvcmQnIHR5cGU9J3Bhc3N3b3JkJz4i
XTsKICAgICBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAidXNlci5mb2N1
cygpIl07Ci0gICAgRVhQRUNUX1RSVUUoY29udGVudFZpZXcuYWNjZXB0c0F1dG9maWxsZWRMb2dp
bkNyZWRlbnRpYWxzKTsKKyAgICBFWFBFQ1RfVFJVRShbd2ViVmlldyB0ZXh0SW5wdXRIYXNBdXRv
ZmlsbENvbnRleHRdKTsKIAogICAgIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3Jp
cHQ6QCJwYXNzd29yZC5mb2N1cygpIl07Ci0gICAgRVhQRUNUX1RSVUUoY29udGVudFZpZXcuYWNj
ZXB0c0F1dG9maWxsZWRMb2dpbkNyZWRlbnRpYWxzKTsKLQotICAgIFVJS2V5Ym9hcmRMb2dpbkNy
ZWRlbnRpYWxzU3VnZ2VzdGlvbiAqY3JlZGVudGlhbFN1Z2dlc3Rpb24gPSBjcmVhdGVVSUtleWJv
YXJkTG9naW5DcmVkZW50aWFsc1N1Z2dlc3Rpb24oKTsKLSAgICBjcmVkZW50aWFsU3VnZ2VzdGlv
bi51c2VybmFtZSA9IEAiZnJlZGVyaWsiOwotICAgIGNyZWRlbnRpYWxTdWdnZXN0aW9uLnBhc3N3
b3JkID0gQCJmYW1vcyI7CisgICAgRVhQRUNUX1RSVUUoW3dlYlZpZXcgdGV4dElucHV0SGFzQXV0
b2ZpbGxDb250ZXh0XSk7CiAKLSAgICBbY29udGVudFZpZXcgaW5zZXJ0VGV4dFN1Z2dlc3Rpb246
Y3JlZGVudGlhbFN1Z2dlc3Rpb25dOworICAgIGF1dG8gY3JlZGVudGlhbFN1Z2dlc3Rpb24gPSBh
ZG9wdE5TKGNyZWF0ZVVJS2V5Ym9hcmRMb2dpbkNyZWRlbnRpYWxzU3VnZ2VzdGlvbihAImZyZWRl
cmlrIiwgQCJmYW1vcyIpKTsKKyAgICBbW3dlYlZpZXcgX3ByaXZhdGVUZXh0SW5wdXRdIGluc2Vy
dFRleHRTdWdnZXN0aW9uOmNyZWRlbnRpYWxTdWdnZXN0aW9uLmdldCgpXTsKIAotICAgIEVYUEVD
VF9XS19TVFJFUShjcmVkZW50aWFsU3VnZ2VzdGlvbi51c2VybmFtZSwgW3dlYlZpZXcgc3RyaW5n
QnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAInVzZXIudmFsdWUiXSk7Ci0gICAgRVhQRUNUX1dLX1NU
UkVRKGNyZWRlbnRpYWxTdWdnZXN0aW9uLnBhc3N3b3JkLCBbd2ViVmlldyBzdHJpbmdCeUV2YWx1
YXRpbmdKYXZhU2NyaXB0OkAicGFzc3dvcmQudmFsdWUiXSk7CisgICAgRVhQRUNUX1dLX1NUUkVR
KFtjcmVkZW50aWFsU3VnZ2VzdGlvbiB1c2VybmFtZV0sIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVh
dGluZ0phdmFTY3JpcHQ6QCJ1c2VyLnZhbHVlIl0pOworICAgIEVYUEVDVF9XS19TVFJFUShbY3Jl
ZGVudGlhbFN1Z2dlc3Rpb24gcGFzc3dvcmRdLCBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdK
YXZhU2NyaXB0OkAicGFzc3dvcmQudmFsdWUiXSk7CiAKLSAgICBbd2ViVmlldyByZWxlYXNlXTsK
KyAgICBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZG9jdW1lbnQuYWN0
aXZlRWxlbWVudC5ibHVyKCkiXTsKKyAgICBFWFBFQ1RfRkFMU0UoW3dlYlZpZXcgdGV4dElucHV0
SGFzQXV0b2ZpbGxDb250ZXh0XSk7CiB9CiAKIFRFU1QoV0tXZWJWaWV3QXV0b2ZpbGxUZXN0cywg
VXNlcm5hbWVBbmRQYXNzd29yZEZpZWxkU2VwYXJhdGVkQnlSYWRpb0J1dHRvbikKIHsKLSAgICBU
ZXN0V0tXZWJWaWV3ICp3ZWJWaWV3ID0gW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZy
YW1lOkNHUmVjdE1ha2UoMCwgMCwgMzIwLCA1MDApXTsKLSAgICBBdXRvZmlsbENhbmRpZGF0ZVZp
ZXcgKmNvbnRlbnRWaWV3ID0gW3dlYlZpZXcgX3ByaXZhdGVUZXh0SW5wdXRdOworICAgIGF1dG8g
d2ViVmlldyA9IGFkb3B0TlMoW1tBdXRvZmlsbFRlc3RWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1l
OkNHUmVjdE1ha2UoMCwgMCwgMzIwLCA1MDApXSk7CiAgICAgW3dlYlZpZXcgc3luY2hyb25vdXNs
eUxvYWRIVE1MU3RyaW5nOkAiPGlucHV0IGlkPSd1c2VyJyB0eXBlPSdlbWFpbCc+PGlucHV0IHR5
cGU9J3JhZGlvJyBuYW1lPSdyYWRpb19idXR0b24nIHZhbHVlPSdyYWRpbyc+PGlucHV0IGlkPSdw
YXNzd29yZCcgdHlwZT0ncGFzc3dvcmQnPiJdOwogICAgIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVh
dGluZ0phdmFTY3JpcHQ6QCJ1c2VyLmZvY3VzKCkiXTsKLSAgICBFWFBFQ1RfVFJVRShjb250ZW50
Vmlldy5hY2NlcHRzQXV0b2ZpbGxlZExvZ2luQ3JlZGVudGlhbHMpOworICAgIEVYUEVDVF9UUlVF
KFt3ZWJWaWV3IHRleHRJbnB1dEhhc0F1dG9maWxsQ29udGV4dF0pOwogCiAgICAgW3dlYlZpZXcg
c3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAInBhc3N3b3JkLmZvY3VzKCkiXTsKLSAgICBF
WFBFQ1RfVFJVRShjb250ZW50Vmlldy5hY2NlcHRzQXV0b2ZpbGxlZExvZ2luQ3JlZGVudGlhbHMp
OworICAgIEVYUEVDVF9UUlVFKFt3ZWJWaWV3IHRleHRJbnB1dEhhc0F1dG9maWxsQ29udGV4dF0p
OwogCi0gICAgVUlLZXlib2FyZExvZ2luQ3JlZGVudGlhbHNTdWdnZXN0aW9uICpjcmVkZW50aWFs
U3VnZ2VzdGlvbiA9IGNyZWF0ZVVJS2V5Ym9hcmRMb2dpbkNyZWRlbnRpYWxzU3VnZ2VzdGlvbigp
OwotICAgIGNyZWRlbnRpYWxTdWdnZXN0aW9uLnVzZXJuYW1lID0gQCJmcmVkZXJpayI7Ci0gICAg
Y3JlZGVudGlhbFN1Z2dlc3Rpb24ucGFzc3dvcmQgPSBAImZhbW9zIjsKKyAgICBhdXRvIGNyZWRl
bnRpYWxTdWdnZXN0aW9uID0gYWRvcHROUyhjcmVhdGVVSUtleWJvYXJkTG9naW5DcmVkZW50aWFs
c1N1Z2dlc3Rpb24oQCJmcmVkZXJpayIsIEAiZmFtb3MiKSk7CisgICAgW1t3ZWJWaWV3IF9wcml2
YXRlVGV4dElucHV0XSBpbnNlcnRUZXh0U3VnZ2VzdGlvbjpjcmVkZW50aWFsU3VnZ2VzdGlvbi5n
ZXQoKV07CiAKLSAgICBbY29udGVudFZpZXcgaW5zZXJ0VGV4dFN1Z2dlc3Rpb246Y3JlZGVudGlh
bFN1Z2dlc3Rpb25dOworICAgIEVYUEVDVF9XS19TVFJFUShbY3JlZGVudGlhbFN1Z2dlc3Rpb24g
dXNlcm5hbWVdLCBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAidXNlci52
YWx1ZSJdKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoW2NyZWRlbnRpYWxTdWdnZXN0aW9uIHBhc3N3
b3JkXSwgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAInBhc3N3b3JkLnZh
bHVlIl0pOwogCi0gICAgRVhQRUNUX1dLX1NUUkVRKGNyZWRlbnRpYWxTdWdnZXN0aW9uLnVzZXJu
YW1lLCBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAidXNlci52YWx1ZSJd
KTsKLSAgICBFWFBFQ1RfV0tfU1RSRVEoY3JlZGVudGlhbFN1Z2dlc3Rpb24ucGFzc3dvcmQsIFt3
ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJwYXNzd29yZC52YWx1ZSJdKTsK
LQotICAgIFt3ZWJWaWV3IHJlbGVhc2VdOworICAgIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGlu
Z0phdmFTY3JpcHQ6QCJkb2N1bWVudC5hY3RpdmVFbGVtZW50LmJsdXIoKSJdOworICAgIEVYUEVD
VF9GQUxTRShbd2ViVmlldyB0ZXh0SW5wdXRIYXNBdXRvZmlsbENvbnRleHRdKTsKIH0KIAogVEVT
VChXS1dlYlZpZXdBdXRvZmlsbFRlc3RzLCBUd29UZXh0RmllbGRzKQogewotICAgIFRlc3RXS1dl
YlZpZXcgKndlYlZpZXcgPSBbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dS
ZWN0TWFrZSgwLCAwLCAzMjAsIDUwMCldOwotICAgIEF1dG9maWxsQ2FuZGlkYXRlVmlldyAqY29u
dGVudFZpZXcgPSBbd2ViVmlldyBfcHJpdmF0ZVRleHRJbnB1dF07CisgICAgYXV0byB3ZWJWaWV3
ID0gYWRvcHROUyhbW0F1dG9maWxsVGVzdFZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0
TWFrZSgwLCAwLCAzMjAsIDUwMCldKTsKICAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZEhU
TUxTdHJpbmc6QCI8aW5wdXQgaWQ9J3RleHQxJyB0eXBlPSdlbWFpbCc+PGlucHV0IGlkPSd0ZXh0
MicgdHlwZT0ndGV4dCc+Il07CiAgICAgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNj
cmlwdDpAInRleHQxLmZvY3VzKCkiXTsKLSAgICBFWFBFQ1RfRkFMU0UoY29udGVudFZpZXcuYWNj
ZXB0c0F1dG9maWxsZWRMb2dpbkNyZWRlbnRpYWxzKTsKKyAgICBFWFBFQ1RfRkFMU0UoW3dlYlZp
ZXcgdGV4dElucHV0SGFzQXV0b2ZpbGxDb250ZXh0XSk7CiAKICAgICBbd2ViVmlldyBzdHJpbmdC
eUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAidGV4dDIuZm9jdXMoKSJdOwotICAgIEVYUEVDVF9GQUxT
RShjb250ZW50Vmlldy5hY2NlcHRzQXV0b2ZpbGxlZExvZ2luQ3JlZGVudGlhbHMpOworICAgIEVY
UEVDVF9GQUxTRShbd2ViVmlldyB0ZXh0SW5wdXRIYXNBdXRvZmlsbENvbnRleHRdKTsKIH0KIAog
VEVTVChXS1dlYlZpZXdBdXRvZmlsbFRlc3RzLCBTdGFuZGFsb25lUGFzc3dvcmRGaWVsZCkKIHsK
LSAgICBUZXN0V0tXZWJWaWV3ICp3ZWJWaWV3ID0gW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0
V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgMzIwLCA1MDApXTsKLSAgICBBdXRvZmlsbENhbmRp
ZGF0ZVZpZXcgKmNvbnRlbnRWaWV3ID0gW3dlYlZpZXcgX3ByaXZhdGVUZXh0SW5wdXRdOworICAg
IGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tBdXRvZmlsbFRlc3RWaWV3IGFsbG9jXSBpbml0V2l0
aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgMzIwLCA1MDApXSk7CiAgICAgW3dlYlZpZXcgc3luY2hy
b25vdXNseUxvYWRIVE1MU3RyaW5nOkAiPGlucHV0IGlkPSdwYXNzd29yZCcgdHlwZT0ncGFzc3dv
cmQnPiJdOwogICAgIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJwYXNz
d29yZC5mb2N1cygpIl07Ci0gICAgRVhQRUNUX1RSVUUoY29udGVudFZpZXcuYWNjZXB0c0F1dG9m
aWxsZWRMb2dpbkNyZWRlbnRpYWxzKTsKLQotICAgIFVJS2V5Ym9hcmRMb2dpbkNyZWRlbnRpYWxz
U3VnZ2VzdGlvbiAqY3JlZGVudGlhbFN1Z2dlc3Rpb24gPSBjcmVhdGVVSUtleWJvYXJkTG9naW5D
cmVkZW50aWFsc1N1Z2dlc3Rpb24oKTsKLSAgICBjcmVkZW50aWFsU3VnZ2VzdGlvbi51c2VybmFt
ZSA9IEAiZnJlZGVyaWsiOwotICAgIGNyZWRlbnRpYWxTdWdnZXN0aW9uLnBhc3N3b3JkID0gQCJm
YW1vcyI7CisgICAgRVhQRUNUX1RSVUUoW3dlYlZpZXcgdGV4dElucHV0SGFzQXV0b2ZpbGxDb250
ZXh0XSk7CiAKLSAgICBbY29udGVudFZpZXcgaW5zZXJ0VGV4dFN1Z2dlc3Rpb246Y3JlZGVudGlh
bFN1Z2dlc3Rpb25dOworICAgIGF1dG8gY3JlZGVudGlhbFN1Z2dlc3Rpb24gPSBhZG9wdE5TKGNy
ZWF0ZVVJS2V5Ym9hcmRMb2dpbkNyZWRlbnRpYWxzU3VnZ2VzdGlvbihAImZyZWRlcmlrIiwgQCJm
YW1vcyIpKTsKKyAgICBbW3dlYlZpZXcgX3ByaXZhdGVUZXh0SW5wdXRdIGluc2VydFRleHRTdWdn
ZXN0aW9uOmNyZWRlbnRpYWxTdWdnZXN0aW9uLmdldCgpXTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEo
W2NyZWRlbnRpYWxTdWdnZXN0aW9uIHBhc3N3b3JkXSwgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0
aW5nSmF2YVNjcmlwdDpAInBhc3N3b3JkLnZhbHVlIl0pOwogCi0gICAgRVhQRUNUX1dLX1NUUkVR
KGNyZWRlbnRpYWxTdWdnZXN0aW9uLnBhc3N3b3JkLCBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRp
bmdKYXZhU2NyaXB0OkAicGFzc3dvcmQudmFsdWUiXSk7Ci0KLSAgICBbd2ViVmlldyByZWxlYXNl
XTsKKyAgICBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZG9jdW1lbnQu
YWN0aXZlRWxlbWVudC5ibHVyKCkiXTsKKyAgICBFWFBFQ1RfRkFMU0UoW3dlYlZpZXcgdGV4dElu
cHV0SGFzQXV0b2ZpbGxDb250ZXh0XSk7CiB9CiAKIFRFU1QoV0tXZWJWaWV3QXV0b2ZpbGxUZXN0
cywgU3RhbmRhbG9uZVRleHRGaWVsZCkKIHsKLSAgICBUZXN0V0tXZWJWaWV3ICp3ZWJWaWV3ID0g
W1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgMzIw
LCA1MDApXTsKLSAgICBBdXRvZmlsbENhbmRpZGF0ZVZpZXcgKmNvbnRlbnRWaWV3ID0gW3dlYlZp
ZXcgX3ByaXZhdGVUZXh0SW5wdXRdOworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tBdXRv
ZmlsbFRlc3RWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgMzIwLCA1
MDApXSk7CiAgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nOkAiPGlucHV0
IGlkPSd0ZXh0ZmllbGQnIHR5cGU9J3RleHQnPiJdOwogICAgIFt3ZWJWaWV3IHN0cmluZ0J5RXZh
bHVhdGluZ0phdmFTY3JpcHQ6QCJ0ZXh0ZmllbGQuZm9jdXMoKSJdOwotICAgIEVYUEVDVF9GQUxT
RShjb250ZW50Vmlldy5hY2NlcHRzQXV0b2ZpbGxlZExvZ2luQ3JlZGVudGlhbHMpOwotCi0gICAg
W3dlYlZpZXcgcmVsZWFzZV07CisgICAgRVhQRUNUX0ZBTFNFKFt3ZWJWaWV3IHRleHRJbnB1dEhh
c0F1dG9maWxsQ29udGV4dF0pOwogfQogCiBURVNUKFdLV2ViVmlld0F1dG9maWxsVGVzdHMsIEFj
Y291bnRDcmVhdGlvblBhZ2UpCiB7Ci0gICAgVGVzdFdLV2ViVmlldyAqd2ViVmlldyA9IFtbVGVz
dFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDMyMCwgNTAw
KV07Ci0gICAgQXV0b2ZpbGxDYW5kaWRhdGVWaWV3ICpjb250ZW50VmlldyA9IFt3ZWJWaWV3IF9w
cml2YXRlVGV4dElucHV0XTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbQXV0b2ZpbGxU
ZXN0VmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDMyMCwgNTAwKV0p
OwogICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZzpAIjxpbnB1dCBpZD0n
dXNlcicgdHlwZT0nZW1haWwnPjxpbnB1dCBpZD0ncGFzc3dvcmQnIHR5cGU9J3Bhc3N3b3JkJz48
aW5wdXQgaWQ9J2NvbmZpcm1fcGFzc3dvcmQnIHR5cGU9J3Bhc3N3b3JkJz4iXTsKICAgICBbd2Vi
VmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAidXNlci5mb2N1cygpIl07Ci0gICAg
RVhQRUNUX0ZBTFNFKGNvbnRlbnRWaWV3LmFjY2VwdHNBdXRvZmlsbGVkTG9naW5DcmVkZW50aWFs
cyk7CisgICAgRVhQRUNUX0ZBTFNFKFt3ZWJWaWV3IHRleHRJbnB1dEhhc0F1dG9maWxsQ29udGV4
dF0pOwogCiAgICAgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAInBhc3N3
b3JkLmZvY3VzKCkiXTsKLSAgICBFWFBFQ1RfRkFMU0UoY29udGVudFZpZXcuYWNjZXB0c0F1dG9m
aWxsZWRMb2dpbkNyZWRlbnRpYWxzKTsKKyAgICBFWFBFQ1RfRkFMU0UoW3dlYlZpZXcgdGV4dElu
cHV0SGFzQXV0b2ZpbGxDb250ZXh0XSk7CiAKICAgICBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRp
bmdKYXZhU2NyaXB0OkAiY29uZmlybV9wYXNzd29yZC5mb2N1cygpIl07Ci0gICAgRVhQRUNUX0ZB
TFNFKGNvbnRlbnRWaWV3LmFjY2VwdHNBdXRvZmlsbGVkTG9naW5DcmVkZW50aWFscyk7Ci0KLSAg
ICBbd2ViVmlldyByZWxlYXNlXTsKKyAgICBFWFBFQ1RfRkFMU0UoW3dlYlZpZXcgdGV4dElucHV0
SGFzQXV0b2ZpbGxDb250ZXh0XSk7CiB9CiAKIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9pb3MvVUlLaXRTUEkuaCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvaW9zL1VJS2l0U1BJLmgK
aW5kZXggYThjNGU0Y2IzMWNmMWY2MzdiZDk1ZDk2ZGNiYWE3ZTA1NGU4ODE4MC4uOTA3YTFkZTgx
MzZkNmU3MTk3N2FhODllMzU3M2E1MzU4NjM5ZDdkZCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9pb3MvVUlLaXRTUEkuaAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9VSUtp
dFNQSS5oCkBAIC0yNywyNCArMjcsMTcgQEAKIAogI2ltcG9ydCA8VUlLaXQvVUlUZXh0SW5wdXRU
cmFpdHMuaD4KIAotI2lmIF9fSVBIT05FX09TX1ZFUlNJT05fTUFYX0FMTE9XRUQgPj0gMTEwMDAw
CiBAcHJvdG9jb2wgVUlEcmFnU2Vzc2lvbjsKIEBjbGFzcyBVSURyYWdJbnRlcmFjdGlvbjsKIEBj
bGFzcyBVSURyYWdJdGVtOwotI2VuZGlmCiAKLSNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKSAm
JiBfX0lQSE9ORV9PU19WRVJTSU9OX01BWF9BTExPV0VEID49IDExMDAwMAorI2lmIFVTRShBUFBM
RV9JTlRFUk5BTF9TREspCiAKICNpbXBvcnQgPFVJS2l0L1VJQXBwbGljYXRpb25fUHJpdmF0ZS5o
PgogI2ltcG9ydCA8VUlLaXQvVUlEcmFnSW50ZXJhY3Rpb25fUHJpdmF0ZS5oPgogI2ltcG9ydCA8
VUlLaXQvVUlUZXh0SW5wdXRUcmFpdHNfUHJpdmF0ZS5oPgogI2ltcG9ydCA8VUlLaXQvVUlUZXh0
U3VnZ2VzdGlvbi5oPgogCi0KLUBwcm90b2NvbCBVSVRleHRJbnB1dFRyYWl0c19Qcml2YXRlX1N0
YWdpbmdfMzQ1ODM2MjggPE5TT2JqZWN0LCBVSVRleHRJbnB1dFRyYWl0cz4KLUBwcm9wZXJ0eSAo
bm9uYXRvbWljLCByZWFkb25seSkgQk9PTCBhY2NlcHRzQXV0b2ZpbGxlZExvZ2luQ3JlZGVudGlh
bHM7Ci1AZW5kCi0KICNlbHNlCiAKIFdURl9FWFRFUk5fQ19CRUdJTgpAQCAtNTMsMjMgKzQ2LDIz
IEBAIHZvaWQgVUlBcHBsaWNhdGlvbkluaXRpYWxpemUodm9pZCk7CiAKIFdURl9FWFRFUk5fQ19F
TkQKIAotI2lmIF9fSVBIT05FX09TX1ZFUlNJT05fTUFYX0FMTE9XRUQgPj0gMTEwMDAwCiBAcHJv
dG9jb2wgVUlEcmFnSW50ZXJhY3Rpb25EZWxlZ2F0ZV9Gb3JXZWJLaXRPbmx5IDxVSURyYWdJbnRl
cmFjdGlvbkRlbGVnYXRlPgogQG9wdGlvbmFsCiAtICh2b2lkKV9kcmFnSW50ZXJhY3Rpb246KFVJ
RHJhZ0ludGVyYWN0aW9uICopaW50ZXJhY3Rpb24gcHJlcGFyZUZvclNlc3Npb246KGlkPFVJRHJh
Z1Nlc3Npb24+KXNlc3Npb24gY29tcGxldGlvbjoodm9pZCheKSh2b2lkKSljb21wbGV0aW9uOwog
QGVuZAotI2VuZGlmIC8vIF9fSVBIT05FX09TX1ZFUlNJT05fTUFYX0FMTE9XRUQgPj0gMTEwMDAw
CiAKIEBwcm90b2NvbCBVSVRleHRJbnB1dFRyYWl0c19Qcml2YXRlIDxOU09iamVjdCwgVUlUZXh0
SW5wdXRUcmFpdHM+Ci1AcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIEJPT0wgYWNjZXB0
c0F1dG9maWxsZWRMb2dpbkNyZWRlbnRpYWxzOworLSAoTlNEaWN0aW9uYXJ5ICopX2F1dG9maWxs
Q29udGV4dDsKIEBlbmQKIAogI2VuZGlmCiAKLSNpZiBfX0lQSE9ORV9PU19WRVJTSU9OX01BWF9B
TExPV0VEID49IDExMDAwMAorQHByb3RvY29sIFVJVGV4dElucHV0VHJhaXRzX1ByaXZhdGVfU3Rh
Z2luZ18zNDU4MzYyOCA8TlNPYmplY3QsIFVJVGV4dElucHV0VHJhaXRzPgorLSAoTlNEaWN0aW9u
YXJ5ICopX2F1dG9maWxsQ29udGV4dDsKK0BlbmQKKwogQHByb3RvY29sIFVJRHJhZ0ludGVyYWN0
aW9uRGVsZWdhdGVfUHJvcG9zZWRfU1BJXzMzMTQ2ODAzIDxVSURyYWdJbnRlcmFjdGlvbkRlbGVn
YXRlPgogLSAodm9pZClfZHJhZ0ludGVyYWN0aW9uOihVSURyYWdJbnRlcmFjdGlvbiAqKWludGVy
YWN0aW9uIGl0ZW1zRm9yQWRkaW5nVG9TZXNzaW9uOihpZCA8VUlEcmFnU2Vzc2lvbj4pc2Vzc2lv
biB3aXRoVG91Y2hBdFBvaW50OihDR1BvaW50KXBvaW50IGNvbXBsZXRpb246KHZvaWQoXikoTlNB
cnJheTxVSURyYWdJdGVtICo+ICopKWNvbXBsZXRpb247CiBAZW5kCi0jZW5kaWYgLy8gX19JUEhP
TkVfT1NfVkVSU0lPTl9NQVhfQUxMT1dFRCA+PSAxMTAwMDAKIAogI2VuZGlmIC8vIFBMQVRGT1JN
KElPUykK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>322903</attachid>
            <date>2017-10-05 13:23:54 -0700</date>
            <delta_ts>2017-10-05 15:55:15 -0700</delta_ts>
            <desc>More API test fixes</desc>
            <filename>bug-177917-20171005132353.patch</filename>
            <type>text/plain</type>
            <size>28508</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIyODg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGM1OGI3ZTQ3OTIyNmQ3NjBj
MTYxNmFmMjkyZWJjYWRkOGI3N2FjNGYuLmE5MDk4ZTRjZGNjMjFiNTA2N2JlMjQyMGUyYjdjYTE4
Nzc0ZTJjMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDkgQEAKKzIwMTctMTAtMDUgIFdlbnNvbiBI
c2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgW2lPU10gVHdlYWsgc3Vw
cG9ydCBmb3IgY2xhc3NpZnlpbmcgZm9ybSBjb250cm9scyAoZm9sbG93dXAgdG8gcjIyMjQ4NykK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NzkxNwor
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzQ4MjAxMjI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBmb2xsb3dzIHVwIHdpdGggPGh0
dHA6Ly90cmFjLndlYmtpdC5vcmcvcjIyMjQ4Nz4uIEl0IGNvbWJpbmVzIHRoZSBmdW5jdGlvbmFs
aXR5IG9mIHR3byBTUEkgaG9va3MKKyAgICAgICAgaW1wbGVtZW50ZWQgb24gV0tDb250ZW50Vmll
dyBpbnRvIGEgc2luZ2xlIG1ldGhvZCB0aGF0IHZlbmRzIGEgc2luZ2xlIGNvbnRleHQsIGFuZCBh
ZGRpdGlvbmFsbHkgYWRkcmVzc2VzIGFuCisgICAgICAgIGlzc3VlIHdpdGggdGhlIG9yaWdpbmFs
IGltcGxlbWVudGF0aW9uLCB3aGVyZWluIHNvbWUgY2FjaGVkIHN0YXRlIG9uIFdlYlBhZ2VQcm94
eSBpcyBzZXQgdXBvbiBzdGFydGluZyBub2RlCisgICAgICAgIGFzc2lzdGFuY2UsIGJ1dCBpcyBu
ZXZlciB1bnNldCB3aGVuIHN0b3BwaW5nIG5vZGUgYXNzaXN0YW5jZSwgbm9yIHNldCBhbnl3aGVy
ZSBlbHNlLiBTZWUgcGVyLW1ldGhvZCBjb21tZW50cyBmb3IKKyAgICAgICAgbW9yZSBkZXRhaWwu
CisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisKKyAgICAgICAgUmVtb3Zl
IGNsYXNzIG1lbWJlcnMgbV9hY2NlcHRzQXV0b2ZpbGxlZExvZ2luQ3JlZGVudGlhbHMgYW5kIG1f
cmVwcmVzZW50aW5nUGFnZVVSTCBmcm9tIFdlYlBhZ2VQcm94eS4gVGhpcyBzdGF0ZQorICAgICAg
ICBpcyByZXRyaWV2ZWQgZnJvbSB0aGUgQXNzaXN0ZWROb2RlSW5mb3JtYXRpb24gc3RydWN0IHdo
ZW4gc3RhcnRpbmcgbm9kZSBhc3Npc3RhbmNlLCBidXQgaXMgbmV2ZXIgcmVzZXQgYW55d2hlcmUK
KyAgICAgICAgZWxzZS4gSW5zdGVhZCBvZiBpbnRyb2R1Y2luZyBuZXcgbWVtYmVycyB0byByZW1l
bWJlciB0aGlzIHN0YXRlLCB3ZSBjYW4ganVzdCB1c2UgdGhlIFdLQ29udGVudFZpZXcncyBjdXJy
ZW50CisgICAgICAgIGFzc2lzdGVkIG5vZGUgaW5mb3JtYXRpb24uCisKKyAgICAgICAgVGhpcyBh
bHNvIG1lYW5zIHRoYXQgcHJvZ3JhbW1hdGljYWxseSBmb2N1c2luZyBmb3JtcyAod2l0aG91dCB1
c2VyIGdlc3R1cmUpIHdpbGwgbm8gbG9uZ2VyIGNhdXNlIFdLQ29udGVudFZpZXcKKyAgICAgICAg
dG8gYWNjZXB0IGF1dG9maWxsZWQgbG9naW4gY3JlZGVudGlhbHMsIHNpbmNlIHdlIGJhaWwgb3V0
IG9mIG5vZGUgYXNzaXN0YW5jZSBhbmQgZG9uJ3QgYmVnaW4gYW4gaW5wdXQgc2Vzc2lvbi4KKwor
ICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlldy5tbToKKyAgICAgICAgKC1bV0tD
b250ZW50VmlldyBhY2NlcHRzQXV0b2ZpbGxlZExvZ2luQ3JlZGVudGlhbHNdKTogRGVsZXRlZC4K
KyAgICAgICAgKC1bV0tDb250ZW50VmlldyByZXByZXNlbnRpbmdQYWdlVVJMXSk6IERlbGV0ZWQu
CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW06Cisg
ICAgICAgICgtW1dLQ29udGVudFZpZXcgX2F1dG9maWxsQ29udGV4dF0pOgorCisgICAgICAgIE1l
cmdlIGZ1bmN0aW9uYWxpdHkgb2YgdGhlIHByZXZpb3VzIHR3byBTUEkgaG9va3MsIHN1Y2ggdGhh
dCAtX2F1dG9maWxsQ29udGV4dCB3aWxsIHJldHVybiBhIG5vbi1udWxsIGRpY3Rpb25hcnkKKyAg
ICAgICAgY29udGFpbmluZyB0aGUgVVJMIG9mIHRoZSBmb2N1c2VkIGVsZW1lbnQncyBkb2N1bWVu
dCBpZiBhbmQgb25seSBpZiBXS0NvbnRlbnRWaWV3IGFjY2VwdHMgYXV0b2ZpbGxlZCBsb2dpbgor
ICAgICAgICBjcmVkZW50aWFscywgYW5kIHRoZXJlIGV4aXN0cyBhIHJlcHJlc2VudGluZyBwYWdl
IFVSTC4KKworICAgICAgICBXaGVuIHRoZSBwYWdlIHN0b3BzIGFzc2lzdGluZyB0aGUgZm9jdXNl
ZCBub2RlLCB3ZSBzZXQgdGhlIEFzc2lzdGVkTm9kZUluZm9ybWF0aW9uJ3MgZWxlbWVudCB0eXBl
IHRvIE5vbmUsIHNvIHdlCisgICAgICAgIGFkZGl0aW9uYWxseSBiYWlsIGFuZCByZXR1cm4gbmls
IGlmIHRoZSBlbGVtZW50IHR5cGUgaXMgTm9uZS4gQXMgYW4gYXNpZGUsIGl0IHNlZW1zIGEgbW9y
ZSByZWFzb25hYmxlIGFwcHJvYWNoIHRvCisgICAgICAgIHJlc2V0dGluZyBzdGF0ZSB1cG9uIHN0
b3BwaW5nIG5vZGUgYXNzaXN0YW5jZSBpcyB0byBqdXN0IGNvbXBsZXRlbHkgcmVzZXQgX2Fzc2lz
dGVkTm9kZUluZm9ybWF0aW9uIHRvIGl0cyBpbml0aWFsCisgICAgICAgIHZhbHVlLCBpLmUuIHZp
YSBfYXNzaXN0ZWROb2RlSW5mb3JtYXRpb24gPSB7IH0uIEl0J3Mgbm90IGNsZWFyIHdoZXRoZXIg
dGhlcmUgYXJlIGJlaGF2aW9ycyByZWx5aW5nIG9uIHRoZSBmYWN0CisgICAgICAgIHRoYXQgdGhl
IGFsbCBidXQgdGhlIGVsZW1lbnQgdHlwZSBpbiB0aGUgY29udGVudCB2aWV3J3MgYXNzaXN0ZWQg
bm9kZSBpbmZvcm1hdGlvbiBjb3VsZCBiZSBzdGFsZSwgYnV0IHRoaXMgc2VlbXMKKyAgICAgICAg
dG8gYmUgd29ydGggc29tZSBpbnZlc3RpZ2F0aW9uLgorCisgICAgICAgICogVUlQcm9jZXNzL2lv
cy9XZWJQYWdlUHJveHlJT1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c3Rh
cnRBc3Npc3RpbmdOb2RlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjphY2NlcHRz
QXV0b2ZpbGxlZExvZ2luQ3JlZGVudGlhbHMpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OnJlcHJlc2VudGluZ1BhZ2VVUkwpOiBEZWxldGVkLgorCiAyMDE3LTEwLTA0
ICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIHVu
dXNlZCB2YXJpYWJsZXMgaW4gbGFtYmRhcyBmb3IgbmV0d29yayBwcm9jZXNzIGNhY2hlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggNzNhNTY5YjUwNWZmMmRiNTc5ZTU4NTc3OGRlNTU3
ZmY1YjIzNDMxOS4uN2U3MGIwYmI4ODk5ZDhjYmQwNTRiZTg4YTI0ZWU4N2UyOTJhNjc0ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDE3LTEwLTA1ICBX
ZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIFR3
ZWFrIHN1cHBvcnQgZm9yIGNsYXNzaWZ5aW5nIGZvcm0gY29udHJvbHMgKGZvbGxvd3VwIHRvIHIy
MjI0ODcpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
Nzc5MTcKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzM0ODIwMTIyPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudCBfYXV0b2ZpbGxDb250
ZXh0IGluIGxlZ2FjeSBXZWJLaXQsIGFuZCByZW1vdmUgdGhlIHR3byBwcmV2aW91cyBTUEkgaG9v
a3MuCisKKyAgICAgICAgKiBET00vRE9NSFRNTElucHV0RWxlbWVudC5tbToKKyAgICAgICAgKC1b
RE9NSFRNTElucHV0RWxlbWVudCBfYXV0b2ZpbGxDb250ZXh0XSk6CisgICAgICAgICgtW0RPTUhU
TUxJbnB1dEVsZW1lbnQgYWNjZXB0c0F1dG9maWxsZWRMb2dpbkNyZWRlbnRpYWxzXSk6IERlbGV0
ZWQuCisgICAgICAgICgtW0RPTUhUTUxJbnB1dEVsZW1lbnQgcmVwcmVzZW50aW5nUGFnZVVSTF0p
OiBEZWxldGVkLgorCiAyMDE3LTA5LTI5ICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUu
Y29tPgogCiAgICAgICAgIEZvbGxvdy11cCB0byBodHRwczovL3RyYWMud2Via2l0Lm9yZy9yMjIy
MjM5IHRvIGZpeCBjcmFzaGVzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApp
bmRleCA3MDU4YzhlMTEwYmEzZmI3MzNiNjllM2NkNTExZGNkZmY1YmMxYjFkLi43MDVlZmJmYWNm
ZTgzNDJlNTU4ZThkNzc1YTUwMzhjNWYyYWEzZjIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuaApAQCAtNTU5LDggKzU1OSw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldElz
U2Nyb2xsaW5nT3Jab29taW5nKGJvb2wpOwogICAgIHZvaWQgcmVxdWVzdFJlY3RzRm9yR3JhbnVs
YXJpdHlXaXRoU2VsZWN0aW9uT2Zmc2V0KFdlYkNvcmU6OlRleHRHcmFudWxhcml0eSwgdWludDMy
X3Qgb2Zmc2V0LCBXVEY6OkZ1bmN0aW9uPHZvaWQoY29uc3QgVmVjdG9yPFdlYkNvcmU6OlNlbGVj
dGlvblJlY3Q+JiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOwogICAgIHZvaWQgcmVxdWVzdFJl
Y3RzQXRTZWxlY3Rpb25PZmZzZXRXaXRoVGV4dChpbnQzMl90IG9mZnNldCwgY29uc3QgU3RyaW5n
JiwgV1RGOjpGdW5jdGlvbjx2b2lkKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpTZWxlY3Rpb25SZWN0
PiYsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKLSAgICBib29sIGFjY2VwdHNBdXRvZmlsbGVk
TG9naW5DcmVkZW50aWFscygpOwotICAgIFdlYkNvcmU6OlVSTCByZXByZXNlbnRpbmdQYWdlVVJM
KCk7CiAgICAgdm9pZCBhdXRvZmlsbExvZ2luQ3JlZGVudGlhbHMoY29uc3QgU3RyaW5nJiB1c2Vy
bmFtZSwgY29uc3QgU3RyaW5nJiBwYXNzd29yZCk7CiAjaWYgRU5BQkxFKERBVEFfSU5URVJBQ1RJ
T04pCiAgICAgdm9pZCBkaWRQZXJmb3JtRGF0YUludGVyYWN0aW9uQ29udHJvbGxlck9wZXJhdGlv
bihib29sIGhhbmRsZWQpOwpAQCAtMTk5Niw4ICsxOTk0LDYgQEAgcHJpdmF0ZToKICAgICBib29s
IG1faGFzRGVmZXJyZWRTdGFydEFzc2lzdGluZ05vZGUgeyBmYWxzZSB9OwogICAgIHN0ZDo6dW5p
cXVlX3B0cjxOb2RlQXNzaXN0YW5jZUFyZ3VtZW50cz4gbV9kZWZlcnJlZE5vZGVBc3Npc3RhbmNl
QXJndW1lbnRzOwogICAgIGJvb2wgbV9mb3JjZUFsd2F5c1VzZXJTY2FsYWJsZSB7IGZhbHNlIH07
Ci0gICAgYm9vbCBtX2FjY2VwdHNBdXRvZmlsbGVkTG9naW5DcmVkZW50aWFscyB7IGZhbHNlIH07
Ci0gICAgV2ViQ29yZTo6VVJMIG1fcmVwcmVzZW50aW5nUGFnZVVSTDsKICNlbmRpZgogCiAjaWYg
RU5BQkxFKFBPSU5URVJfTE9DSykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9XS0NvbnRlbnRWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29u
dGVudFZpZXcubW0KaW5kZXggNjg1ZTM5NDY0NWY3N2I4MDA4ZDc4OGFkOTU1OTJkNjRjYjllYmEx
ZC4uZDYxY2VkZmMxNGUyNmVjNDgzZTBlOTBjMTg2MjdmMjM0MWU5NTBjMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcubW0KKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcubW0KQEAgLTI1OCwxNiArMjU4LDYg
QEAgLSAoV2ViUGFnZVByb3h5KilwYWdlCiAgICAgcmV0dXJuIF9wYWdlLmdldCgpOwogfQogCi0t
IChCT09MKWFjY2VwdHNBdXRvZmlsbGVkTG9naW5DcmVkZW50aWFscwotewotICAgIHJldHVybiBf
cGFnZS0+YWNjZXB0c0F1dG9maWxsZWRMb2dpbkNyZWRlbnRpYWxzKCk7Ci19Ci0KLS0gKE5TVVJM
ICopcmVwcmVzZW50aW5nUGFnZVVSTAotewotICAgIHJldHVybiBfcGFnZS0+cmVwcmVzZW50aW5n
UGFnZVVSTCgpOwotfQotCiAtICh2b2lkKXdpbGxNb3ZlVG9XaW5kb3c6KFVJV2luZG93ICopbmV3
V2luZG93CiB7CiAgICAgTlNOb3RpZmljYXRpb25DZW50ZXIgKmRlZmF1bHRDZW50ZXIgPSBbTlNO
b3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQppbmRleCBmYTlh
ODEyOGFkYzBhMDFjMDdlOGE5NGUyYmU4OGMyYmMwZGI0ZTBhLi4wYmEzMDg4YTg0N2VlZTZmMjRi
YWIyOTQ5MjdmYzEyYWIxMmFkYjE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KQEAgLTQ1MTgsNiArNDUxOCwx
OCBAQCAtIChOU0FycmF5PFVJRHJhZ0l0ZW0gKj4gKilfaXRlbXNGb3JCZWdpbm5pbmdPckFkZGlu
Z1RvU2Vzc2lvbldpdGhSZWdpc3RyYXRpb25MaQogICAgIHJldHVybiBkcmFnSXRlbXM7CiB9CiAK
Ky0gKE5TRGljdGlvbmFyeSAqKV9hdXRvZmlsbENvbnRleHQKK3sKKyAgICBpZiAoX2Fzc2lzdGVk
Tm9kZUluZm9ybWF0aW9uLmVsZW1lbnRUeXBlID09IElucHV0VHlwZTo6Tm9uZSB8fCAhX2Fzc2lz
dGVkTm9kZUluZm9ybWF0aW9uLmFjY2VwdHNBdXRvZmlsbGVkTG9naW5DcmVkZW50aWFscykKKyAg
ICAgICAgcmV0dXJuIG5pbDsKKworICAgIE5TVVJMICpwbGF0Zm9ybVVSTCA9IF9hc3Npc3RlZE5v
ZGVJbmZvcm1hdGlvbi5yZXByZXNlbnRpbmdQYWdlVVJMOworICAgIGlmICghcGxhdGZvcm1VUkwp
CisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICByZXR1cm4gQHsgQCJfV2ViVmlld1VSTCIgOiBw
bGF0Zm9ybVVSTCB9OworfQorCiAjcHJhZ21hIG1hcmsgLSBVSURyYWdJbnRlcmFjdGlvbkRlbGVn
YXRlCiAKIC0gKEJPT0wpX2RyYWdJbnRlcmFjdGlvbjooVUlEcmFnSW50ZXJhY3Rpb24gKilpbnRl
cmFjdGlvbiBzaG91bGREZWxheUNvbXBldGluZ0dlc3R1cmVSZWNvZ25pemVyOihVSUdlc3R1cmVS
ZWNvZ25pemVyICopY29tcGV0aW5nR2VzdHVyZVJlY29nbml6ZXIKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0gYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCmluZGV4IGQzZTY3ZDdlMzUzOTI4MTVh
MTM1MWFjYjFjNDZkMzE2ZTQ3YmE1YTQuLmFhYjA3YTdlMzFiN2VkZDdlN2MzZTdjMzE1ZDUxYjdl
MDU3MTM4ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdl
UHJveHlJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94
eUlPUy5tbQpAQCAtODkxLDggKzg5MSw2IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRHZXRUYXBI
aWdobGlnaHRHZW9tZXRyaWVzKHVpbnQ2NF90IHJlcXVlc3RJRCwgY29uc3QgV2ViQ29yCiAKIHZv
aWQgV2ViUGFnZVByb3h5OjpzdGFydEFzc2lzdGluZ05vZGUoY29uc3QgQXNzaXN0ZWROb2RlSW5m
b3JtYXRpb24mIGluZm9ybWF0aW9uLCBib29sIHVzZXJJc0ludGVyYWN0aW5nLCBib29sIGJsdXJQ
cmV2aW91c05vZGUsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKIHsKLSAgICBtX2FjY2VwdHNB
dXRvZmlsbGVkTG9naW5DcmVkZW50aWFscyA9IGluZm9ybWF0aW9uLmFjY2VwdHNBdXRvZmlsbGVk
TG9naW5DcmVkZW50aWFsczsKLSAgICBtX3JlcHJlc2VudGluZ1BhZ2VVUkwgPSBpbmZvcm1hdGlv
bi5yZXByZXNlbnRpbmdQYWdlVVJMOwogICAgIEFQSTo6T2JqZWN0KiB1c2VyRGF0YU9iamVjdCA9
IHByb2Nlc3MoKS50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgpKS5n
ZXQoKTsKICAgICBpZiAobV9lZGl0b3JTdGF0ZS5pc01pc3NpbmdQb3N0TGF5b3V0RGF0YSkgewog
ICAgICAgICBtX2RlZmVycmVkTm9kZUFzc2lzdGFuY2VBcmd1bWVudHMgPSBzdGQ6Om1ha2VfdW5p
cXVlPE5vZGVBc3Npc3RhbmNlQXJndW1lbnRzPihOb2RlQXNzaXN0YW5jZUFyZ3VtZW50cyB7IGlu
Zm9ybWF0aW9uLCB1c2VySXNJbnRlcmFjdGluZywgYmx1clByZXZpb3VzTm9kZSwgdXNlckRhdGFP
YmplY3QgfSk7CkBAIC05MTIsMTYgKzkxMCw2IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzdG9wQXNz
aXN0aW5nTm9kZSgpCiAgICAgbV9wYWdlQ2xpZW50LnN0b3BBc3Npc3RpbmdOb2RlKCk7CiB9CiAK
LWJvb2wgV2ViUGFnZVByb3h5OjphY2NlcHRzQXV0b2ZpbGxlZExvZ2luQ3JlZGVudGlhbHMoKQot
ewotICAgIHJldHVybiBtX2FjY2VwdHNBdXRvZmlsbGVkTG9naW5DcmVkZW50aWFsczsKLX0KLQot
V2ViQ29yZTo6VVJMIFdlYlBhZ2VQcm94eTo6cmVwcmVzZW50aW5nUGFnZVVSTCgpCi17Ci0gICAg
cmV0dXJuIG1fcmVwcmVzZW50aW5nUGFnZVVSTDsKLX0KLQogdm9pZCBXZWJQYWdlUHJveHk6OmF1
dG9maWxsTG9naW5DcmVkZW50aWFscyhjb25zdCBTdHJpbmcmIHVzZXJuYW1lLCBjb25zdCBTdHJp
bmcmIHBhc3N3b3JkKQogewogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
QXV0b2ZpbGxMb2dpbkNyZWRlbnRpYWxzKHVzZXJuYW1lLCBwYXNzd29yZCksIG1fcGFnZUlEKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MSW5wdXRFbGVt
ZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxJbnB1dEVsZW1lbnQu
bW0KaW5kZXggOGJkOGNjNzc3ZWU2ZjZhZGI5M2RjYzRlMDM4ZGNiMTdjNjM2YmNlZC4uOGMyMDQz
MzcyMWZjOTI1NDQ0OTdhYzdlYzQzN2M2OWVhMDQ2Y2EwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxJbnB1dEVsZW1lbnQubW0KKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxJbnB1dEVsZW1lbnQubW0KQEAgLTM0LDcgKzM0LDcg
QEAKICNpbXBvcnQgIkRPTVByaXZhdGUuaCIKICNpbXBvcnQgIkV4Y2VwdGlvbkhhbmRsZXJzLmgi
CiAKLS8vIEZJWE1FIDxyYWRhcjozNDU4MzYyOD46IFNpbXBseWZ5IHRoaXMgb25jZSB0aGUgVUlL
aXQgd29yayBpcyBhdmFpbGFibGUgaW4gdGhlIGJ1aWxkLgorLy8gRklYTUU6IFNpbXBsaWZ5IHRo
aXMgb25jZSA8cmRhcjovL3Byb2JsZW0vMzQ1ODM2Mjg+IGlzIGF2YWlsYWJsZSBpbiB0aGUgYnVp
bGQuCiAjaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykgJiYgVEFSR0VUX09TX0lQSE9ORQogI2lm
IF9faGFzX2luY2x1ZGUoPFVJS2l0L1VJS2V5Ym9hcmRMb2dpbkNyZWRlbnRpYWxzU3VnZ2VzdGlv
bi5oPikKICNpbXBvcnQgPFVJS2l0L1VJS2V5Ym9hcmRMb2dpbkNyZWRlbnRpYWxzU3VnZ2VzdGlv
bi5oPgpAQCAtNjgzLDE2ICs2ODMsMTcgQEAgLSAodm9pZClzZXRWYWx1ZUZvclVzZXI6KE5TU3Ry
aW5nICopaW5WYWx1ZQogICAgIElNUEwtPnNldFZhbHVlRm9yVXNlcihpblZhbHVlKTsKIH0KIAot
LSAoQk9PTClhY2NlcHRzQXV0b2ZpbGxlZExvZ2luQ3JlZGVudGlhbHMKKy0gKE5TRGljdGlvbmFy
eSAqKV9hdXRvZmlsbENvbnRleHQKIHsKICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3Rh
dGUgc3RhdGU7Ci0gICAgcmV0dXJuICEhV2ViQ29yZTo6QXV0b2ZpbGxFbGVtZW50czo6Y29tcHV0
ZUF1dG9maWxsRWxlbWVudHMoKklNUEwpOwotfQorICAgIGlmICghV2ViQ29yZTo6QXV0b2ZpbGxF
bGVtZW50czo6Y29tcHV0ZUF1dG9maWxsRWxlbWVudHMoKklNUEwpKQorICAgICAgICByZXR1cm4g
bmlsOwogCi0tIChOU1VSTCAqKXJlcHJlc2VudGluZ1BhZ2VVUkwKLXsKLSAgICBXZWJDb3JlOjpK
U01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgcmV0dXJuIFtOU1VSTCBVUkxXaXRoU3Ry
aW5nOnNlbGYub3duZXJEb2N1bWVudC5VUkxdOworICAgIE5TVVJMICpkb2N1bWVudFVSTCA9IFtO
U1VSTCBVUkxXaXRoU3RyaW5nOnNlbGYub3duZXJEb2N1bWVudC5VUkxdOworICAgIGlmICghZG9j
dW1lbnRVUkwpCisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICByZXR1cm4gQHsgQCJfV2ViVmll
d1VSTCIgOiBkb2N1bWVudFVSTCB9OwogfQogCiAjaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykg
JiYgVEFSR0VUX09TX0lQSE9ORQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMv
Q2hhbmdlTG9nCmluZGV4IGMwZjdkZjk0Y2Q1Nzk0NzQzOGE3OTRlYjYxNjRmY2FjMmEwNWQ3Yjgu
LjdkMGExZTQxNTViMGM2N2U3M2NiNzQxMTIwMjE5MDM2MmI1ZTI1ZDcgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NSBAQAorMjAx
Ny0xMC0wNSAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAg
ICBbaU9TXSBUd2VhayBzdXBwb3J0IGZvciBjbGFzc2lmeWluZyBmb3JtIGNvbnRyb2xzIChmb2xs
b3d1cCB0byByMjIyNDg3KQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTc3OTE3CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zNDgyMDEyMj4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNaW5vciBjbGVhbnVw
IGFyb3VuZCBhdXRvZmlsbCBBUEkgdGVzdHMgYWRkZWQgaW4gcjIyMjQ4Ny4gQWRkaXRpb25hbGx5
LCBhdWdtZW50cyBzb21lIG9mIHRoZXNlIEFQSSB0ZXN0cyB0bworICAgICAgICB2ZXJpZnkgdGhh
dCBhZnRlciBibHVycmluZyB0aGUgZm9jdXNlZCBlbGVtZW50LCB0aGUgY29udGVudCB2aWV3IG5v
IGxvbmdlciBhY2NlcHRzIGF1dG9maWxsIGNyZWRlbnRpYWxzIChzZWUKKyAgICAgICAgV2ViS2l0
IENoYW5nZUxvZyBmb3IgbW9yZSBkZXRhaWxzKS4gQWxzbyBhdWdtZW50cyB0ZXN0cyB0byB2ZXJp
ZnkgdGhhdCB0aGUgVVJMIGluIHRoZSBhdXRvZmlsbCBjb250ZXh0IG1hdGNoZXMKKyAgICAgICAg
dGhlIGRvY3VtZW50IFVSTC4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvaW9zL1dL
V2ViVmlld0F1dG9maWxsVGVzdHMubW06CisKKyAgICAgICAgUmVtb3ZlIHRoZSBVU0UoQVBQTEVf
SU5URVJOQUxfU0RLKSBndWFyZCBmb3IgdGhlc2UgQVBJIHRlc3RzLgorCisgICAgICAgIChuZXdV
SUtleWJvYXJkTG9naW5DcmVkZW50aWFsc1N1Z2dlc3Rpb24pOgorCisgICAgICAgIEFkZCBhIHN0
dWIgaW1wbGVtZW50YXRpb24gb2YgVUlLZXlib2FyZExvZ2luQ3JlZGVudGlhbHNTdWdnZXN0aW9u
LiBUaGlzIGFsbG93cworICAgICAgICBbVUlLZXlib2FyZExvZ2luQ3JlZGVudGlhbHNTdWdnZXN0
aW9uIG5ld10gdG8gcmV0dXJuIGEgbm9ubnVsbCBvYmplY3QsIHdoaWNoIGFsbG93cyB0aGVzZSBB
UEkgdGVzdHMgdG8gdmVyaWZ5CisgICAgICAgIHRoYXQgdGhlIGNyZWRlbnRpYWwgZmlsbGluZyBj
b2RlcGF0aCB3b3JrcyBhcyBpbnRlbmRlZCB3aXRob3V0IGFueSBhZGRpdGlvbmFsIFVJS2l0IGNo
YW5nZXMuIEN1cnJlbnRseSwgdGVzdHMKKyAgICAgICAgZm9yIHRoZSB2YWx1ZSBvZiB1c2VybmFt
ZSBhbmQgcGFzc3dvcmQgZmllbGRzIGFyZSBwYXNzaW5nIGV2ZW4gdGhvdWdoIHRoZSBmaWVsZHMg
YXJlIG5vdCBiZWluZyBwb3B1bGF0ZWQgYmVjYXVzZQorICAgICAgICB0aGUgZXhwZWN0ZWQgc3Ry
aW5nIHZhbHVlcyBhcmUgbnVsbCwgYW5kIHRoZSBvYnNlcnZlZCB2YWx1ZSBpcyBhbiBlbXB0eSBz
dHJpbmcuIFdlIGFkZCBhbiBhZGRpdGlvbmFsIGNoZWNrIGhlcmUKKyAgICAgICAgdG8gZW5zdXJl
IHRoYXQgdGhlc2UgdGVzdHMgZG9uJ3QgcGFzcyB1bmxlc3MgdGhlIFVJS2V5Ym9hcmRMb2dpbkNy
ZWRlbnRpYWxzU3VnZ2VzdGlvbiB3YXMgYWN0dWFsbHkgY3JlYXRlZC4KKworICAgICAgICAoLVtU
ZXN0SW5wdXREZWxlZ2F0ZSBfd2ViVmlldzpmb2N1c1Nob3VsZFN0YXJ0SW5wdXRTZXNzaW9uOl0p
OgorICAgICAgICAoLVtBdXRvZmlsbFRlc3RWaWV3IGluaXRXaXRoRnJhbWU6XSk6CisgICAgICAg
ICgtW0F1dG9maWxsVGVzdFZpZXcgX2F1dG9maWxsSW5wdXRWaWV3XSk6CisgICAgICAgICgtW0F1
dG9maWxsVGVzdFZpZXcgdGV4dElucHV0SGFzQXV0b2ZpbGxDb250ZXh0XSk6CisgICAgICAgIChU
ZXN0V2ViS2l0QVBJOjpURVNUKToKKworICAgICAgICBBZGQgYW4gYWRkaXRpb25hbCBBUEkgdGVz
dCB0byB2ZXJpZnkgdGhhdCBwcm9ncmFtbWF0aWMgd2l0aG91dCB1c2VyIGludGVyYWN0aW9uIChh
bmQgYWxzbyB3aXRob3V0IHRlc3RpbmcKKyAgICAgICAgb3ZlcnJpZGVzKSBkb2VzIG5vdCBhY3Rp
dmF0ZSBhdXRvZmlsbC4KKworICAgICAgICAoY3JlYXRlVUlLZXlib2FyZExvZ2luQ3JlZGVudGlh
bHNTdWdnZXN0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV0tXZWJWaWV3IF9wcml2YXRlVGV4
dElucHV0XSk6IERlbGV0ZWQuCisgICAgICAgICogVGVzdFdlYktpdEFQSS9pb3MvVUlLaXRTUEku
aDoKKworICAgICAgICBNaW5vciBnYXJkZW5pbmcgdG8gcmVtb3ZlIGlPUyB2ZXJzaW9uID49IDEx
IGd1YXJkcyB0aGF0IGFyZSBub3cgdW5uZWNlc3NhcnkuIEFkZGl0aW9uYWxseSwgYWRkIHNvbWUg
bW9yZSBwcml2YXRlCisgICAgICAgIGhlYWRlciBpbXBvcnRzICh3aXRoIGNvcnJlc3BvbmRpbmcg
aW50ZXJmYWNlIGRlZmluaXRpb25zIGZvciBidWlsZGluZyBhbmQgcnVubmluZyB3aXRoIHRoZSBw
dWJsaWMgU0RLKS4KKwogMjAxNy0xMC0wNCAgSkYgQmFzdGllbiAgPGpmYmFzdGllbkBhcHBsZS5j
b20+CiAKICAgICAgICAgV1RGOiBVcGRhdGUgc3RkOjpleHBlY3RlZCB0byBtYXRjaCBjdXJyZW50
IHByb3Bvc2FsCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9XS1dl
YlZpZXdBdXRvZmlsbFRlc3RzLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9pb3MvV0tX
ZWJWaWV3QXV0b2ZpbGxUZXN0cy5tbQppbmRleCBlMTEyODVlYzQ5NTY5NDE1MWUxMWY1N2NmYTFh
NTNkYzYyN2VlMGI2Li4wZWQwM2EwZDA1ZTZjMzRmZjA1NDBkMTBmMjFiN2FmOWJiYzk2ZjE1IDEw
MDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9XS1dlYlZpZXdBdXRvZmls
bFRlc3RzLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvaW9zL1dLV2ViVmlld0F1
dG9maWxsVGVzdHMubW0KQEAgLTI1LDQwICsyNSw4NCBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAKLSNpZiBXS19BUElfRU5BQkxFRCAmJiBQTEFURk9STShJT1MpICYmIFVTRShBUFBMRV9JTlRF
Uk5BTF9TREspCisjaWYgV0tfQVBJX0VOQUJMRUQgJiYgUExBVEZPUk0oSU9TKQogCiAjaW1wb3J0
ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgogI2ltcG9ydCAiVGVzdFdLV2ViVmlldy5oIgogI2ltcG9y
dCAiVUlLaXRTUEkuaCIKKyNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdQcml2YXRlLmg+CisjaW1w
b3J0IDxXZWJLaXQvX1dLRm9jdXNlZEVsZW1lbnRJbmZvLmg+CisjaW1wb3J0IDxXZWJLaXQvX1dL
SW5wdXREZWxlZ2F0ZS5oPgorI2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+CisKKyNpZiAhX19oYXNf
aW5jbHVkZSg8VUlLaXQvVUlLZXlib2FyZExvZ2luQ3JlZGVudGlhbHNTdWdnZXN0aW9uLmg+KQor
Ly8gRklYTUU6IFRoaXMgY2FuIGJlIHNhZmVseSByZW1vdmVkIG9uY2UgPHJkYXI6Ly9wcm9ibGVt
LzM0NTgzNjI4PiBsYW5kcyBpbiB0aGUgU0RLLgorQGltcGxlbWVudGF0aW9uIFVJS2V5Ym9hcmRM
b2dpbkNyZWRlbnRpYWxzU3VnZ2VzdGlvbgorQGVuZAorI2VuZGlmCiAKLSNpbXBvcnQgPFVJS2l0
L1VJVGV4dElucHV0VHJhaXRzX1ByaXZhdGUuaD4KLSNpbXBvcnQgPFVJS2l0L1VJVGV4dElucHV0
X1ByaXZhdGUuaD4KLQotLy8gRklYTUUgMzQ1ODM2Mjg6IFNpbXBseWZ5IHRoaXMgb25jZSB0aGUg
VUlLaXQgd29yayBpcyBhdmFpbGFibGUgaW4gdGhlIGJ1aWxkLgotI2lmIF9faGFzX2luY2x1ZGUo
PFVJS2l0L1VJS2V5Ym9hcmRMb2dpbkNyZWRlbnRpYWxzU3VnZ2VzdGlvbi5oPikKLSNpbXBvcnQg
PFVJS2l0L1VJS2V5Ym9hcmRMb2dpbkNyZWRlbnRpYWxzU3VnZ2VzdGlvbi5oPgotI2Vsc2UKLSNp
bXBvcnQgPFVJS2l0L1VJVGV4dFN1Z2dlc3Rpb24uaD4KLUBpbnRlcmZhY2UgVUlLZXlib2FyZExv
Z2luQ3JlZGVudGlhbHNTdWdnZXN0aW9uIDogVUlUZXh0U3VnZ2VzdGlvbgorc3RhdGljIFVJS2V5
Ym9hcmRMb2dpbkNyZWRlbnRpYWxzU3VnZ2VzdGlvbiAqbmV3VUlLZXlib2FyZExvZ2luQ3JlZGVu
dGlhbHNTdWdnZXN0aW9uKE5TU3RyaW5nICp1c2VybmFtZSwgTlNTdHJpbmcgKnBhc3N3b3JkKQor
eworICAgIFVJS2V5Ym9hcmRMb2dpbkNyZWRlbnRpYWxzU3VnZ2VzdGlvbiAqc3VnZ2VzdGlvbiA9
IFtVSUtleWJvYXJkTG9naW5DcmVkZW50aWFsc1N1Z2dlc3Rpb24gbmV3XTsKKyAgICBzdWdnZXN0
aW9uLnVzZXJuYW1lID0gdXNlcm5hbWU7CisgICAgc3VnZ2VzdGlvbi5wYXNzd29yZCA9IHBhc3N3
b3JkOworICAgIHJldHVybiBzdWdnZXN0aW9uOworfQogCi1AcHJvcGVydHkgKG5vbmF0b21pYywg
YXNzaWduKSBOU1N0cmluZyAqdXNlcm5hbWU7Ci1AcHJvcGVydHkgKG5vbmF0b21pYywgYXNzaWdu
KSBOU1N0cmluZyAqcGFzc3dvcmQ7Cit0eXBlZGVmIFVJVmlldyA8VUlUZXh0SW5wdXRUcmFpdHNf
UHJpdmF0ZV9Qcm9wb3NlZF9TUElfMzQ1ODM2Mjg+IEF1dG9maWxsSW5wdXRWaWV3OwogCitAaW50
ZXJmYWNlIFRlc3RJbnB1dERlbGVnYXRlIDogTlNPYmplY3QgPF9XS0lucHV0RGVsZWdhdGU+CitA
cHJvcGVydHkgKG5vbmF0b21pYykgQk9PTCBpbnB1dFNlc3Npb25SZXF1aXJlc1VzZXJJbnRlcmFj
dGlvbjsKIEBlbmQKLSNlbmRpZgogCi1zdGF0aWMgVUlLZXlib2FyZExvZ2luQ3JlZGVudGlhbHNT
dWdnZXN0aW9uICpjcmVhdGVVSUtleWJvYXJkTG9naW5DcmVkZW50aWFsc1N1Z2dlc3Rpb24oKQor
QGltcGxlbWVudGF0aW9uIFRlc3RJbnB1dERlbGVnYXRlCisKKy0gKGluc3RhbmNldHlwZSlpbml0
CiB7Ci0gICAgcmV0dXJuIFtbTlNDbGFzc0Zyb21TdHJpbmcoQCJVSUtleWJvYXJkTG9naW5DcmVk
ZW50aWFsc1N1Z2dlc3Rpb24iKSBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICBpZiAoc2VsZiA9IFtz
dXBlciBpbml0XSkKKyAgICAgICAgX2lucHV0U2Vzc2lvblJlcXVpcmVzVXNlckludGVyYWN0aW9u
ID0gTk87CisKKyAgICByZXR1cm4gc2VsZjsKIH0KIAotdHlwZWRlZiBVSVZpZXcgPFVJVGV4dElu
cHV0UHJpdmF0ZSwgVUlUZXh0SW5wdXRUcmFpdHNfUHJpdmF0ZSwgVUlUZXh0SW5wdXRUcmFpdHNf
UHJpdmF0ZV9TdGFnaW5nXzM0NTgzNjI4PiAgQXV0b2ZpbGxDYW5kaWRhdGVWaWV3OworLSAoQk9P
TClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBmb2N1c1Nob3VsZFN0YXJ0SW5wdXRTZXNz
aW9uOihpZCA8X1dLRm9jdXNlZEVsZW1lbnRJbmZvPilpbmZvCit7CisgICAgcmV0dXJuICFzZWxm
LmlucHV0U2Vzc2lvblJlcXVpcmVzVXNlckludGVyYWN0aW9uIHx8IGluZm8udXNlckluaXRpYXRl
ZDsKK30KKworQGVuZAorCitAaW50ZXJmYWNlIEF1dG9maWxsVGVzdFZpZXcgOiBUZXN0V0tXZWJW
aWV3CitAZW5kCiAKLUBpbXBsZW1lbnRhdGlvbiBXS1dlYlZpZXcgKEF1dG9maWxsVGVzdEhlbHBl
cnMpCitAaW1wbGVtZW50YXRpb24gQXV0b2ZpbGxUZXN0VmlldyB7CisgICAgUmV0YWluUHRyPFRl
c3RJbnB1dERlbGVnYXRlPiBfdGVzdERlbGVnYXRlOworfQogCi0tIChBdXRvZmlsbENhbmRpZGF0
ZVZpZXcgKilfcHJpdmF0ZVRleHRJbnB1dAorLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRnJhbWU6
KENHUmVjdClmcmFtZQogewotICAgIHJldHVybiAoQXV0b2ZpbGxDYW5kaWRhdGVWaWV3ICopW3Nl
bGYgdmFsdWVGb3JLZXk6QCJfY3VycmVudENvbnRlbnRWaWV3Il07CisgICAgaWYgKCEoc2VsZiA9
IFtzdXBlciBpbml0V2l0aEZyYW1lOmZyYW1lXSkpCisgICAgICAgIHJldHVybiBuaWw7CisKKyAg
ICBfdGVzdERlbGVnYXRlID0gYWRvcHROUyhbW1Rlc3RJbnB1dERlbGVnYXRlIGFsbG9jXSBpbml0
XSk7CisgICAgc2VsZi5faW5wdXREZWxlZ2F0ZSA9IF90ZXN0RGVsZWdhdGUuZ2V0KCk7CisgICAg
cmV0dXJuIHNlbGY7Cit9CisKKy0gKEF1dG9maWxsSW5wdXRWaWV3ICopX2F1dG9maWxsSW5wdXRW
aWV3Cit7CisgICAgcmV0dXJuIChBdXRvZmlsbElucHV0VmlldyAqKXNlbGYudGV4dElucHV0Q29u
dGVudFZpZXc7Cit9CisKKy0gKEJPT0wpdGV4dElucHV0SGFzQXV0b2ZpbGxDb250ZXh0Cit7Cisg
ICAgW3NlbGYgd2FpdEZvck5leHRQcmVzZW50YXRpb25VcGRhdGVdOworICAgIE5TVVJMICp1cmwg
PSBbc2VsZi5fYXV0b2ZpbGxJbnB1dFZpZXcuX2F1dG9maWxsQ29udGV4dCBvYmplY3RGb3JLZXk6
QCJfV2ViVmlld1VSTCJdOworICAgIGlmICghW3VybCBpc0tpbmRPZkNsYXNzOltOU1VSTCBjbGFz
c11dKQorICAgICAgICByZXR1cm4gTk87CisKKyAgICBFWFBFQ1RfV0tfU1RSRVEoW3NlbGYgc3Ry
aW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImRvY3VtZW50LlVSTCJdLCB1cmwuYWJzb2x1dGVT
dHJpbmcpOworICAgIHJldHVybiBZRVM7CiB9CiAKIEBlbmQKQEAgLTY3LDExMCArMTExLDEwMiBA
QCBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiAKIFRFU1QoV0tXZWJWaWV3QXV0b2ZpbGxUZXN0
cywgVXNlcm5hbWVBbmRQYXNzd29yZEZpZWxkKQogewotICAgIFRlc3RXS1dlYlZpZXcgKndlYlZp
ZXcgPSBbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAw
LCAzMjAsIDUwMCldOwotICAgIEF1dG9maWxsQ2FuZGlkYXRlVmlldyAqY29udGVudFZpZXcgPSBb
d2ViVmlldyBfcHJpdmF0ZVRleHRJbnB1dF07CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhb
W0F1dG9maWxsVGVzdFZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCAz
MjAsIDUwMCldKTsKICAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZEhUTUxTdHJpbmc6QCI8
aW5wdXQgaWQ9J3VzZXInIHR5cGU9J2VtYWlsJz48aW5wdXQgaWQ9J3Bhc3N3b3JkJyB0eXBlPSdw
YXNzd29yZCc+Il07CiAgICAgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpA
InVzZXIuZm9jdXMoKSJdOwotICAgIEVYUEVDVF9UUlVFKGNvbnRlbnRWaWV3LmFjY2VwdHNBdXRv
ZmlsbGVkTG9naW5DcmVkZW50aWFscyk7CisgICAgRVhQRUNUX1RSVUUoW3dlYlZpZXcgdGV4dElu
cHV0SGFzQXV0b2ZpbGxDb250ZXh0XSk7CiAKICAgICBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRp
bmdKYXZhU2NyaXB0OkAicGFzc3dvcmQuZm9jdXMoKSJdOwotICAgIEVYUEVDVF9UUlVFKGNvbnRl
bnRWaWV3LmFjY2VwdHNBdXRvZmlsbGVkTG9naW5DcmVkZW50aWFscyk7CisgICAgRVhQRUNUX1RS
VUUoW3dlYlZpZXcgdGV4dElucHV0SGFzQXV0b2ZpbGxDb250ZXh0XSk7CiAKLSAgICBVSUtleWJv
YXJkTG9naW5DcmVkZW50aWFsc1N1Z2dlc3Rpb24gKmNyZWRlbnRpYWxTdWdnZXN0aW9uID0gY3Jl
YXRlVUlLZXlib2FyZExvZ2luQ3JlZGVudGlhbHNTdWdnZXN0aW9uKCk7Ci0gICAgY3JlZGVudGlh
bFN1Z2dlc3Rpb24udXNlcm5hbWUgPSBAImZyZWRlcmlrIjsKLSAgICBjcmVkZW50aWFsU3VnZ2Vz
dGlvbi5wYXNzd29yZCA9IEAiZmFtb3MiOworICAgIGF1dG8gY3JlZGVudGlhbFN1Z2dlc3Rpb24g
PSBhZG9wdE5TKG5ld1VJS2V5Ym9hcmRMb2dpbkNyZWRlbnRpYWxzU3VnZ2VzdGlvbihAImZyZWRl
cmlrIiwgQCJmYW1vcyIpKTsKKyAgICBbW3dlYlZpZXcgX2F1dG9maWxsSW5wdXRWaWV3XSBpbnNl
cnRUZXh0U3VnZ2VzdGlvbjpjcmVkZW50aWFsU3VnZ2VzdGlvbi5nZXQoKV07CiAKLSAgICBbY29u
dGVudFZpZXcgaW5zZXJ0VGV4dFN1Z2dlc3Rpb246Y3JlZGVudGlhbFN1Z2dlc3Rpb25dOworICAg
IEVYUEVDVF9XS19TVFJFUSgiZmFtb3MiLCBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZh
U2NyaXB0OkAicGFzc3dvcmQudmFsdWUiXSk7CiAKLSAgICBFWFBFQ1RfV0tfU1RSRVEoY3JlZGVu
dGlhbFN1Z2dlc3Rpb24udXNlcm5hbWUsIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFT
Y3JpcHQ6QCJ1c2VyLnZhbHVlIl0pOwotICAgIEVYUEVDVF9XS19TVFJFUShjcmVkZW50aWFsU3Vn
Z2VzdGlvbi5wYXNzd29yZCwgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpA
InBhc3N3b3JkLnZhbHVlIl0pOwotCi0gICAgW3dlYlZpZXcgcmVsZWFzZV07CisgICAgW3dlYlZp
ZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImRvY3VtZW50LmFjdGl2ZUVsZW1lbnQu
Ymx1cigpIl07CisgICAgRVhQRUNUX0ZBTFNFKFt3ZWJWaWV3IHRleHRJbnB1dEhhc0F1dG9maWxs
Q29udGV4dF0pOwogfQogCiBURVNUKFdLV2ViVmlld0F1dG9maWxsVGVzdHMsIFVzZXJuYW1lQW5k
UGFzc3dvcmRGaWVsZFNlcGFyYXRlZEJ5UmFkaW9CdXR0b24pCiB7Ci0gICAgVGVzdFdLV2ViVmll
dyAqd2ViVmlldyA9IFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RN
YWtlKDAsIDAsIDMyMCwgNTAwKV07Ci0gICAgQXV0b2ZpbGxDYW5kaWRhdGVWaWV3ICpjb250ZW50
VmlldyA9IFt3ZWJWaWV3IF9wcml2YXRlVGV4dElucHV0XTsKKyAgICBhdXRvIHdlYlZpZXcgPSBh
ZG9wdE5TKFtbQXV0b2ZpbGxUZXN0VmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtl
KDAsIDAsIDMyMCwgNTAwKV0pOwogICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0
cmluZzpAIjxpbnB1dCBpZD0ndXNlcicgdHlwZT0nZW1haWwnPjxpbnB1dCB0eXBlPSdyYWRpbycg
bmFtZT0ncmFkaW9fYnV0dG9uJyB2YWx1ZT0ncmFkaW8nPjxpbnB1dCBpZD0ncGFzc3dvcmQnIHR5
cGU9J3Bhc3N3b3JkJz4iXTsKICAgICBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2Ny
aXB0OkAidXNlci5mb2N1cygpIl07Ci0gICAgRVhQRUNUX1RSVUUoY29udGVudFZpZXcuYWNjZXB0
c0F1dG9maWxsZWRMb2dpbkNyZWRlbnRpYWxzKTsKKyAgICBFWFBFQ1RfVFJVRShbd2ViVmlldyB0
ZXh0SW5wdXRIYXNBdXRvZmlsbENvbnRleHRdKTsKIAogICAgIFt3ZWJWaWV3IHN0cmluZ0J5RXZh
bHVhdGluZ0phdmFTY3JpcHQ6QCJwYXNzd29yZC5mb2N1cygpIl07Ci0gICAgRVhQRUNUX1RSVUUo
Y29udGVudFZpZXcuYWNjZXB0c0F1dG9maWxsZWRMb2dpbkNyZWRlbnRpYWxzKTsKLQotICAgIFVJ
S2V5Ym9hcmRMb2dpbkNyZWRlbnRpYWxzU3VnZ2VzdGlvbiAqY3JlZGVudGlhbFN1Z2dlc3Rpb24g
PSBjcmVhdGVVSUtleWJvYXJkTG9naW5DcmVkZW50aWFsc1N1Z2dlc3Rpb24oKTsKLSAgICBjcmVk
ZW50aWFsU3VnZ2VzdGlvbi51c2VybmFtZSA9IEAiZnJlZGVyaWsiOwotICAgIGNyZWRlbnRpYWxT
dWdnZXN0aW9uLnBhc3N3b3JkID0gQCJmYW1vcyI7CisgICAgRVhQRUNUX1RSVUUoW3dlYlZpZXcg
dGV4dElucHV0SGFzQXV0b2ZpbGxDb250ZXh0XSk7CiAKLSAgICBbY29udGVudFZpZXcgaW5zZXJ0
VGV4dFN1Z2dlc3Rpb246Y3JlZGVudGlhbFN1Z2dlc3Rpb25dOworICAgIGF1dG8gY3JlZGVudGlh
bFN1Z2dlc3Rpb24gPSBhZG9wdE5TKG5ld1VJS2V5Ym9hcmRMb2dpbkNyZWRlbnRpYWxzU3VnZ2Vz
dGlvbihAImZyZWRlcmlrIiwgQCJmYW1vcyIpKTsKKyAgICBbW3dlYlZpZXcgX2F1dG9maWxsSW5w
dXRWaWV3XSBpbnNlcnRUZXh0U3VnZ2VzdGlvbjpjcmVkZW50aWFsU3VnZ2VzdGlvbi5nZXQoKV07
CiAKLSAgICBFWFBFQ1RfV0tfU1RSRVEoY3JlZGVudGlhbFN1Z2dlc3Rpb24udXNlcm5hbWUsIFt3
ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJ1c2VyLnZhbHVlIl0pOwotICAg
IEVYUEVDVF9XS19TVFJFUShjcmVkZW50aWFsU3VnZ2VzdGlvbi5wYXNzd29yZCwgW3dlYlZpZXcg
c3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAInBhc3N3b3JkLnZhbHVlIl0pOworICAgIEVY
UEVDVF9XS19TVFJFUSgiZnJlZGVyaWsiLCBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZh
U2NyaXB0OkAidXNlci52YWx1ZSJdKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoImZhbW9zIiwgW3dl
YlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAInBhc3N3b3JkLnZhbHVlIl0pOwog
Ci0gICAgW3dlYlZpZXcgcmVsZWFzZV07CisgICAgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5n
SmF2YVNjcmlwdDpAImRvY3VtZW50LmFjdGl2ZUVsZW1lbnQuYmx1cigpIl07CisgICAgRVhQRUNU
X0ZBTFNFKFt3ZWJWaWV3IHRleHRJbnB1dEhhc0F1dG9maWxsQ29udGV4dF0pOwogfQogCiBURVNU
KFdLV2ViVmlld0F1dG9maWxsVGVzdHMsIFR3b1RleHRGaWVsZHMpCiB7Ci0gICAgVGVzdFdLV2Vi
VmlldyAqd2ViVmlldyA9IFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1Jl
Y3RNYWtlKDAsIDAsIDMyMCwgNTAwKV07Ci0gICAgQXV0b2ZpbGxDYW5kaWRhdGVWaWV3ICpjb250
ZW50VmlldyA9IFt3ZWJWaWV3IF9wcml2YXRlVGV4dElucHV0XTsKKyAgICBhdXRvIHdlYlZpZXcg
PSBhZG9wdE5TKFtbQXV0b2ZpbGxUZXN0VmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RN
YWtlKDAsIDAsIDMyMCwgNTAwKV0pOwogICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkSFRN
TFN0cmluZzpAIjxpbnB1dCBpZD0ndGV4dDEnIHR5cGU9J2VtYWlsJz48aW5wdXQgaWQ9J3RleHQy
JyB0eXBlPSd0ZXh0Jz4iXTsKICAgICBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2Ny
aXB0OkAidGV4dDEuZm9jdXMoKSJdOwotICAgIEVYUEVDVF9GQUxTRShjb250ZW50Vmlldy5hY2Nl
cHRzQXV0b2ZpbGxlZExvZ2luQ3JlZGVudGlhbHMpOworICAgIEVYUEVDVF9GQUxTRShbd2ViVmll
dyB0ZXh0SW5wdXRIYXNBdXRvZmlsbENvbnRleHRdKTsKIAogICAgIFt3ZWJWaWV3IHN0cmluZ0J5
RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJ0ZXh0Mi5mb2N1cygpIl07Ci0gICAgRVhQRUNUX0ZBTFNF
KGNvbnRlbnRWaWV3LmFjY2VwdHNBdXRvZmlsbGVkTG9naW5DcmVkZW50aWFscyk7CisgICAgRVhQ
RUNUX0ZBTFNFKFt3ZWJWaWV3IHRleHRJbnB1dEhhc0F1dG9maWxsQ29udGV4dF0pOwogfQogCiBU
RVNUKFdLV2ViVmlld0F1dG9maWxsVGVzdHMsIFN0YW5kYWxvbmVQYXNzd29yZEZpZWxkKQogewot
ICAgIFRlc3RXS1dlYlZpZXcgKndlYlZpZXcgPSBbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRX
aXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCAzMjAsIDUwMCldOwotICAgIEF1dG9maWxsQ2FuZGlk
YXRlVmlldyAqY29udGVudFZpZXcgPSBbd2ViVmlldyBfcHJpdmF0ZVRleHRJbnB1dF07CisgICAg
YXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW0F1dG9maWxsVGVzdFZpZXcgYWxsb2NdIGluaXRXaXRo
RnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCAzMjAsIDUwMCldKTsKICAgICBbd2ViVmlldyBzeW5jaHJv
bm91c2x5TG9hZEhUTUxTdHJpbmc6QCI8aW5wdXQgaWQ9J3Bhc3N3b3JkJyB0eXBlPSdwYXNzd29y
ZCc+Il07CiAgICAgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAInBhc3N3
b3JkLmZvY3VzKCkiXTsKLSAgICBFWFBFQ1RfVFJVRShjb250ZW50Vmlldy5hY2NlcHRzQXV0b2Zp
bGxlZExvZ2luQ3JlZGVudGlhbHMpOworICAgIEVYUEVDVF9UUlVFKFt3ZWJWaWV3IHRleHRJbnB1
dEhhc0F1dG9maWxsQ29udGV4dF0pOwogCi0gICAgVUlLZXlib2FyZExvZ2luQ3JlZGVudGlhbHNT
dWdnZXN0aW9uICpjcmVkZW50aWFsU3VnZ2VzdGlvbiA9IGNyZWF0ZVVJS2V5Ym9hcmRMb2dpbkNy
ZWRlbnRpYWxzU3VnZ2VzdGlvbigpOwotICAgIGNyZWRlbnRpYWxTdWdnZXN0aW9uLnVzZXJuYW1l
ID0gQCJmcmVkZXJpayI7Ci0gICAgY3JlZGVudGlhbFN1Z2dlc3Rpb24ucGFzc3dvcmQgPSBAImZh
bW9zIjsKKyAgICBhdXRvIGNyZWRlbnRpYWxTdWdnZXN0aW9uID0gYWRvcHROUyhuZXdVSUtleWJv
YXJkTG9naW5DcmVkZW50aWFsc1N1Z2dlc3Rpb24oQCJmcmVkZXJpayIsIEAiZmFtb3MiKSk7Cisg
ICAgW1t3ZWJWaWV3IF9hdXRvZmlsbElucHV0Vmlld10gaW5zZXJ0VGV4dFN1Z2dlc3Rpb246Y3Jl
ZGVudGlhbFN1Z2dlc3Rpb24uZ2V0KCldOwogCi0gICAgW2NvbnRlbnRWaWV3IGluc2VydFRleHRT
dWdnZXN0aW9uOmNyZWRlbnRpYWxTdWdnZXN0aW9uXTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoImZh
bW9zIiwgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAInBhc3N3b3JkLnZh
bHVlIl0pOwogCi0gICAgRVhQRUNUX1dLX1NUUkVRKGNyZWRlbnRpYWxTdWdnZXN0aW9uLnBhc3N3
b3JkLCBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAicGFzc3dvcmQudmFs
dWUiXSk7Ci0KLSAgICBbd2ViVmlldyByZWxlYXNlXTsKKyAgICBbd2ViVmlldyBzdHJpbmdCeUV2
YWx1YXRpbmdKYXZhU2NyaXB0OkAiZG9jdW1lbnQuYWN0aXZlRWxlbWVudC5ibHVyKCkiXTsKKyAg
ICBFWFBFQ1RfRkFMU0UoW3dlYlZpZXcgdGV4dElucHV0SGFzQXV0b2ZpbGxDb250ZXh0XSk7CiB9
CiAKIFRFU1QoV0tXZWJWaWV3QXV0b2ZpbGxUZXN0cywgU3RhbmRhbG9uZVRleHRGaWVsZCkKIHsK
LSAgICBUZXN0V0tXZWJWaWV3ICp3ZWJWaWV3ID0gW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0
V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgMzIwLCA1MDApXTsKLSAgICBBdXRvZmlsbENhbmRp
ZGF0ZVZpZXcgKmNvbnRlbnRWaWV3ID0gW3dlYlZpZXcgX3ByaXZhdGVUZXh0SW5wdXRdOworICAg
IGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tBdXRvZmlsbFRlc3RWaWV3IGFsbG9jXSBpbml0V2l0
aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgMzIwLCA1MDApXSk7CiAgICAgW3dlYlZpZXcgc3luY2hy
b25vdXNseUxvYWRIVE1MU3RyaW5nOkAiPGlucHV0IGlkPSd0ZXh0ZmllbGQnIHR5cGU9J3RleHQn
PiJdOwogICAgIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJ0ZXh0Zmll
bGQuZm9jdXMoKSJdOwotICAgIEVYUEVDVF9GQUxTRShjb250ZW50Vmlldy5hY2NlcHRzQXV0b2Zp
bGxlZExvZ2luQ3JlZGVudGlhbHMpOwotCi0gICAgW3dlYlZpZXcgcmVsZWFzZV07CisgICAgRVhQ
RUNUX0ZBTFNFKFt3ZWJWaWV3IHRleHRJbnB1dEhhc0F1dG9maWxsQ29udGV4dF0pOwogfQogCiBU
RVNUKFdLV2ViVmlld0F1dG9maWxsVGVzdHMsIEFjY291bnRDcmVhdGlvblBhZ2UpCiB7Ci0gICAg
VGVzdFdLV2ViVmlldyAqd2ViVmlldyA9IFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhG
cmFtZTpDR1JlY3RNYWtlKDAsIDAsIDMyMCwgNTAwKV07Ci0gICAgQXV0b2ZpbGxDYW5kaWRhdGVW
aWV3ICpjb250ZW50VmlldyA9IFt3ZWJWaWV3IF9wcml2YXRlVGV4dElucHV0XTsKKyAgICBhdXRv
IHdlYlZpZXcgPSBhZG9wdE5TKFtbQXV0b2ZpbGxUZXN0VmlldyBhbGxvY10gaW5pdFdpdGhGcmFt
ZTpDR1JlY3RNYWtlKDAsIDAsIDMyMCwgNTAwKV0pOwogICAgIFt3ZWJWaWV3IHN5bmNocm9ub3Vz
bHlMb2FkSFRNTFN0cmluZzpAIjxpbnB1dCBpZD0ndXNlcicgdHlwZT0nZW1haWwnPjxpbnB1dCBp
ZD0ncGFzc3dvcmQnIHR5cGU9J3Bhc3N3b3JkJz48aW5wdXQgaWQ9J2NvbmZpcm1fcGFzc3dvcmQn
IHR5cGU9J3Bhc3N3b3JkJz4iXTsKICAgICBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZh
U2NyaXB0OkAidXNlci5mb2N1cygpIl07Ci0gICAgRVhQRUNUX0ZBTFNFKGNvbnRlbnRWaWV3LmFj
Y2VwdHNBdXRvZmlsbGVkTG9naW5DcmVkZW50aWFscyk7CisgICAgRVhQRUNUX0ZBTFNFKFt3ZWJW
aWV3IHRleHRJbnB1dEhhc0F1dG9maWxsQ29udGV4dF0pOwogCiAgICAgW3dlYlZpZXcgc3RyaW5n
QnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAInBhc3N3b3JkLmZvY3VzKCkiXTsKLSAgICBFWFBFQ1Rf
RkFMU0UoY29udGVudFZpZXcuYWNjZXB0c0F1dG9maWxsZWRMb2dpbkNyZWRlbnRpYWxzKTsKKyAg
ICBFWFBFQ1RfRkFMU0UoW3dlYlZpZXcgdGV4dElucHV0SGFzQXV0b2ZpbGxDb250ZXh0XSk7CiAK
ICAgICBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiY29uZmlybV9wYXNz
d29yZC5mb2N1cygpIl07Ci0gICAgRVhQRUNUX0ZBTFNFKGNvbnRlbnRWaWV3LmFjY2VwdHNBdXRv
ZmlsbGVkTG9naW5DcmVkZW50aWFscyk7Ci0KLSAgICBbd2ViVmlldyByZWxlYXNlXTsKKyAgICBF
WFBFQ1RfRkFMU0UoW3dlYlZpZXcgdGV4dElucHV0SGFzQXV0b2ZpbGxDb250ZXh0XSk7CiB9CiAK
K1RFU1QoV0tXZWJWaWV3QXV0b2ZpbGxUZXN0cywgQXV0b2ZpbGxSZXF1aXJlc0lucHV0U2Vzc2lv
bikKK3sKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbQXV0b2ZpbGxUZXN0VmlldyBhbGxv
Y10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDMyMCwgNTAwKV0pOworICAgIFsoVGVz
dElucHV0RGVsZWdhdGUgKilbd2ViVmlldyBfaW5wdXREZWxlZ2F0ZV0gc2V0SW5wdXRTZXNzaW9u
UmVxdWlyZXNVc2VySW50ZXJhY3Rpb246WUVTXTsKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5
TG9hZEhUTUxTdHJpbmc6QCI8aW5wdXQgaWQ9J3VzZXInIHR5cGU9J2VtYWlsJz48aW5wdXQgaWQ9
J3Bhc3N3b3JkJyB0eXBlPSdwYXNzd29yZCc+Il07CisgICAgW3dlYlZpZXcgc3RyaW5nQnlFdmFs
dWF0aW5nSmF2YVNjcmlwdDpAInVzZXIuZm9jdXMoKSJdOworCisgICAgRVhQRUNUX0ZBTFNFKFt3
ZWJWaWV3IHRleHRJbnB1dEhhc0F1dG9maWxsQ29udGV4dF0pOworfQogCiB9IC8vIG5hbWVzcGFj
ZSBUZXN0V2ViS2l0QVBJCiAKLSNlbmRpZiAvLyBXS19BUElfRU5BQkxFRCAmJiBQTEFURk9STShJ
T1MpICYmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCisjZW5kaWYgLy8gV0tfQVBJX0VOQUJMRUQg
JiYgUExBVEZPUk0oSU9TKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9pb3MvRGF0
YUludGVyYWN0aW9uU2ltdWxhdG9yLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9pb3MvRGF0YUlu
dGVyYWN0aW9uU2ltdWxhdG9yLm1tCmluZGV4IGYxZGY3ODY4YzYzZDJjMGNkYzNiYTE2MzQ1Y2Vl
Y2U4NWVmZWUzMWYuLjU5YzRjN2QwODhhNzFhZjYyMmU2NDRlODE3NmIxOTIyN2ViYWQ1MWEgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvaW9zL0RhdGFJbnRlcmFjdGlvblNpbXVsYXRv
ci5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9EYXRhSW50ZXJhY3Rpb25TaW11bGF0
b3IubW0KQEAgLTYzOCw3ICs2MzgsNyBAQCAtIChOU0FycmF5PFVJRHJhZ0l0ZW0gKj4gKilfd2Vi
VmlldzooV0tXZWJWaWV3ICopd2ViVmlldyB3aWxsUGVyZm9ybURyb3BXaXRoU2VzcwogCiAjcHJh
Z21hIG1hcmsgLSBfV0tJbnB1dERlbGVnYXRlCiAKLS0gKEJPT0wpX3dlYlZpZXc6KFdLV2ViVmll
dyAqKXdlYlZpZXcgZm9jdXNTaG91bGRTdGFydElucHV0U2Vzc2lvbjooaWQgPF9XS0ZvY3VzZWRF
bGVtZW50SW5mbz4paW5mbworLSAoQk9PTClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBJ
bnB1dFNlc3Npb25SZXF1aXJlc1VzZXJJbnRlcmFjdGlvbjooaWQgPF9XS0ZvY3VzZWRFbGVtZW50
SW5mbz4paW5mbwogewogICAgIHJldHVybiBfYWxsb3dzRm9jdXNUb1N0YXJ0SW5wdXRTZXNzaW9u
OwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9pb3MvVUlLaXRTUEkuaCBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvaW9zL1VJS2l0U1BJLmgKaW5kZXggYThjNGU0Y2IzMWNmMWY2Mzdi
ZDk1ZDk2ZGNiYWE3ZTA1NGU4ODE4MC4uYzMzM2JhODBmNTYzMjRjZjQ5NDUzMjNmYmZjNjY3YmQ5
MzRhNjE5NiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9pb3MvVUlLaXRTUEkuaAor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9VSUtpdFNQSS5oCkBAIC0yNywyMyArMjcsMTYg
QEAKIAogI2ltcG9ydCA8VUlLaXQvVUlUZXh0SW5wdXRUcmFpdHMuaD4KIAotI2lmIF9fSVBIT05F
X09TX1ZFUlNJT05fTUFYX0FMTE9XRUQgPj0gMTEwMDAwCiBAcHJvdG9jb2wgVUlEcmFnU2Vzc2lv
bjsKIEBjbGFzcyBVSURyYWdJbnRlcmFjdGlvbjsKIEBjbGFzcyBVSURyYWdJdGVtOwotI2VuZGlm
CiAKLSNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01B
WF9BTExPV0VEID49IDExMDAwMAorI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCiAKICNpbXBv
cnQgPFVJS2l0L1VJQXBwbGljYXRpb25fUHJpdmF0ZS5oPgogI2ltcG9ydCA8VUlLaXQvVUlEcmFn
SW50ZXJhY3Rpb25fUHJpdmF0ZS5oPgogI2ltcG9ydCA8VUlLaXQvVUlUZXh0SW5wdXRUcmFpdHNf
UHJpdmF0ZS5oPgotI2ltcG9ydCA8VUlLaXQvVUlUZXh0U3VnZ2VzdGlvbi5oPgotCi0KLUBwcm90
b2NvbCBVSVRleHRJbnB1dFRyYWl0c19Qcml2YXRlX1N0YWdpbmdfMzQ1ODM2MjggPE5TT2JqZWN0
LCBVSVRleHRJbnB1dFRyYWl0cz4KLUBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgQk9P
TCBhY2NlcHRzQXV0b2ZpbGxlZExvZ2luQ3JlZGVudGlhbHM7Ci1AZW5kCisjaW1wb3J0IDxVSUtp
dC9VSVRleHRJbnB1dF9Qcml2YXRlLmg+CiAKICNlbHNlCiAKQEAgLTUzLDIzICs0Niw0MCBAQCB2
b2lkIFVJQXBwbGljYXRpb25Jbml0aWFsaXplKHZvaWQpOwogCiBXVEZfRVhURVJOX0NfRU5ECiAK
LSNpZiBfX0lQSE9ORV9PU19WRVJTSU9OX01BWF9BTExPV0VEID49IDExMDAwMAorQGludGVyZmFj
ZSBVSVRleHRTdWdnZXN0aW9uIDogTlNPYmplY3QKKworQGVuZAorCiBAcHJvdG9jb2wgVUlEcmFn
SW50ZXJhY3Rpb25EZWxlZ2F0ZV9Gb3JXZWJLaXRPbmx5IDxVSURyYWdJbnRlcmFjdGlvbkRlbGVn
YXRlPgogQG9wdGlvbmFsCiAtICh2b2lkKV9kcmFnSW50ZXJhY3Rpb246KFVJRHJhZ0ludGVyYWN0
aW9uICopaW50ZXJhY3Rpb24gcHJlcGFyZUZvclNlc3Npb246KGlkPFVJRHJhZ1Nlc3Npb24+KXNl
c3Npb24gY29tcGxldGlvbjoodm9pZCheKSh2b2lkKSljb21wbGV0aW9uOwogQGVuZAotI2VuZGlm
IC8vIF9fSVBIT05FX09TX1ZFUlNJT05fTUFYX0FMTE9XRUQgPj0gMTEwMDAwCiAKIEBwcm90b2Nv
bCBVSVRleHRJbnB1dFRyYWl0c19Qcml2YXRlIDxOU09iamVjdCwgVUlUZXh0SW5wdXRUcmFpdHM+
Ci1AcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIEJPT0wgYWNjZXB0c0F1dG9maWxsZWRM
b2dpbkNyZWRlbnRpYWxzOworQGVuZAorCitAcHJvdG9jb2wgVUlUZXh0SW5wdXRQcml2YXRlIDxV
SVRleHRJbnB1dCwgVUlUZXh0SW5wdXRUcmFpdHNfUHJpdmF0ZT4KKy0gKHZvaWQpaW5zZXJ0VGV4
dFN1Z2dlc3Rpb246KFVJVGV4dFN1Z2dlc3Rpb24gKil0ZXh0U3VnZ2VzdGlvbjsKIEBlbmQKIAog
I2VuZGlmCiAKLSNpZiBfX0lQSE9ORV9PU19WRVJTSU9OX01BWF9BTExPV0VEID49IDExMDAwMAor
QHByb3RvY29sIFVJVGV4dElucHV0VHJhaXRzX1ByaXZhdGVfUHJvcG9zZWRfU1BJXzM0NTgzNjI4
IDxVSVRleHRJbnB1dFByaXZhdGU+CistIChOU0RpY3Rpb25hcnkgKilfYXV0b2ZpbGxDb250ZXh0
OworQGVuZAorCiBAcHJvdG9jb2wgVUlEcmFnSW50ZXJhY3Rpb25EZWxlZ2F0ZV9Qcm9wb3NlZF9T
UElfMzMxNDY4MDMgPFVJRHJhZ0ludGVyYWN0aW9uRGVsZWdhdGU+CiAtICh2b2lkKV9kcmFnSW50
ZXJhY3Rpb246KFVJRHJhZ0ludGVyYWN0aW9uICopaW50ZXJhY3Rpb24gaXRlbXNGb3JBZGRpbmdU
b1Nlc3Npb246KGlkIDxVSURyYWdTZXNzaW9uPilzZXNzaW9uIHdpdGhUb3VjaEF0UG9pbnQ6KENH
UG9pbnQpcG9pbnQgY29tcGxldGlvbjoodm9pZCheKShOU0FycmF5PFVJRHJhZ0l0ZW0gKj4gKikp
Y29tcGxldGlvbjsKIEBlbmQKLSNlbmRpZiAvLyBfX0lQSE9ORV9PU19WRVJTSU9OX01BWF9BTExP
V0VEID49IDExMDAwMAorCisjaWYgX19oYXNfaW5jbHVkZSg8VUlLaXQvVUlLZXlib2FyZExvZ2lu
Q3JlZGVudGlhbHNTdWdnZXN0aW9uLmg+KQorLy8gRklYTUU6IE1vdmUgdGhpcyBpbXBvcnQgdW5k
ZXIgVVNFKEFQUExFX0lOVEVSTkFMX1NESykgb25jZSA8cmRhcjovL3Byb2JsZW0vMzQ1ODM2Mjg+
IGxhbmRzIGluIHRoZSBTREsuCisjaW1wb3J0IDxVSUtpdC9VSUtleWJvYXJkTG9naW5DcmVkZW50
aWFsc1N1Z2dlc3Rpb24uaD4KKyNlbHNlCitAaW50ZXJmYWNlIFVJS2V5Ym9hcmRMb2dpbkNyZWRl
bnRpYWxzU3VnZ2VzdGlvbiA6IFVJVGV4dFN1Z2dlc3Rpb24KK0Bwcm9wZXJ0eSAobm9uYXRvbWlj
LCBhc3NpZ24pIE5TU3RyaW5nICp1c2VybmFtZTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBhc3Np
Z24pIE5TU3RyaW5nICpwYXNzd29yZDsKK0BlbmQKKyNlbmRpZgogCiAjZW5kaWYgLy8gUExBVEZP
Uk0oSU9TKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>322927</attachid>
            <date>2017-10-05 15:55:16 -0700</date>
            <delta_ts>2017-10-06 08:36:35 -0700</delta_ts>
            <desc>Fix some ChangeLog wording</desc>
            <filename>bug-177917-20171005155515.patch</filename>
            <type>text/plain</type>
            <size>28513</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIyODg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGM1OGI3ZTQ3OTIyNmQ3NjBj
MTYxNmFmMjkyZWJjYWRkOGI3N2FjNGYuLjhmNDI3ZTlmZTI5OTA2OTY2YzYxZTc3Mzk3ZmNkMzM3
YTI3NjI0MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDkgQEAKKzIwMTctMTAtMDUgIFdlbnNvbiBI
c2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgW2lPU10gVHdlYWsgc3Vw
cG9ydCBmb3IgY2xhc3NpZnlpbmcgZm9ybSBjb250cm9scyAoZm9sbG93dXAgdG8gcjIyMjQ4NykK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NzkxNwor
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzQ4MjAxMjI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBmb2xsb3dzIHVwIHdpdGggPGh0
dHA6Ly90cmFjLndlYmtpdC5vcmcvcjIyMjQ4Nz4uIEl0IGNvbWJpbmVzIHRoZSBmdW5jdGlvbmFs
aXR5IG9mIHR3byBTUEkgaG9va3MKKyAgICAgICAgaW1wbGVtZW50ZWQgb24gV0tDb250ZW50Vmll
dyBpbnRvIGEgc2luZ2xlIG1ldGhvZCB0aGF0IHZlbmRzIGEgY29udGV4dCBkaWN0aW9uYXJ5LCBh
bmQgYWRkaXRpb25hbGx5IGFkZHJlc3NlcyBhbgorICAgICAgICBpc3N1ZSB3aXRoIHRoZSBvcmln
aW5hbCBpbXBsZW1lbnRhdGlvbiwgd2hlcmVpbiBzb21lIGNhY2hlZCBzdGF0ZSBvbiBXZWJQYWdl
UHJveHkgaXMgc2V0IHVwb24gc3RhcnRpbmcgbm9kZQorICAgICAgICBhc3Npc3RhbmNlLCBidXQg
aXMgbmV2ZXIgdW5zZXQgd2hlbiBzdG9wcGluZyBub2RlIGFzc2lzdGFuY2UsIG5vciBzZXQgYW55
d2hlcmUgZWxzZS4gU2VlIHBlci1tZXRob2QgY29tbWVudHMgZm9yCisgICAgICAgIG1vcmUgZGV0
YWlsLgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorCisgICAgICAgIFJl
bW92ZSBtZW1iZXJzIG1fYWNjZXB0c0F1dG9maWxsZWRMb2dpbkNyZWRlbnRpYWxzIGFuZCBtX3Jl
cHJlc2VudGluZ1BhZ2VVUkwgZnJvbSBXZWJQYWdlUHJveHkuIFRoaXMgc3RhdGUgaXMKKyAgICAg
ICAgcmV0cmlldmVkIGZyb20gdGhlIEFzc2lzdGVkTm9kZUluZm9ybWF0aW9uIHN0cnVjdCB3aGVu
IHN0YXJ0aW5nIG5vZGUgYXNzaXN0YW5jZSwgYnV0IGlzIG5ldmVyIHJlc2V0IGFueXdoZXJlCisg
ICAgICAgIGVsc2UuIEluc3RlYWQgb2YgaW50cm9kdWNpbmcgbmV3IG1lbWJlcnMgdG8gcmVtZW1i
ZXIgdGhpcyBzdGF0ZSwgd2UgY2FuIGp1c3QgdXNlIHRoZSBXS0NvbnRlbnRWaWV3J3MgY3VycmVu
dAorICAgICAgICBhc3Npc3RlZCBub2RlIGluZm9ybWF0aW9uLgorCisgICAgICAgIFRoaXMgYWxz
byBtZWFucyB0aGF0IHByb2dyYW1tYXRpY2FsbHkgZm9jdXNpbmcgZm9ybXMgKHdpdGhvdXQgdXNl
ciBnZXN0dXJlKSB3aWxsIG5vIGxvbmdlciBjYXVzZSBXS0NvbnRlbnRWaWV3CisgICAgICAgIHRv
IGFjY2VwdCBhdXRvZmlsbGVkIGxvZ2luIGNyZWRlbnRpYWxzLCBzaW5jZSB3ZSBiYWlsIG91dCBv
ZiBub2RlIGFzc2lzdGFuY2UgYW5kIGRvbid0IGJlZ2luIGFuIGlucHV0IHNlc3Npb24uCisKKyAg
ICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcubW06CisgICAgICAgICgtW1dLQ29u
dGVudFZpZXcgYWNjZXB0c0F1dG9maWxsZWRMb2dpbkNyZWRlbnRpYWxzXSk6IERlbGV0ZWQuCisg
ICAgICAgICgtW1dLQ29udGVudFZpZXcgcmVwcmVzZW50aW5nUGFnZVVSTF0pOiBEZWxldGVkLgor
ICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tOgorICAg
ICAgICAoLVtXS0NvbnRlbnRWaWV3IF9hdXRvZmlsbENvbnRleHRdKToKKworICAgICAgICBNZXJn
ZSBmdW5jdGlvbmFsaXR5IG9mIHRoZSBwcmV2aW91cyB0d28gU1BJIGhvb2tzLCBzdWNoIHRoYXQg
LV9hdXRvZmlsbENvbnRleHQgd2lsbCByZXR1cm4gYSBub24tbnVsbCBkaWN0aW9uYXJ5CisgICAg
ICAgIGNvbnRhaW5pbmcgdGhlIFVSTCBvZiB0aGUgZm9jdXNlZCBlbGVtZW50J3MgZG9jdW1lbnQg
aWYgYW5kIG9ubHkgaWYgV0tDb250ZW50VmlldyBhY2NlcHRzIGF1dG9maWxsZWQgbG9naW4KKyAg
ICAgICAgY3JlZGVudGlhbHMsIGFuZCB0aGVyZSBleGlzdHMgYSByZXByZXNlbnRpbmcgcGFnZSBV
UkwuCisKKyAgICAgICAgV2hlbiB0aGUgcGFnZSBzdG9wcyBhc3Npc3RpbmcgdGhlIGZvY3VzZWQg
bm9kZSwgd2Ugc2V0IHRoZSBBc3Npc3RlZE5vZGVJbmZvcm1hdGlvbidzIGVsZW1lbnQgdHlwZSB0
byBOb25lLCBzbyB3ZQorICAgICAgICBhZGRpdGlvbmFsbHkgYmFpbCBhbmQgcmV0dXJuIG5pbCBp
ZiB0aGUgZWxlbWVudCB0eXBlIGlzIE5vbmUuIEFzIGFuIGFzaWRlLCBpdCBzZWVtcyBhIG1vcmUg
cmVhc29uYWJsZSBhcHByb2FjaCB0bworICAgICAgICByZXNldHRpbmcgc3RhdGUgdXBvbiBzdG9w
cGluZyBub2RlIGFzc2lzdGFuY2UgaXMgdG8ganVzdCBjb21wbGV0ZWx5IHJlc2V0IF9hc3Npc3Rl
ZE5vZGVJbmZvcm1hdGlvbiB0byBpdHMgaW5pdGlhbAorICAgICAgICB2YWx1ZSwgaS5lLiB2aWEg
X2Fzc2lzdGVkTm9kZUluZm9ybWF0aW9uID0geyB9LiBJdCdzIG5vdCBjbGVhciB3aGV0aGVyIHRo
ZXJlIGFyZSBiZWhhdmlvcnMgcmVseWluZyBvbiB0aGUgZmFjdAorICAgICAgICB0aGF0IGFsbCBt
ZW1iZXJzIGJ1dCB0aGUgZWxlbWVudCB0eXBlIGluIHRoZSBjb250ZW50IHZpZXcncyBhc3Npc3Rl
ZCBub2RlIGluZm9ybWF0aW9uIGNvdWxkIGJlIHN0YWxlLCBzbyB0aGlzCisgICAgICAgIHNlZW1z
IHdvcnRoeSBvZiBzb21lIGludmVzdGlnYXRpb24uCisKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9z
L1dlYlBhZ2VQcm94eUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzdGFy
dEFzc2lzdGluZ05vZGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmFjY2VwdHNB
dXRvZmlsbGVkTG9naW5DcmVkZW50aWFscyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6cmVwcmVzZW50aW5nUGFnZVVSTCk6IERlbGV0ZWQuCisKIDIwMTctMTAtMDQg
IERhdmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgdW51
c2VkIHZhcmlhYmxlcyBpbiBsYW1iZGFzIGZvciBuZXR3b3JrIHByb2Nlc3MgY2FjaGUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCA3M2E1NjliNTA1ZmYyZGI1NzllNTg1Nzc4ZGU1NTdm
ZjViMjM0MzE5Li43ZTcwYjBiYjg4OTlkOGNiZDA1NGJlODhhMjRlZTg3ZTI5MmE2NzRlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTctMTAtMDUgIFdl
bnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgW2lPU10gVHdl
YWsgc3VwcG9ydCBmb3IgY2xhc3NpZnlpbmcgZm9ybSBjb250cm9scyAoZm9sbG93dXAgdG8gcjIy
MjQ4NykKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3
NzkxNworICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzQ4MjAxMjI+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50IF9hdXRvZmlsbENvbnRl
eHQgaW4gbGVnYWN5IFdlYktpdCwgYW5kIHJlbW92ZSB0aGUgdHdvIHByZXZpb3VzIFNQSSBob29r
cy4KKworICAgICAgICAqIERPTS9ET01IVE1MSW5wdXRFbGVtZW50Lm1tOgorICAgICAgICAoLVtE
T01IVE1MSW5wdXRFbGVtZW50IF9hdXRvZmlsbENvbnRleHRdKToKKyAgICAgICAgKC1bRE9NSFRN
TElucHV0RWxlbWVudCBhY2NlcHRzQXV0b2ZpbGxlZExvZ2luQ3JlZGVudGlhbHNdKTogRGVsZXRl
ZC4KKyAgICAgICAgKC1bRE9NSFRNTElucHV0RWxlbWVudCByZXByZXNlbnRpbmdQYWdlVVJMXSk6
IERlbGV0ZWQuCisKIDIwMTctMDktMjkgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5j
b20+CiAKICAgICAgICAgRm9sbG93LXVwIHRvIGh0dHBzOi8vdHJhYy53ZWJraXQub3JnL3IyMjIy
MzkgdG8gZml4IGNyYXNoZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmlu
ZGV4IDcwNThjOGUxMTBiYTNmYjczM2I2OWUzY2Q1MTFkY2RmZjViYzFiMWQuLjcwNWVmYmZhY2Zl
ODM0MmU1NThlOGQ3NzVhNTAzOGM1ZjJhYTNmMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5oCkBAIC01NTksOCArNTU5LDYgQEAgcHVibGljOgogICAgIHZvaWQgc2V0SXNT
Y3JvbGxpbmdPclpvb21pbmcoYm9vbCk7CiAgICAgdm9pZCByZXF1ZXN0UmVjdHNGb3JHcmFudWxh
cml0eVdpdGhTZWxlY3Rpb25PZmZzZXQoV2ViQ29yZTo6VGV4dEdyYW51bGFyaXR5LCB1aW50MzJf
dCBvZmZzZXQsIFdURjo6RnVuY3Rpb248dm9pZChjb25zdCBWZWN0b3I8V2ViQ29yZTo6U2VsZWN0
aW9uUmVjdD4mLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CiAgICAgdm9pZCByZXF1ZXN0UmVj
dHNBdFNlbGVjdGlvbk9mZnNldFdpdGhUZXh0KGludDMyX3Qgb2Zmc2V0LCBjb25zdCBTdHJpbmcm
LCBXVEY6OkZ1bmN0aW9uPHZvaWQoY29uc3QgVmVjdG9yPFdlYkNvcmU6OlNlbGVjdGlvblJlY3Q+
JiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOwotICAgIGJvb2wgYWNjZXB0c0F1dG9maWxsZWRM
b2dpbkNyZWRlbnRpYWxzKCk7Ci0gICAgV2ViQ29yZTo6VVJMIHJlcHJlc2VudGluZ1BhZ2VVUkwo
KTsKICAgICB2b2lkIGF1dG9maWxsTG9naW5DcmVkZW50aWFscyhjb25zdCBTdHJpbmcmIHVzZXJu
YW1lLCBjb25zdCBTdHJpbmcmIHBhc3N3b3JkKTsKICNpZiBFTkFCTEUoREFUQV9JTlRFUkFDVElP
TikKICAgICB2b2lkIGRpZFBlcmZvcm1EYXRhSW50ZXJhY3Rpb25Db250cm9sbGVyT3BlcmF0aW9u
KGJvb2wgaGFuZGxlZCk7CkBAIC0xOTk2LDggKzE5OTQsNiBAQCBwcml2YXRlOgogICAgIGJvb2wg
bV9oYXNEZWZlcnJlZFN0YXJ0QXNzaXN0aW5nTm9kZSB7IGZhbHNlIH07CiAgICAgc3RkOjp1bmlx
dWVfcHRyPE5vZGVBc3Npc3RhbmNlQXJndW1lbnRzPiBtX2RlZmVycmVkTm9kZUFzc2lzdGFuY2VB
cmd1bWVudHM7CiAgICAgYm9vbCBtX2ZvcmNlQWx3YXlzVXNlclNjYWxhYmxlIHsgZmFsc2UgfTsK
LSAgICBib29sIG1fYWNjZXB0c0F1dG9maWxsZWRMb2dpbkNyZWRlbnRpYWxzIHsgZmFsc2UgfTsK
LSAgICBXZWJDb3JlOjpVUkwgbV9yZXByZXNlbnRpbmdQYWdlVVJMOwogI2VuZGlmCiAKICNpZiBF
TkFCTEUoUE9JTlRFUl9MT0NLKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL1dLQ29udGVudFZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250
ZW50Vmlldy5tbQppbmRleCA2ODVlMzk0NjQ1Zjc3YjgwMDhkNzg4YWQ5NTU5MmQ2NGNiOWViYTFk
Li5kNjFjZWRmYzE0ZTI2ZWM0ODNlMGU5MGMxODYyN2YyMzQxZTk1MGMzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlldy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlldy5tbQpAQCAtMjU4LDE2ICsyNTgsNiBA
QCAtIChXZWJQYWdlUHJveHkqKXBhZ2UKICAgICByZXR1cm4gX3BhZ2UuZ2V0KCk7CiB9CiAKLS0g
KEJPT0wpYWNjZXB0c0F1dG9maWxsZWRMb2dpbkNyZWRlbnRpYWxzCi17Ci0gICAgcmV0dXJuIF9w
YWdlLT5hY2NlcHRzQXV0b2ZpbGxlZExvZ2luQ3JlZGVudGlhbHMoKTsKLX0KLQotLSAoTlNVUkwg
KilyZXByZXNlbnRpbmdQYWdlVVJMCi17Ci0gICAgcmV0dXJuIF9wYWdlLT5yZXByZXNlbnRpbmdQ
YWdlVVJMKCk7Ci19Ci0KIC0gKHZvaWQpd2lsbE1vdmVUb1dpbmRvdzooVUlXaW5kb3cgKiluZXdX
aW5kb3cKIHsKICAgICBOU05vdGlmaWNhdGlvbkNlbnRlciAqZGVmYXVsdENlbnRlciA9IFtOU05v
dGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0gYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCmluZGV4IGZhOWE4
MTI4YWRjMGEwMWMwN2U4YTk0ZTJiZTg4YzJiYzBkYjRlMGEuLjBiYTMwODhhODQ3ZWVlNmYyNGJh
YjI5NDkyN2ZjMTJhYjEyYWRiMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQpAQCAtNDUxOCw2ICs0NTE4LDE4
IEBAIC0gKE5TQXJyYXk8VUlEcmFnSXRlbSAqPiAqKV9pdGVtc0ZvckJlZ2lubmluZ09yQWRkaW5n
VG9TZXNzaW9uV2l0aFJlZ2lzdHJhdGlvbkxpCiAgICAgcmV0dXJuIGRyYWdJdGVtczsKIH0KIAor
LSAoTlNEaWN0aW9uYXJ5ICopX2F1dG9maWxsQ29udGV4dAoreworICAgIGlmIChfYXNzaXN0ZWRO
b2RlSW5mb3JtYXRpb24uZWxlbWVudFR5cGUgPT0gSW5wdXRUeXBlOjpOb25lIHx8ICFfYXNzaXN0
ZWROb2RlSW5mb3JtYXRpb24uYWNjZXB0c0F1dG9maWxsZWRMb2dpbkNyZWRlbnRpYWxzKQorICAg
ICAgICByZXR1cm4gbmlsOworCisgICAgTlNVUkwgKnBsYXRmb3JtVVJMID0gX2Fzc2lzdGVkTm9k
ZUluZm9ybWF0aW9uLnJlcHJlc2VudGluZ1BhZ2VVUkw7CisgICAgaWYgKCFwbGF0Zm9ybVVSTCkK
KyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIHJldHVybiBAeyBAIl9XZWJWaWV3VVJMIiA6IHBs
YXRmb3JtVVJMIH07Cit9CisKICNwcmFnbWEgbWFyayAtIFVJRHJhZ0ludGVyYWN0aW9uRGVsZWdh
dGUKIAogLSAoQk9PTClfZHJhZ0ludGVyYWN0aW9uOihVSURyYWdJbnRlcmFjdGlvbiAqKWludGVy
YWN0aW9uIHNob3VsZERlbGF5Q29tcGV0aW5nR2VzdHVyZVJlY29nbml6ZXI6KFVJR2VzdHVyZVJl
Y29nbml6ZXIgKiljb21wZXRpbmdHZXN0dXJlUmVjb2duaXplcgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KaW5kZXggZDNlNjdkN2UzNTM5MjgxNWEx
MzUxYWNiMWM0NmQzMTZlNDdiYTVhNC4uYWFiMDdhN2UzMWI3ZWRkN2U3YzNlN2MzMTVkNTFiN2Uw
NTcxMzhlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQ
cm94eUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5
SU9TLm1tCkBAIC04OTEsOCArODkxLDYgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZEdldFRhcEhp
Z2hsaWdodEdlb21ldHJpZXModWludDY0X3QgcmVxdWVzdElELCBjb25zdCBXZWJDb3IKIAogdm9p
ZCBXZWJQYWdlUHJveHk6OnN0YXJ0QXNzaXN0aW5nTm9kZShjb25zdCBBc3Npc3RlZE5vZGVJbmZv
cm1hdGlvbiYgaW5mb3JtYXRpb24sIGJvb2wgdXNlcklzSW50ZXJhY3RpbmcsIGJvb2wgYmx1clBy
ZXZpb3VzTm9kZSwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQogewotICAgIG1fYWNjZXB0c0F1
dG9maWxsZWRMb2dpbkNyZWRlbnRpYWxzID0gaW5mb3JtYXRpb24uYWNjZXB0c0F1dG9maWxsZWRM
b2dpbkNyZWRlbnRpYWxzOwotICAgIG1fcmVwcmVzZW50aW5nUGFnZVVSTCA9IGluZm9ybWF0aW9u
LnJlcHJlc2VudGluZ1BhZ2VVUkw7CiAgICAgQVBJOjpPYmplY3QqIHVzZXJEYXRhT2JqZWN0ID0g
cHJvY2VzcygpLnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0KCkpLmdl
dCgpOwogICAgIGlmIChtX2VkaXRvclN0YXRlLmlzTWlzc2luZ1Bvc3RMYXlvdXREYXRhKSB7CiAg
ICAgICAgIG1fZGVmZXJyZWROb2RlQXNzaXN0YW5jZUFyZ3VtZW50cyA9IHN0ZDo6bWFrZV91bmlx
dWU8Tm9kZUFzc2lzdGFuY2VBcmd1bWVudHM+KE5vZGVBc3Npc3RhbmNlQXJndW1lbnRzIHsgaW5m
b3JtYXRpb24sIHVzZXJJc0ludGVyYWN0aW5nLCBibHVyUHJldmlvdXNOb2RlLCB1c2VyRGF0YU9i
amVjdCB9KTsKQEAgLTkxMiwxNiArOTEwLDYgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnN0b3BBc3Np
c3RpbmdOb2RlKCkKICAgICBtX3BhZ2VDbGllbnQuc3RvcEFzc2lzdGluZ05vZGUoKTsKIH0KIAot
Ym9vbCBXZWJQYWdlUHJveHk6OmFjY2VwdHNBdXRvZmlsbGVkTG9naW5DcmVkZW50aWFscygpCi17
Ci0gICAgcmV0dXJuIG1fYWNjZXB0c0F1dG9maWxsZWRMb2dpbkNyZWRlbnRpYWxzOwotfQotCi1X
ZWJDb3JlOjpVUkwgV2ViUGFnZVByb3h5OjpyZXByZXNlbnRpbmdQYWdlVVJMKCkKLXsKLSAgICBy
ZXR1cm4gbV9yZXByZXNlbnRpbmdQYWdlVVJMOwotfQotCiB2b2lkIFdlYlBhZ2VQcm94eTo6YXV0
b2ZpbGxMb2dpbkNyZWRlbnRpYWxzKGNvbnN0IFN0cmluZyYgdXNlcm5hbWUsIGNvbnN0IFN0cmlu
ZyYgcGFzc3dvcmQpCiB7CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpB
dXRvZmlsbExvZ2luQ3JlZGVudGlhbHModXNlcm5hbWUsIHBhc3N3b3JkKSwgbV9wYWdlSUQpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxJbnB1dEVsZW1l
bnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTElucHV0RWxlbWVudC5t
bQppbmRleCA4YmQ4Y2M3NzdlZTZmNmFkYjkzZGNjNGUwMzhkY2IxN2M2MzZiY2VkLi44YzIwNDMz
NzIxZmM5MjU0NDQ5N2FjN2VjNDM3YzY5ZWEwNDZjYTAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTElucHV0RWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTElucHV0RWxlbWVudC5tbQpAQCAtMzQsNyArMzQsNyBA
QAogI2ltcG9ydCAiRE9NUHJpdmF0ZS5oIgogI2ltcG9ydCAiRXhjZXB0aW9uSGFuZGxlcnMuaCIK
IAotLy8gRklYTUUgPHJhZGFyOjM0NTgzNjI4PjogU2ltcGx5ZnkgdGhpcyBvbmNlIHRoZSBVSUtp
dCB3b3JrIGlzIGF2YWlsYWJsZSBpbiB0aGUgYnVpbGQuCisvLyBGSVhNRTogU2ltcGxpZnkgdGhp
cyBvbmNlIDxyZGFyOi8vcHJvYmxlbS8zNDU4MzYyOD4gaXMgYXZhaWxhYmxlIGluIHRoZSBidWls
ZC4KICNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKSAmJiBUQVJHRVRfT1NfSVBIT05FCiAjaWYg
X19oYXNfaW5jbHVkZSg8VUlLaXQvVUlLZXlib2FyZExvZ2luQ3JlZGVudGlhbHNTdWdnZXN0aW9u
Lmg+KQogI2ltcG9ydCA8VUlLaXQvVUlLZXlib2FyZExvZ2luQ3JlZGVudGlhbHNTdWdnZXN0aW9u
Lmg+CkBAIC02ODMsMTYgKzY4MywxNyBAQCAtICh2b2lkKXNldFZhbHVlRm9yVXNlcjooTlNTdHJp
bmcgKilpblZhbHVlCiAgICAgSU1QTC0+c2V0VmFsdWVGb3JVc2VyKGluVmFsdWUpOwogfQogCi0t
IChCT09MKWFjY2VwdHNBdXRvZmlsbGVkTG9naW5DcmVkZW50aWFscworLSAoTlNEaWN0aW9uYXJ5
ICopX2F1dG9maWxsQ29udGV4dAogewogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0
ZSBzdGF0ZTsKLSAgICByZXR1cm4gISFXZWJDb3JlOjpBdXRvZmlsbEVsZW1lbnRzOjpjb21wdXRl
QXV0b2ZpbGxFbGVtZW50cygqSU1QTCk7Ci19CisgICAgaWYgKCFXZWJDb3JlOjpBdXRvZmlsbEVs
ZW1lbnRzOjpjb21wdXRlQXV0b2ZpbGxFbGVtZW50cygqSU1QTCkpCisgICAgICAgIHJldHVybiBu
aWw7CiAKLS0gKE5TVVJMICopcmVwcmVzZW50aW5nUGFnZVVSTAotewotICAgIFdlYkNvcmU6OkpT
TWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICByZXR1cm4gW05TVVJMIFVSTFdpdGhTdHJp
bmc6c2VsZi5vd25lckRvY3VtZW50LlVSTF07CisgICAgTlNVUkwgKmRvY3VtZW50VVJMID0gW05T
VVJMIFVSTFdpdGhTdHJpbmc6c2VsZi5vd25lckRvY3VtZW50LlVSTF07CisgICAgaWYgKCFkb2N1
bWVudFVSTCkKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIHJldHVybiBAeyBAIl9XZWJWaWV3
VVJMIiA6IGRvY3VtZW50VVJMIH07CiB9CiAKICNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKSAm
JiBUQVJHRVRfT1NfSVBIT05FCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9D
aGFuZ2VMb2cKaW5kZXggYzBmN2RmOTRjZDU3OTQ3NDM4YTc5NGViNjE2NGZjYWMyYTA1ZDdiOC4u
OWRlMTYxOWYzZmMyMzM1MjgwMTExNDVhNjZhZjRlYTQ5MTlhMTIyMCAxMDA2NDQKLS0tIGEvVG9v
bHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDE3
LTEwLTA1ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAg
IFtpT1NdIFR3ZWFrIHN1cHBvcnQgZm9yIGNsYXNzaWZ5aW5nIGZvcm0gY29udHJvbHMgKGZvbGxv
d3VwIHRvIHIyMjI0ODcpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNzc5MTcKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzM0ODIwMTIyPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1pbm9yIGNsZWFudXAg
YXJvdW5kIGF1dG9maWxsIEFQSSB0ZXN0cyBhZGRlZCBpbiByMjIyNDg3LiBBZGRpdGlvbmFsbHks
IGF1Z21lbnRzIHNvbWUgb2YgdGhlc2UgQVBJIHRlc3RzIHRvCisgICAgICAgIHZlcmlmeSB0aGF0
IGFmdGVyIGJsdXJyaW5nIHRoZSBmb2N1c2VkIGVsZW1lbnQsIHRoZSBjb250ZW50IHZpZXcgbm8g
bG9uZ2VyIGFjY2VwdHMgYXV0b2ZpbGwgY3JlZGVudGlhbHMgKHNlZQorICAgICAgICBXZWJLaXQg
Q2hhbmdlTG9nIGZvciBtb3JlIGRldGFpbHMpLiBBbHNvIGF1Z21lbnRzIHRlc3RzIHRvIHZlcmlm
eSB0aGF0IHRoZSBVUkwgaW4gdGhlIGF1dG9maWxsIGNvbnRleHQgbWF0Y2hlcworICAgICAgICB0
aGUgZG9jdW1lbnQgVVJMLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9pb3MvV0tX
ZWJWaWV3QXV0b2ZpbGxUZXN0cy5tbToKKworICAgICAgICBSZW1vdmUgdGhlIFVTRShBUFBMRV9J
TlRFUk5BTF9TREspIGd1YXJkIGZvciB0aGVzZSBBUEkgdGVzdHMuCisKKyAgICAgICAgKG5ld1VJ
S2V5Ym9hcmRMb2dpbkNyZWRlbnRpYWxzU3VnZ2VzdGlvbik6CisKKyAgICAgICAgQWRkIGEgc3R1
YiBpbXBsZW1lbnRhdGlvbiBvZiBVSUtleWJvYXJkTG9naW5DcmVkZW50aWFsc1N1Z2dlc3Rpb24u
IFRoaXMgYWxsb3dzCisgICAgICAgIFtVSUtleWJvYXJkTG9naW5DcmVkZW50aWFsc1N1Z2dlc3Rp
b24gbmV3XSB0byByZXR1cm4gYSBub25udWxsIG9iamVjdCwgd2hpY2ggYWxsb3dzIHRoZXNlIEFQ
SSB0ZXN0cyB0byB2ZXJpZnkKKyAgICAgICAgdGhhdCB0aGUgY3JlZGVudGlhbCBmaWxsaW5nIGNv
ZGVwYXRoIHdvcmtzIGFzIGludGVuZGVkIHdpdGhvdXQgYW55IGFkZGl0aW9uYWwgVUlLaXQgY2hh
bmdlcy4gQ3VycmVudGx5LCB0ZXN0cworICAgICAgICBmb3IgdGhlIHZhbHVlIG9mIHVzZXJuYW1l
IGFuZCBwYXNzd29yZCBmaWVsZHMgYXJlIHBhc3NpbmcgZXZlbiB0aG91Z2ggdGhlIGZpZWxkcyBh
cmUgbm90IGJlaW5nIHBvcHVsYXRlZCBiZWNhdXNlCisgICAgICAgIHRoZSBleHBlY3RlZCBzdHJp
bmcgdmFsdWVzIGFyZSBudWxsLCBhbmQgdGhlIG9ic2VydmVkIHZhbHVlIGlzIGFuIGVtcHR5IHN0
cmluZy4gV2UgYWRkIGFuIGFkZGl0aW9uYWwgY2hlY2sgaGVyZQorICAgICAgICB0byBlbnN1cmUg
dGhhdCB0aGVzZSB0ZXN0cyBkb24ndCBwYXNzIHVubGVzcyB0aGUgVUlLZXlib2FyZExvZ2luQ3Jl
ZGVudGlhbHNTdWdnZXN0aW9uIHdhcyBhY3R1YWxseSBjcmVhdGVkLgorCisgICAgICAgICgtW1Rl
c3RJbnB1dERlbGVnYXRlIF93ZWJWaWV3OmZvY3VzU2hvdWxkU3RhcnRJbnB1dFNlc3Npb246XSk6
CisgICAgICAgICgtW0F1dG9maWxsVGVzdFZpZXcgaW5pdFdpdGhGcmFtZTpdKToKKyAgICAgICAg
KC1bQXV0b2ZpbGxUZXN0VmlldyBfYXV0b2ZpbGxJbnB1dFZpZXddKToKKyAgICAgICAgKC1bQXV0
b2ZpbGxUZXN0VmlldyB0ZXh0SW5wdXRIYXNBdXRvZmlsbENvbnRleHRdKToKKyAgICAgICAgKFRl
c3RXZWJLaXRBUEk6OlRFU1QpOgorCisgICAgICAgIEFkZCBhbiBhZGRpdGlvbmFsIEFQSSB0ZXN0
IHRvIHZlcmlmeSB0aGF0IHByb2dyYW1tYXRpYyBmb2N1cyB3aXRob3V0IHVzZXIgaW50ZXJhY3Rp
b24gKGFuZCBhbHNvIHdpdGhvdXQgdGVzdGluZworICAgICAgICBvdmVycmlkZXMpIGRvZXMgbm90
IGFjdGl2YXRlIGF1dG9maWxsLgorCisgICAgICAgIChjcmVhdGVVSUtleWJvYXJkTG9naW5DcmVk
ZW50aWFsc1N1Z2dlc3Rpb24pOiBEZWxldGVkLgorICAgICAgICAoLVtXS1dlYlZpZXcgX3ByaXZh
dGVUZXh0SW5wdXRdKTogRGVsZXRlZC4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2lvcy9VSUtp
dFNQSS5oOgorCisgICAgICAgIE1pbm9yIGdhcmRlbmluZyB0byByZW1vdmUgaU9TIHZlcnNpb24g
Pj0gMTEgZ3VhcmRzIHRoYXQgYXJlIG5vdyB1bm5lY2Vzc2FyeS4gQWRkaXRpb25hbGx5LCBhZGQg
c29tZSBtb3JlIHByaXZhdGUKKyAgICAgICAgaGVhZGVyIGltcG9ydHMgKHdpdGggY29ycmVzcG9u
ZGluZyBpbnRlcmZhY2UgZGVmaW5pdGlvbnMgZm9yIGJ1aWxkaW5nIGFuZCBydW5uaW5nIHdpdGgg
dGhlIHB1YmxpYyBTREspLgorCiAyMDE3LTEwLTA0ICBKRiBCYXN0aWVuICA8amZiYXN0aWVuQGFw
cGxlLmNvbT4KIAogICAgICAgICBXVEY6IFVwZGF0ZSBzdGQ6OmV4cGVjdGVkIHRvIG1hdGNoIGN1
cnJlbnQgcHJvcG9zYWwKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvaW9z
L1dLV2ViVmlld0F1dG9maWxsVGVzdHMubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL2lv
cy9XS1dlYlZpZXdBdXRvZmlsbFRlc3RzLm1tCmluZGV4IGUxMTI4NWVjNDk1Njk0MTUxZTExZjU3
Y2ZhMWE1M2RjNjI3ZWUwYjYuLjBlZDAzYTBkMDVlNmMzNGZmMDU0MGQxMGYyMWI3YWY5YmJjOTZm
MTUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvaW9zL1dLV2ViVmlld0F1
dG9maWxsVGVzdHMubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9pb3MvV0tXZWJW
aWV3QXV0b2ZpbGxUZXN0cy5tbQpAQCAtMjUsNDAgKzI1LDg0IEBACiAKICNpbmNsdWRlICJjb25m
aWcuaCIKIAotI2lmIFdLX0FQSV9FTkFCTEVEICYmIFBMQVRGT1JNKElPUykgJiYgVVNFKEFQUExF
X0lOVEVSTkFMX1NESykKKyNpZiBXS19BUElfRU5BQkxFRCAmJiBQTEFURk9STShJT1MpCiAKICNp
bXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJUZXN0V0tXZWJWaWV3LmgiCiAj
aW1wb3J0ICJVSUtpdFNQSS5oIgorI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld1ByaXZhdGUuaD4K
KyNpbXBvcnQgPFdlYktpdC9fV0tGb2N1c2VkRWxlbWVudEluZm8uaD4KKyNpbXBvcnQgPFdlYktp
dC9fV0tJbnB1dERlbGVnYXRlLmg+CisjaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KKworI2lmICFf
X2hhc19pbmNsdWRlKDxVSUtpdC9VSUtleWJvYXJkTG9naW5DcmVkZW50aWFsc1N1Z2dlc3Rpb24u
aD4pCisvLyBGSVhNRTogVGhpcyBjYW4gYmUgc2FmZWx5IHJlbW92ZWQgb25jZSA8cmRhcjovL3By
b2JsZW0vMzQ1ODM2Mjg+IGxhbmRzIGluIHRoZSBTREsuCitAaW1wbGVtZW50YXRpb24gVUlLZXli
b2FyZExvZ2luQ3JlZGVudGlhbHNTdWdnZXN0aW9uCitAZW5kCisjZW5kaWYKIAotI2ltcG9ydCA8
VUlLaXQvVUlUZXh0SW5wdXRUcmFpdHNfUHJpdmF0ZS5oPgotI2ltcG9ydCA8VUlLaXQvVUlUZXh0
SW5wdXRfUHJpdmF0ZS5oPgotCi0vLyBGSVhNRSAzNDU4MzYyODogU2ltcGx5ZnkgdGhpcyBvbmNl
IHRoZSBVSUtpdCB3b3JrIGlzIGF2YWlsYWJsZSBpbiB0aGUgYnVpbGQuCi0jaWYgX19oYXNfaW5j
bHVkZSg8VUlLaXQvVUlLZXlib2FyZExvZ2luQ3JlZGVudGlhbHNTdWdnZXN0aW9uLmg+KQotI2lt
cG9ydCA8VUlLaXQvVUlLZXlib2FyZExvZ2luQ3JlZGVudGlhbHNTdWdnZXN0aW9uLmg+Ci0jZWxz
ZQotI2ltcG9ydCA8VUlLaXQvVUlUZXh0U3VnZ2VzdGlvbi5oPgotQGludGVyZmFjZSBVSUtleWJv
YXJkTG9naW5DcmVkZW50aWFsc1N1Z2dlc3Rpb24gOiBVSVRleHRTdWdnZXN0aW9uCitzdGF0aWMg
VUlLZXlib2FyZExvZ2luQ3JlZGVudGlhbHNTdWdnZXN0aW9uICpuZXdVSUtleWJvYXJkTG9naW5D
cmVkZW50aWFsc1N1Z2dlc3Rpb24oTlNTdHJpbmcgKnVzZXJuYW1lLCBOU1N0cmluZyAqcGFzc3dv
cmQpCit7CisgICAgVUlLZXlib2FyZExvZ2luQ3JlZGVudGlhbHNTdWdnZXN0aW9uICpzdWdnZXN0
aW9uID0gW1VJS2V5Ym9hcmRMb2dpbkNyZWRlbnRpYWxzU3VnZ2VzdGlvbiBuZXddOworICAgIHN1
Z2dlc3Rpb24udXNlcm5hbWUgPSB1c2VybmFtZTsKKyAgICBzdWdnZXN0aW9uLnBhc3N3b3JkID0g
cGFzc3dvcmQ7CisgICAgcmV0dXJuIHN1Z2dlc3Rpb247Cit9CiAKLUBwcm9wZXJ0eSAobm9uYXRv
bWljLCBhc3NpZ24pIE5TU3RyaW5nICp1c2VybmFtZTsKLUBwcm9wZXJ0eSAobm9uYXRvbWljLCBh
c3NpZ24pIE5TU3RyaW5nICpwYXNzd29yZDsKK3R5cGVkZWYgVUlWaWV3IDxVSVRleHRJbnB1dFRy
YWl0c19Qcml2YXRlX1Byb3Bvc2VkX1NQSV8zNDU4MzYyOD4gQXV0b2ZpbGxJbnB1dFZpZXc7CiAK
K0BpbnRlcmZhY2UgVGVzdElucHV0RGVsZWdhdGUgOiBOU09iamVjdCA8X1dLSW5wdXREZWxlZ2F0
ZT4KK0Bwcm9wZXJ0eSAobm9uYXRvbWljKSBCT09MIGlucHV0U2Vzc2lvblJlcXVpcmVzVXNlcklu
dGVyYWN0aW9uOwogQGVuZAotI2VuZGlmCiAKLXN0YXRpYyBVSUtleWJvYXJkTG9naW5DcmVkZW50
aWFsc1N1Z2dlc3Rpb24gKmNyZWF0ZVVJS2V5Ym9hcmRMb2dpbkNyZWRlbnRpYWxzU3VnZ2VzdGlv
bigpCitAaW1wbGVtZW50YXRpb24gVGVzdElucHV0RGVsZWdhdGUKKworLSAoaW5zdGFuY2V0eXBl
KWluaXQKIHsKLSAgICByZXR1cm4gW1tOU0NsYXNzRnJvbVN0cmluZyhAIlVJS2V5Ym9hcmRMb2dp
bkNyZWRlbnRpYWxzU3VnZ2VzdGlvbiIpIG5ld10gYXV0b3JlbGVhc2VdOworICAgIGlmIChzZWxm
ID0gW3N1cGVyIGluaXRdKQorICAgICAgICBfaW5wdXRTZXNzaW9uUmVxdWlyZXNVc2VySW50ZXJh
Y3Rpb24gPSBOTzsKKworICAgIHJldHVybiBzZWxmOwogfQogCi10eXBlZGVmIFVJVmlldyA8VUlU
ZXh0SW5wdXRQcml2YXRlLCBVSVRleHRJbnB1dFRyYWl0c19Qcml2YXRlLCBVSVRleHRJbnB1dFRy
YWl0c19Qcml2YXRlX1N0YWdpbmdfMzQ1ODM2Mjg+ICBBdXRvZmlsbENhbmRpZGF0ZVZpZXc7Cist
IChCT09MKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGZvY3VzU2hvdWxkU3RhcnRJbnB1
dFNlc3Npb246KGlkIDxfV0tGb2N1c2VkRWxlbWVudEluZm8+KWluZm8KK3sKKyAgICByZXR1cm4g
IXNlbGYuaW5wdXRTZXNzaW9uUmVxdWlyZXNVc2VySW50ZXJhY3Rpb24gfHwgaW5mby51c2VySW5p
dGlhdGVkOworfQorCitAZW5kCisKK0BpbnRlcmZhY2UgQXV0b2ZpbGxUZXN0VmlldyA6IFRlc3RX
S1dlYlZpZXcKK0BlbmQKIAotQGltcGxlbWVudGF0aW9uIFdLV2ViVmlldyAoQXV0b2ZpbGxUZXN0
SGVscGVycykKK0BpbXBsZW1lbnRhdGlvbiBBdXRvZmlsbFRlc3RWaWV3IHsKKyAgICBSZXRhaW5Q
dHI8VGVzdElucHV0RGVsZWdhdGU+IF90ZXN0RGVsZWdhdGU7Cit9CiAKLS0gKEF1dG9maWxsQ2Fu
ZGlkYXRlVmlldyAqKV9wcml2YXRlVGV4dElucHV0CistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhG
cmFtZTooQ0dSZWN0KWZyYW1lCiB7Ci0gICAgcmV0dXJuIChBdXRvZmlsbENhbmRpZGF0ZVZpZXcg
Kilbc2VsZiB2YWx1ZUZvcktleTpAIl9jdXJyZW50Q29udGVudFZpZXciXTsKKyAgICBpZiAoIShz
ZWxmID0gW3N1cGVyIGluaXRXaXRoRnJhbWU6ZnJhbWVdKSkKKyAgICAgICAgcmV0dXJuIG5pbDsK
KworICAgIF90ZXN0RGVsZWdhdGUgPSBhZG9wdE5TKFtbVGVzdElucHV0RGVsZWdhdGUgYWxsb2Nd
IGluaXRdKTsKKyAgICBzZWxmLl9pbnB1dERlbGVnYXRlID0gX3Rlc3REZWxlZ2F0ZS5nZXQoKTsK
KyAgICByZXR1cm4gc2VsZjsKK30KKworLSAoQXV0b2ZpbGxJbnB1dFZpZXcgKilfYXV0b2ZpbGxJ
bnB1dFZpZXcKK3sKKyAgICByZXR1cm4gKEF1dG9maWxsSW5wdXRWaWV3ICopc2VsZi50ZXh0SW5w
dXRDb250ZW50VmlldzsKK30KKworLSAoQk9PTCl0ZXh0SW5wdXRIYXNBdXRvZmlsbENvbnRleHQK
K3sKKyAgICBbc2VsZiB3YWl0Rm9yTmV4dFByZXNlbnRhdGlvblVwZGF0ZV07CisgICAgTlNVUkwg
KnVybCA9IFtzZWxmLl9hdXRvZmlsbElucHV0Vmlldy5fYXV0b2ZpbGxDb250ZXh0IG9iamVjdEZv
cktleTpAIl9XZWJWaWV3VVJMIl07CisgICAgaWYgKCFbdXJsIGlzS2luZE9mQ2xhc3M6W05TVVJM
IGNsYXNzXV0pCisgICAgICAgIHJldHVybiBOTzsKKworICAgIEVYUEVDVF9XS19TVFJFUShbc2Vs
ZiBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZG9jdW1lbnQuVVJMIl0sIHVybC5hYnNv
bHV0ZVN0cmluZyk7CisgICAgcmV0dXJuIFlFUzsKIH0KIAogQGVuZApAQCAtNjcsMTEwICsxMTEs
MTAyIEBAIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIAogVEVTVChXS1dlYlZpZXdBdXRvZmls
bFRlc3RzLCBVc2VybmFtZUFuZFBhc3N3b3JkRmllbGQpCiB7Ci0gICAgVGVzdFdLV2ViVmlldyAq
d2ViVmlldyA9IFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtl
KDAsIDAsIDMyMCwgNTAwKV07Ci0gICAgQXV0b2ZpbGxDYW5kaWRhdGVWaWV3ICpjb250ZW50Vmll
dyA9IFt3ZWJWaWV3IF9wcml2YXRlVGV4dElucHV0XTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9w
dE5TKFtbQXV0b2ZpbGxUZXN0VmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAs
IDAsIDMyMCwgNTAwKV0pOwogICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmlu
ZzpAIjxpbnB1dCBpZD0ndXNlcicgdHlwZT0nZW1haWwnPjxpbnB1dCBpZD0ncGFzc3dvcmQnIHR5
cGU9J3Bhc3N3b3JkJz4iXTsKICAgICBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2Ny
aXB0OkAidXNlci5mb2N1cygpIl07Ci0gICAgRVhQRUNUX1RSVUUoY29udGVudFZpZXcuYWNjZXB0
c0F1dG9maWxsZWRMb2dpbkNyZWRlbnRpYWxzKTsKKyAgICBFWFBFQ1RfVFJVRShbd2ViVmlldyB0
ZXh0SW5wdXRIYXNBdXRvZmlsbENvbnRleHRdKTsKIAogICAgIFt3ZWJWaWV3IHN0cmluZ0J5RXZh
bHVhdGluZ0phdmFTY3JpcHQ6QCJwYXNzd29yZC5mb2N1cygpIl07Ci0gICAgRVhQRUNUX1RSVUUo
Y29udGVudFZpZXcuYWNjZXB0c0F1dG9maWxsZWRMb2dpbkNyZWRlbnRpYWxzKTsKKyAgICBFWFBF
Q1RfVFJVRShbd2ViVmlldyB0ZXh0SW5wdXRIYXNBdXRvZmlsbENvbnRleHRdKTsKIAotICAgIFVJ
S2V5Ym9hcmRMb2dpbkNyZWRlbnRpYWxzU3VnZ2VzdGlvbiAqY3JlZGVudGlhbFN1Z2dlc3Rpb24g
PSBjcmVhdGVVSUtleWJvYXJkTG9naW5DcmVkZW50aWFsc1N1Z2dlc3Rpb24oKTsKLSAgICBjcmVk
ZW50aWFsU3VnZ2VzdGlvbi51c2VybmFtZSA9IEAiZnJlZGVyaWsiOwotICAgIGNyZWRlbnRpYWxT
dWdnZXN0aW9uLnBhc3N3b3JkID0gQCJmYW1vcyI7CisgICAgYXV0byBjcmVkZW50aWFsU3VnZ2Vz
dGlvbiA9IGFkb3B0TlMobmV3VUlLZXlib2FyZExvZ2luQ3JlZGVudGlhbHNTdWdnZXN0aW9uKEAi
ZnJlZGVyaWsiLCBAImZhbW9zIikpOworICAgIFtbd2ViVmlldyBfYXV0b2ZpbGxJbnB1dFZpZXdd
IGluc2VydFRleHRTdWdnZXN0aW9uOmNyZWRlbnRpYWxTdWdnZXN0aW9uLmdldCgpXTsKIAotICAg
IFtjb250ZW50VmlldyBpbnNlcnRUZXh0U3VnZ2VzdGlvbjpjcmVkZW50aWFsU3VnZ2VzdGlvbl07
CisgICAgRVhQRUNUX1dLX1NUUkVRKCJmYW1vcyIsIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGlu
Z0phdmFTY3JpcHQ6QCJwYXNzd29yZC52YWx1ZSJdKTsKIAotICAgIEVYUEVDVF9XS19TVFJFUShj
cmVkZW50aWFsU3VnZ2VzdGlvbi51c2VybmFtZSwgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5n
SmF2YVNjcmlwdDpAInVzZXIudmFsdWUiXSk7Ci0gICAgRVhQRUNUX1dLX1NUUkVRKGNyZWRlbnRp
YWxTdWdnZXN0aW9uLnBhc3N3b3JkLCBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2Ny
aXB0OkAicGFzc3dvcmQudmFsdWUiXSk7Ci0KLSAgICBbd2ViVmlldyByZWxlYXNlXTsKKyAgICBb
d2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZG9jdW1lbnQuYWN0aXZlRWxl
bWVudC5ibHVyKCkiXTsKKyAgICBFWFBFQ1RfRkFMU0UoW3dlYlZpZXcgdGV4dElucHV0SGFzQXV0
b2ZpbGxDb250ZXh0XSk7CiB9CiAKIFRFU1QoV0tXZWJWaWV3QXV0b2ZpbGxUZXN0cywgVXNlcm5h
bWVBbmRQYXNzd29yZEZpZWxkU2VwYXJhdGVkQnlSYWRpb0J1dHRvbikKIHsKLSAgICBUZXN0V0tX
ZWJWaWV3ICp3ZWJWaWV3ID0gW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNH
UmVjdE1ha2UoMCwgMCwgMzIwLCA1MDApXTsKLSAgICBBdXRvZmlsbENhbmRpZGF0ZVZpZXcgKmNv
bnRlbnRWaWV3ID0gW3dlYlZpZXcgX3ByaXZhdGVUZXh0SW5wdXRdOworICAgIGF1dG8gd2ViVmll
dyA9IGFkb3B0TlMoW1tBdXRvZmlsbFRlc3RWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVj
dE1ha2UoMCwgMCwgMzIwLCA1MDApXSk7CiAgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRI
VE1MU3RyaW5nOkAiPGlucHV0IGlkPSd1c2VyJyB0eXBlPSdlbWFpbCc+PGlucHV0IHR5cGU9J3Jh
ZGlvJyBuYW1lPSdyYWRpb19idXR0b24nIHZhbHVlPSdyYWRpbyc+PGlucHV0IGlkPSdwYXNzd29y
ZCcgdHlwZT0ncGFzc3dvcmQnPiJdOwogICAgIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0ph
dmFTY3JpcHQ6QCJ1c2VyLmZvY3VzKCkiXTsKLSAgICBFWFBFQ1RfVFJVRShjb250ZW50Vmlldy5h
Y2NlcHRzQXV0b2ZpbGxlZExvZ2luQ3JlZGVudGlhbHMpOworICAgIEVYUEVDVF9UUlVFKFt3ZWJW
aWV3IHRleHRJbnB1dEhhc0F1dG9maWxsQ29udGV4dF0pOwogCiAgICAgW3dlYlZpZXcgc3RyaW5n
QnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAInBhc3N3b3JkLmZvY3VzKCkiXTsKLSAgICBFWFBFQ1Rf
VFJVRShjb250ZW50Vmlldy5hY2NlcHRzQXV0b2ZpbGxlZExvZ2luQ3JlZGVudGlhbHMpOwotCi0g
ICAgVUlLZXlib2FyZExvZ2luQ3JlZGVudGlhbHNTdWdnZXN0aW9uICpjcmVkZW50aWFsU3VnZ2Vz
dGlvbiA9IGNyZWF0ZVVJS2V5Ym9hcmRMb2dpbkNyZWRlbnRpYWxzU3VnZ2VzdGlvbigpOwotICAg
IGNyZWRlbnRpYWxTdWdnZXN0aW9uLnVzZXJuYW1lID0gQCJmcmVkZXJpayI7Ci0gICAgY3JlZGVu
dGlhbFN1Z2dlc3Rpb24ucGFzc3dvcmQgPSBAImZhbW9zIjsKKyAgICBFWFBFQ1RfVFJVRShbd2Vi
VmlldyB0ZXh0SW5wdXRIYXNBdXRvZmlsbENvbnRleHRdKTsKIAotICAgIFtjb250ZW50VmlldyBp
bnNlcnRUZXh0U3VnZ2VzdGlvbjpjcmVkZW50aWFsU3VnZ2VzdGlvbl07CisgICAgYXV0byBjcmVk
ZW50aWFsU3VnZ2VzdGlvbiA9IGFkb3B0TlMobmV3VUlLZXlib2FyZExvZ2luQ3JlZGVudGlhbHNT
dWdnZXN0aW9uKEAiZnJlZGVyaWsiLCBAImZhbW9zIikpOworICAgIFtbd2ViVmlldyBfYXV0b2Zp
bGxJbnB1dFZpZXddIGluc2VydFRleHRTdWdnZXN0aW9uOmNyZWRlbnRpYWxTdWdnZXN0aW9uLmdl
dCgpXTsKIAotICAgIEVYUEVDVF9XS19TVFJFUShjcmVkZW50aWFsU3VnZ2VzdGlvbi51c2VybmFt
ZSwgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAInVzZXIudmFsdWUiXSk7
Ci0gICAgRVhQRUNUX1dLX1NUUkVRKGNyZWRlbnRpYWxTdWdnZXN0aW9uLnBhc3N3b3JkLCBbd2Vi
VmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAicGFzc3dvcmQudmFsdWUiXSk7Cisg
ICAgRVhQRUNUX1dLX1NUUkVRKCJmcmVkZXJpayIsIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGlu
Z0phdmFTY3JpcHQ6QCJ1c2VyLnZhbHVlIl0pOworICAgIEVYUEVDVF9XS19TVFJFUSgiZmFtb3Mi
LCBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAicGFzc3dvcmQudmFsdWUi
XSk7CiAKLSAgICBbd2ViVmlldyByZWxlYXNlXTsKKyAgICBbd2ViVmlldyBzdHJpbmdCeUV2YWx1
YXRpbmdKYXZhU2NyaXB0OkAiZG9jdW1lbnQuYWN0aXZlRWxlbWVudC5ibHVyKCkiXTsKKyAgICBF
WFBFQ1RfRkFMU0UoW3dlYlZpZXcgdGV4dElucHV0SGFzQXV0b2ZpbGxDb250ZXh0XSk7CiB9CiAK
IFRFU1QoV0tXZWJWaWV3QXV0b2ZpbGxUZXN0cywgVHdvVGV4dEZpZWxkcykKIHsKLSAgICBUZXN0
V0tXZWJWaWV3ICp3ZWJWaWV3ID0gW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1l
OkNHUmVjdE1ha2UoMCwgMCwgMzIwLCA1MDApXTsKLSAgICBBdXRvZmlsbENhbmRpZGF0ZVZpZXcg
KmNvbnRlbnRWaWV3ID0gW3dlYlZpZXcgX3ByaXZhdGVUZXh0SW5wdXRdOworICAgIGF1dG8gd2Vi
VmlldyA9IGFkb3B0TlMoW1tBdXRvZmlsbFRlc3RWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNH
UmVjdE1ha2UoMCwgMCwgMzIwLCA1MDApXSk7CiAgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxv
YWRIVE1MU3RyaW5nOkAiPGlucHV0IGlkPSd0ZXh0MScgdHlwZT0nZW1haWwnPjxpbnB1dCBpZD0n
dGV4dDInIHR5cGU9J3RleHQnPiJdOwogICAgIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0ph
dmFTY3JpcHQ6QCJ0ZXh0MS5mb2N1cygpIl07Ci0gICAgRVhQRUNUX0ZBTFNFKGNvbnRlbnRWaWV3
LmFjY2VwdHNBdXRvZmlsbGVkTG9naW5DcmVkZW50aWFscyk7CisgICAgRVhQRUNUX0ZBTFNFKFt3
ZWJWaWV3IHRleHRJbnB1dEhhc0F1dG9maWxsQ29udGV4dF0pOwogCiAgICAgW3dlYlZpZXcgc3Ry
aW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAInRleHQyLmZvY3VzKCkiXTsKLSAgICBFWFBFQ1Rf
RkFMU0UoY29udGVudFZpZXcuYWNjZXB0c0F1dG9maWxsZWRMb2dpbkNyZWRlbnRpYWxzKTsKKyAg
ICBFWFBFQ1RfRkFMU0UoW3dlYlZpZXcgdGV4dElucHV0SGFzQXV0b2ZpbGxDb250ZXh0XSk7CiB9
CiAKIFRFU1QoV0tXZWJWaWV3QXV0b2ZpbGxUZXN0cywgU3RhbmRhbG9uZVBhc3N3b3JkRmllbGQp
CiB7Ci0gICAgVGVzdFdLV2ViVmlldyAqd2ViVmlldyA9IFtbVGVzdFdLV2ViVmlldyBhbGxvY10g
aW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDMyMCwgNTAwKV07Ci0gICAgQXV0b2ZpbGxD
YW5kaWRhdGVWaWV3ICpjb250ZW50VmlldyA9IFt3ZWJWaWV3IF9wcml2YXRlVGV4dElucHV0XTsK
KyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbQXV0b2ZpbGxUZXN0VmlldyBhbGxvY10gaW5p
dFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDMyMCwgNTAwKV0pOwogICAgIFt3ZWJWaWV3IHN5
bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZzpAIjxpbnB1dCBpZD0ncGFzc3dvcmQnIHR5cGU9J3Bh
c3N3b3JkJz4iXTsKICAgICBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAi
cGFzc3dvcmQuZm9jdXMoKSJdOwotICAgIEVYUEVDVF9UUlVFKGNvbnRlbnRWaWV3LmFjY2VwdHNB
dXRvZmlsbGVkTG9naW5DcmVkZW50aWFscyk7CisgICAgRVhQRUNUX1RSVUUoW3dlYlZpZXcgdGV4
dElucHV0SGFzQXV0b2ZpbGxDb250ZXh0XSk7CiAKLSAgICBVSUtleWJvYXJkTG9naW5DcmVkZW50
aWFsc1N1Z2dlc3Rpb24gKmNyZWRlbnRpYWxTdWdnZXN0aW9uID0gY3JlYXRlVUlLZXlib2FyZExv
Z2luQ3JlZGVudGlhbHNTdWdnZXN0aW9uKCk7Ci0gICAgY3JlZGVudGlhbFN1Z2dlc3Rpb24udXNl
cm5hbWUgPSBAImZyZWRlcmlrIjsKLSAgICBjcmVkZW50aWFsU3VnZ2VzdGlvbi5wYXNzd29yZCA9
IEAiZmFtb3MiOworICAgIGF1dG8gY3JlZGVudGlhbFN1Z2dlc3Rpb24gPSBhZG9wdE5TKG5ld1VJ
S2V5Ym9hcmRMb2dpbkNyZWRlbnRpYWxzU3VnZ2VzdGlvbihAImZyZWRlcmlrIiwgQCJmYW1vcyIp
KTsKKyAgICBbW3dlYlZpZXcgX2F1dG9maWxsSW5wdXRWaWV3XSBpbnNlcnRUZXh0U3VnZ2VzdGlv
bjpjcmVkZW50aWFsU3VnZ2VzdGlvbi5nZXQoKV07CiAKLSAgICBbY29udGVudFZpZXcgaW5zZXJ0
VGV4dFN1Z2dlc3Rpb246Y3JlZGVudGlhbFN1Z2dlc3Rpb25dOworICAgIEVYUEVDVF9XS19TVFJF
USgiZmFtb3MiLCBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAicGFzc3dv
cmQudmFsdWUiXSk7CiAKLSAgICBFWFBFQ1RfV0tfU1RSRVEoY3JlZGVudGlhbFN1Z2dlc3Rpb24u
cGFzc3dvcmQsIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJwYXNzd29y
ZC52YWx1ZSJdKTsKLQotICAgIFt3ZWJWaWV3IHJlbGVhc2VdOworICAgIFt3ZWJWaWV3IHN0cmlu
Z0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJkb2N1bWVudC5hY3RpdmVFbGVtZW50LmJsdXIoKSJd
OworICAgIEVYUEVDVF9GQUxTRShbd2ViVmlldyB0ZXh0SW5wdXRIYXNBdXRvZmlsbENvbnRleHRd
KTsKIH0KIAogVEVTVChXS1dlYlZpZXdBdXRvZmlsbFRlc3RzLCBTdGFuZGFsb25lVGV4dEZpZWxk
KQogewotICAgIFRlc3RXS1dlYlZpZXcgKndlYlZpZXcgPSBbW1Rlc3RXS1dlYlZpZXcgYWxsb2Nd
IGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCAzMjAsIDUwMCldOwotICAgIEF1dG9maWxs
Q2FuZGlkYXRlVmlldyAqY29udGVudFZpZXcgPSBbd2ViVmlldyBfcHJpdmF0ZVRleHRJbnB1dF07
CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW0F1dG9maWxsVGVzdFZpZXcgYWxsb2NdIGlu
aXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCAzMjAsIDUwMCldKTsKICAgICBbd2ViVmlldyBz
eW5jaHJvbm91c2x5TG9hZEhUTUxTdHJpbmc6QCI8aW5wdXQgaWQ9J3RleHRmaWVsZCcgdHlwZT0n
dGV4dCc+Il07CiAgICAgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAInRl
eHRmaWVsZC5mb2N1cygpIl07Ci0gICAgRVhQRUNUX0ZBTFNFKGNvbnRlbnRWaWV3LmFjY2VwdHNB
dXRvZmlsbGVkTG9naW5DcmVkZW50aWFscyk7Ci0KLSAgICBbd2ViVmlldyByZWxlYXNlXTsKKyAg
ICBFWFBFQ1RfRkFMU0UoW3dlYlZpZXcgdGV4dElucHV0SGFzQXV0b2ZpbGxDb250ZXh0XSk7CiB9
CiAKIFRFU1QoV0tXZWJWaWV3QXV0b2ZpbGxUZXN0cywgQWNjb3VudENyZWF0aW9uUGFnZSkKIHsK
LSAgICBUZXN0V0tXZWJWaWV3ICp3ZWJWaWV3ID0gW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0
V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgMzIwLCA1MDApXTsKLSAgICBBdXRvZmlsbENhbmRp
ZGF0ZVZpZXcgKmNvbnRlbnRWaWV3ID0gW3dlYlZpZXcgX3ByaXZhdGVUZXh0SW5wdXRdOworICAg
IGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tBdXRvZmlsbFRlc3RWaWV3IGFsbG9jXSBpbml0V2l0
aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgMzIwLCA1MDApXSk7CiAgICAgW3dlYlZpZXcgc3luY2hy
b25vdXNseUxvYWRIVE1MU3RyaW5nOkAiPGlucHV0IGlkPSd1c2VyJyB0eXBlPSdlbWFpbCc+PGlu
cHV0IGlkPSdwYXNzd29yZCcgdHlwZT0ncGFzc3dvcmQnPjxpbnB1dCBpZD0nY29uZmlybV9wYXNz
d29yZCcgdHlwZT0ncGFzc3dvcmQnPiJdOwogICAgIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGlu
Z0phdmFTY3JpcHQ6QCJ1c2VyLmZvY3VzKCkiXTsKLSAgICBFWFBFQ1RfRkFMU0UoY29udGVudFZp
ZXcuYWNjZXB0c0F1dG9maWxsZWRMb2dpbkNyZWRlbnRpYWxzKTsKKyAgICBFWFBFQ1RfRkFMU0Uo
W3dlYlZpZXcgdGV4dElucHV0SGFzQXV0b2ZpbGxDb250ZXh0XSk7CiAKICAgICBbd2ViVmlldyBz
dHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAicGFzc3dvcmQuZm9jdXMoKSJdOwotICAgIEVY
UEVDVF9GQUxTRShjb250ZW50Vmlldy5hY2NlcHRzQXV0b2ZpbGxlZExvZ2luQ3JlZGVudGlhbHMp
OworICAgIEVYUEVDVF9GQUxTRShbd2ViVmlldyB0ZXh0SW5wdXRIYXNBdXRvZmlsbENvbnRleHRd
KTsKIAogICAgIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJjb25maXJt
X3Bhc3N3b3JkLmZvY3VzKCkiXTsKLSAgICBFWFBFQ1RfRkFMU0UoY29udGVudFZpZXcuYWNjZXB0
c0F1dG9maWxsZWRMb2dpbkNyZWRlbnRpYWxzKTsKLQotICAgIFt3ZWJWaWV3IHJlbGVhc2VdOwor
ICAgIEVYUEVDVF9GQUxTRShbd2ViVmlldyB0ZXh0SW5wdXRIYXNBdXRvZmlsbENvbnRleHRdKTsK
IH0KIAorVEVTVChXS1dlYlZpZXdBdXRvZmlsbFRlc3RzLCBBdXRvZmlsbFJlcXVpcmVzSW5wdXRT
ZXNzaW9uKQoreworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tBdXRvZmlsbFRlc3RWaWV3
IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgMzIwLCA1MDApXSk7CisgICAg
WyhUZXN0SW5wdXREZWxlZ2F0ZSAqKVt3ZWJWaWV3IF9pbnB1dERlbGVnYXRlXSBzZXRJbnB1dFNl
c3Npb25SZXF1aXJlc1VzZXJJbnRlcmFjdGlvbjpZRVNdOworICAgIFt3ZWJWaWV3IHN5bmNocm9u
b3VzbHlMb2FkSFRNTFN0cmluZzpAIjxpbnB1dCBpZD0ndXNlcicgdHlwZT0nZW1haWwnPjxpbnB1
dCBpZD0ncGFzc3dvcmQnIHR5cGU9J3Bhc3N3b3JkJz4iXTsKKyAgICBbd2ViVmlldyBzdHJpbmdC
eUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAidXNlci5mb2N1cygpIl07CisKKyAgICBFWFBFQ1RfRkFM
U0UoW3dlYlZpZXcgdGV4dElucHV0SGFzQXV0b2ZpbGxDb250ZXh0XSk7Cit9CiAKIH0gLy8gbmFt
ZXNwYWNlIFRlc3RXZWJLaXRBUEkKIAotI2VuZGlmIC8vIFdLX0FQSV9FTkFCTEVEICYmIFBMQVRG
T1JNKElPUykgJiYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKKyNlbmRpZiAvLyBXS19BUElfRU5B
QkxFRCAmJiBQTEFURk9STShJT1MpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2lv
cy9EYXRhSW50ZXJhY3Rpb25TaW11bGF0b3IubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9E
YXRhSW50ZXJhY3Rpb25TaW11bGF0b3IubW0KaW5kZXggZjFkZjc4NjhjNjNkMmMwY2RjM2JhMTYz
NDVjZWVjZTg1ZWZlZTMxZi4uNTljNGM3ZDA4OGE3MWFmNjIyZTY0NGU4MTc2YjE5MjI3ZWJhZDUx
YSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9pb3MvRGF0YUludGVyYWN0aW9uU2lt
dWxhdG9yLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvaW9zL0RhdGFJbnRlcmFjdGlvblNp
bXVsYXRvci5tbQpAQCAtNjM4LDcgKzYzOCw3IEBAIC0gKE5TQXJyYXk8VUlEcmFnSXRlbSAqPiAq
KV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHdpbGxQZXJmb3JtRHJvcFdpdGhTZXNzCiAK
ICNwcmFnbWEgbWFyayAtIF9XS0lucHV0RGVsZWdhdGUKIAotLSAoQk9PTClfd2ViVmlldzooV0tX
ZWJWaWV3ICopd2ViVmlldyBmb2N1c1Nob3VsZFN0YXJ0SW5wdXRTZXNzaW9uOihpZCA8X1dLRm9j
dXNlZEVsZW1lbnRJbmZvPilpbmZvCistIChCT09MKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJW
aWV3IElucHV0U2Vzc2lvblJlcXVpcmVzVXNlckludGVyYWN0aW9uOihpZCA8X1dLRm9jdXNlZEVs
ZW1lbnRJbmZvPilpbmZvCiB7CiAgICAgcmV0dXJuIF9hbGxvd3NGb2N1c1RvU3RhcnRJbnB1dFNl
c3Npb247CiB9CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9VSUtpdFNQSS5o
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9pb3MvVUlLaXRTUEkuaAppbmRleCBhOGM0ZTRjYjMxY2Yx
ZjYzN2JkOTVkOTZkY2JhYTdlMDU0ZTg4MTgwLi5jMzMzYmE4MGY1NjMyNGNmNDk0NTMyM2ZiZmM2
NjdiZDkzNGE2MTk2IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9VSUtpdFNQ
SS5oCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvaW9zL1VJS2l0U1BJLmgKQEAgLTI3LDIzICsy
NywxNiBAQAogCiAjaW1wb3J0IDxVSUtpdC9VSVRleHRJbnB1dFRyYWl0cy5oPgogCi0jaWYgX19J
UEhPTkVfT1NfVkVSU0lPTl9NQVhfQUxMT1dFRCA+PSAxMTAwMDAKIEBwcm90b2NvbCBVSURyYWdT
ZXNzaW9uOwogQGNsYXNzIFVJRHJhZ0ludGVyYWN0aW9uOwogQGNsYXNzIFVJRHJhZ0l0ZW07Ci0j
ZW5kaWYKIAotI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspICYmIF9fSVBIT05FX09TX1ZFUlNJ
T05fTUFYX0FMTE9XRUQgPj0gMTEwMDAwCisjaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKIAog
I2ltcG9ydCA8VUlLaXQvVUlBcHBsaWNhdGlvbl9Qcml2YXRlLmg+CiAjaW1wb3J0IDxVSUtpdC9V
SURyYWdJbnRlcmFjdGlvbl9Qcml2YXRlLmg+CiAjaW1wb3J0IDxVSUtpdC9VSVRleHRJbnB1dFRy
YWl0c19Qcml2YXRlLmg+Ci0jaW1wb3J0IDxVSUtpdC9VSVRleHRTdWdnZXN0aW9uLmg+Ci0KLQot
QHByb3RvY29sIFVJVGV4dElucHV0VHJhaXRzX1ByaXZhdGVfU3RhZ2luZ18zNDU4MzYyOCA8TlNP
YmplY3QsIFVJVGV4dElucHV0VHJhaXRzPgotQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5
KSBCT09MIGFjY2VwdHNBdXRvZmlsbGVkTG9naW5DcmVkZW50aWFsczsKLUBlbmQKKyNpbXBvcnQg
PFVJS2l0L1VJVGV4dElucHV0X1ByaXZhdGUuaD4KIAogI2Vsc2UKIApAQCAtNTMsMjMgKzQ2LDQw
IEBAIHZvaWQgVUlBcHBsaWNhdGlvbkluaXRpYWxpemUodm9pZCk7CiAKIFdURl9FWFRFUk5fQ19F
TkQKIAotI2lmIF9fSVBIT05FX09TX1ZFUlNJT05fTUFYX0FMTE9XRUQgPj0gMTEwMDAwCitAaW50
ZXJmYWNlIFVJVGV4dFN1Z2dlc3Rpb24gOiBOU09iamVjdAorCitAZW5kCisKIEBwcm90b2NvbCBV
SURyYWdJbnRlcmFjdGlvbkRlbGVnYXRlX0ZvcldlYktpdE9ubHkgPFVJRHJhZ0ludGVyYWN0aW9u
RGVsZWdhdGU+CiBAb3B0aW9uYWwKIC0gKHZvaWQpX2RyYWdJbnRlcmFjdGlvbjooVUlEcmFnSW50
ZXJhY3Rpb24gKilpbnRlcmFjdGlvbiBwcmVwYXJlRm9yU2Vzc2lvbjooaWQ8VUlEcmFnU2Vzc2lv
bj4pc2Vzc2lvbiBjb21wbGV0aW9uOih2b2lkKF4pKHZvaWQpKWNvbXBsZXRpb247CiBAZW5kCi0j
ZW5kaWYgLy8gX19JUEhPTkVfT1NfVkVSU0lPTl9NQVhfQUxMT1dFRCA+PSAxMTAwMDAKIAogQHBy
b3RvY29sIFVJVGV4dElucHV0VHJhaXRzX1ByaXZhdGUgPE5TT2JqZWN0LCBVSVRleHRJbnB1dFRy
YWl0cz4KLUBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgQk9PTCBhY2NlcHRzQXV0b2Zp
bGxlZExvZ2luQ3JlZGVudGlhbHM7CitAZW5kCisKK0Bwcm90b2NvbCBVSVRleHRJbnB1dFByaXZh
dGUgPFVJVGV4dElucHV0LCBVSVRleHRJbnB1dFRyYWl0c19Qcml2YXRlPgorLSAodm9pZClpbnNl
cnRUZXh0U3VnZ2VzdGlvbjooVUlUZXh0U3VnZ2VzdGlvbiAqKXRleHRTdWdnZXN0aW9uOwogQGVu
ZAogCiAjZW5kaWYKIAotI2lmIF9fSVBIT05FX09TX1ZFUlNJT05fTUFYX0FMTE9XRUQgPj0gMTEw
MDAwCitAcHJvdG9jb2wgVUlUZXh0SW5wdXRUcmFpdHNfUHJpdmF0ZV9Qcm9wb3NlZF9TUElfMzQ1
ODM2MjggPFVJVGV4dElucHV0UHJpdmF0ZT4KKy0gKE5TRGljdGlvbmFyeSAqKV9hdXRvZmlsbENv
bnRleHQ7CitAZW5kCisKIEBwcm90b2NvbCBVSURyYWdJbnRlcmFjdGlvbkRlbGVnYXRlX1Byb3Bv
c2VkX1NQSV8zMzE0NjgwMyA8VUlEcmFnSW50ZXJhY3Rpb25EZWxlZ2F0ZT4KIC0gKHZvaWQpX2Ry
YWdJbnRlcmFjdGlvbjooVUlEcmFnSW50ZXJhY3Rpb24gKilpbnRlcmFjdGlvbiBpdGVtc0ZvckFk
ZGluZ1RvU2Vzc2lvbjooaWQgPFVJRHJhZ1Nlc3Npb24+KXNlc3Npb24gd2l0aFRvdWNoQXRQb2lu
dDooQ0dQb2ludClwb2ludCBjb21wbGV0aW9uOih2b2lkKF4pKE5TQXJyYXk8VUlEcmFnSXRlbSAq
PiAqKSljb21wbGV0aW9uOwogQGVuZAotI2VuZGlmIC8vIF9fSVBIT05FX09TX1ZFUlNJT05fTUFY
X0FMTE9XRUQgPj0gMTEwMDAwCisKKyNpZiBfX2hhc19pbmNsdWRlKDxVSUtpdC9VSUtleWJvYXJk
TG9naW5DcmVkZW50aWFsc1N1Z2dlc3Rpb24uaD4pCisvLyBGSVhNRTogTW92ZSB0aGlzIGltcG9y
dCB1bmRlciBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKSBvbmNlIDxyZGFyOi8vcHJvYmxlbS8zNDU4
MzYyOD4gbGFuZHMgaW4gdGhlIFNESy4KKyNpbXBvcnQgPFVJS2l0L1VJS2V5Ym9hcmRMb2dpbkNy
ZWRlbnRpYWxzU3VnZ2VzdGlvbi5oPgorI2Vsc2UKK0BpbnRlcmZhY2UgVUlLZXlib2FyZExvZ2lu
Q3JlZGVudGlhbHNTdWdnZXN0aW9uIDogVUlUZXh0U3VnZ2VzdGlvbgorQHByb3BlcnR5IChub25h
dG9taWMsIGFzc2lnbikgTlNTdHJpbmcgKnVzZXJuYW1lOworQHByb3BlcnR5IChub25hdG9taWMs
IGFzc2lnbikgTlNTdHJpbmcgKnBhc3N3b3JkOworQGVuZAorI2VuZGlmCiAKICNlbmRpZiAvLyBQ
TEFURk9STShJT1MpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>323018</attachid>
            <date>2017-10-06 08:36:36 -0700</date>
            <delta_ts>2017-10-06 11:53:04 -0700</delta_ts>
            <desc>Remove unintended change in DataInteractionTests.</desc>
            <filename>bug-177917-20171006083635.patch</filename>
            <type>text/plain</type>
            <size>27869</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIyODg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGM1OGI3ZTQ3OTIyNmQ3NjBj
MTYxNmFmMjkyZWJjYWRkOGI3N2FjNGYuLjhmNDI3ZTlmZTI5OTA2OTY2YzYxZTc3Mzk3ZmNkMzM3
YTI3NjI0MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDkgQEAKKzIwMTctMTAtMDUgIFdlbnNvbiBI
c2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgW2lPU10gVHdlYWsgc3Vw
cG9ydCBmb3IgY2xhc3NpZnlpbmcgZm9ybSBjb250cm9scyAoZm9sbG93dXAgdG8gcjIyMjQ4NykK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NzkxNwor
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzQ4MjAxMjI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBmb2xsb3dzIHVwIHdpdGggPGh0
dHA6Ly90cmFjLndlYmtpdC5vcmcvcjIyMjQ4Nz4uIEl0IGNvbWJpbmVzIHRoZSBmdW5jdGlvbmFs
aXR5IG9mIHR3byBTUEkgaG9va3MKKyAgICAgICAgaW1wbGVtZW50ZWQgb24gV0tDb250ZW50Vmll
dyBpbnRvIGEgc2luZ2xlIG1ldGhvZCB0aGF0IHZlbmRzIGEgY29udGV4dCBkaWN0aW9uYXJ5LCBh
bmQgYWRkaXRpb25hbGx5IGFkZHJlc3NlcyBhbgorICAgICAgICBpc3N1ZSB3aXRoIHRoZSBvcmln
aW5hbCBpbXBsZW1lbnRhdGlvbiwgd2hlcmVpbiBzb21lIGNhY2hlZCBzdGF0ZSBvbiBXZWJQYWdl
UHJveHkgaXMgc2V0IHVwb24gc3RhcnRpbmcgbm9kZQorICAgICAgICBhc3Npc3RhbmNlLCBidXQg
aXMgbmV2ZXIgdW5zZXQgd2hlbiBzdG9wcGluZyBub2RlIGFzc2lzdGFuY2UsIG5vciBzZXQgYW55
d2hlcmUgZWxzZS4gU2VlIHBlci1tZXRob2QgY29tbWVudHMgZm9yCisgICAgICAgIG1vcmUgZGV0
YWlsLgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorCisgICAgICAgIFJl
bW92ZSBtZW1iZXJzIG1fYWNjZXB0c0F1dG9maWxsZWRMb2dpbkNyZWRlbnRpYWxzIGFuZCBtX3Jl
cHJlc2VudGluZ1BhZ2VVUkwgZnJvbSBXZWJQYWdlUHJveHkuIFRoaXMgc3RhdGUgaXMKKyAgICAg
ICAgcmV0cmlldmVkIGZyb20gdGhlIEFzc2lzdGVkTm9kZUluZm9ybWF0aW9uIHN0cnVjdCB3aGVu
IHN0YXJ0aW5nIG5vZGUgYXNzaXN0YW5jZSwgYnV0IGlzIG5ldmVyIHJlc2V0IGFueXdoZXJlCisg
ICAgICAgIGVsc2UuIEluc3RlYWQgb2YgaW50cm9kdWNpbmcgbmV3IG1lbWJlcnMgdG8gcmVtZW1i
ZXIgdGhpcyBzdGF0ZSwgd2UgY2FuIGp1c3QgdXNlIHRoZSBXS0NvbnRlbnRWaWV3J3MgY3VycmVu
dAorICAgICAgICBhc3Npc3RlZCBub2RlIGluZm9ybWF0aW9uLgorCisgICAgICAgIFRoaXMgYWxz
byBtZWFucyB0aGF0IHByb2dyYW1tYXRpY2FsbHkgZm9jdXNpbmcgZm9ybXMgKHdpdGhvdXQgdXNl
ciBnZXN0dXJlKSB3aWxsIG5vIGxvbmdlciBjYXVzZSBXS0NvbnRlbnRWaWV3CisgICAgICAgIHRv
IGFjY2VwdCBhdXRvZmlsbGVkIGxvZ2luIGNyZWRlbnRpYWxzLCBzaW5jZSB3ZSBiYWlsIG91dCBv
ZiBub2RlIGFzc2lzdGFuY2UgYW5kIGRvbid0IGJlZ2luIGFuIGlucHV0IHNlc3Npb24uCisKKyAg
ICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcubW06CisgICAgICAgICgtW1dLQ29u
dGVudFZpZXcgYWNjZXB0c0F1dG9maWxsZWRMb2dpbkNyZWRlbnRpYWxzXSk6IERlbGV0ZWQuCisg
ICAgICAgICgtW1dLQ29udGVudFZpZXcgcmVwcmVzZW50aW5nUGFnZVVSTF0pOiBEZWxldGVkLgor
ICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tOgorICAg
ICAgICAoLVtXS0NvbnRlbnRWaWV3IF9hdXRvZmlsbENvbnRleHRdKToKKworICAgICAgICBNZXJn
ZSBmdW5jdGlvbmFsaXR5IG9mIHRoZSBwcmV2aW91cyB0d28gU1BJIGhvb2tzLCBzdWNoIHRoYXQg
LV9hdXRvZmlsbENvbnRleHQgd2lsbCByZXR1cm4gYSBub24tbnVsbCBkaWN0aW9uYXJ5CisgICAg
ICAgIGNvbnRhaW5pbmcgdGhlIFVSTCBvZiB0aGUgZm9jdXNlZCBlbGVtZW50J3MgZG9jdW1lbnQg
aWYgYW5kIG9ubHkgaWYgV0tDb250ZW50VmlldyBhY2NlcHRzIGF1dG9maWxsZWQgbG9naW4KKyAg
ICAgICAgY3JlZGVudGlhbHMsIGFuZCB0aGVyZSBleGlzdHMgYSByZXByZXNlbnRpbmcgcGFnZSBV
UkwuCisKKyAgICAgICAgV2hlbiB0aGUgcGFnZSBzdG9wcyBhc3Npc3RpbmcgdGhlIGZvY3VzZWQg
bm9kZSwgd2Ugc2V0IHRoZSBBc3Npc3RlZE5vZGVJbmZvcm1hdGlvbidzIGVsZW1lbnQgdHlwZSB0
byBOb25lLCBzbyB3ZQorICAgICAgICBhZGRpdGlvbmFsbHkgYmFpbCBhbmQgcmV0dXJuIG5pbCBp
ZiB0aGUgZWxlbWVudCB0eXBlIGlzIE5vbmUuIEFzIGFuIGFzaWRlLCBpdCBzZWVtcyBhIG1vcmUg
cmVhc29uYWJsZSBhcHByb2FjaCB0bworICAgICAgICByZXNldHRpbmcgc3RhdGUgdXBvbiBzdG9w
cGluZyBub2RlIGFzc2lzdGFuY2UgaXMgdG8ganVzdCBjb21wbGV0ZWx5IHJlc2V0IF9hc3Npc3Rl
ZE5vZGVJbmZvcm1hdGlvbiB0byBpdHMgaW5pdGlhbAorICAgICAgICB2YWx1ZSwgaS5lLiB2aWEg
X2Fzc2lzdGVkTm9kZUluZm9ybWF0aW9uID0geyB9LiBJdCdzIG5vdCBjbGVhciB3aGV0aGVyIHRo
ZXJlIGFyZSBiZWhhdmlvcnMgcmVseWluZyBvbiB0aGUgZmFjdAorICAgICAgICB0aGF0IGFsbCBt
ZW1iZXJzIGJ1dCB0aGUgZWxlbWVudCB0eXBlIGluIHRoZSBjb250ZW50IHZpZXcncyBhc3Npc3Rl
ZCBub2RlIGluZm9ybWF0aW9uIGNvdWxkIGJlIHN0YWxlLCBzbyB0aGlzCisgICAgICAgIHNlZW1z
IHdvcnRoeSBvZiBzb21lIGludmVzdGlnYXRpb24uCisKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9z
L1dlYlBhZ2VQcm94eUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzdGFy
dEFzc2lzdGluZ05vZGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmFjY2VwdHNB
dXRvZmlsbGVkTG9naW5DcmVkZW50aWFscyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6cmVwcmVzZW50aW5nUGFnZVVSTCk6IERlbGV0ZWQuCisKIDIwMTctMTAtMDQg
IERhdmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgdW51
c2VkIHZhcmlhYmxlcyBpbiBsYW1iZGFzIGZvciBuZXR3b3JrIHByb2Nlc3MgY2FjaGUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCA3M2E1NjliNTA1ZmYyZGI1NzllNTg1Nzc4ZGU1NTdm
ZjViMjM0MzE5Li43ZTcwYjBiYjg4OTlkOGNiZDA1NGJlODhhMjRlZTg3ZTI5MmE2NzRlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTctMTAtMDUgIFdl
bnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgW2lPU10gVHdl
YWsgc3VwcG9ydCBmb3IgY2xhc3NpZnlpbmcgZm9ybSBjb250cm9scyAoZm9sbG93dXAgdG8gcjIy
MjQ4NykKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3
NzkxNworICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzQ4MjAxMjI+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50IF9hdXRvZmlsbENvbnRl
eHQgaW4gbGVnYWN5IFdlYktpdCwgYW5kIHJlbW92ZSB0aGUgdHdvIHByZXZpb3VzIFNQSSBob29r
cy4KKworICAgICAgICAqIERPTS9ET01IVE1MSW5wdXRFbGVtZW50Lm1tOgorICAgICAgICAoLVtE
T01IVE1MSW5wdXRFbGVtZW50IF9hdXRvZmlsbENvbnRleHRdKToKKyAgICAgICAgKC1bRE9NSFRN
TElucHV0RWxlbWVudCBhY2NlcHRzQXV0b2ZpbGxlZExvZ2luQ3JlZGVudGlhbHNdKTogRGVsZXRl
ZC4KKyAgICAgICAgKC1bRE9NSFRNTElucHV0RWxlbWVudCByZXByZXNlbnRpbmdQYWdlVVJMXSk6
IERlbGV0ZWQuCisKIDIwMTctMDktMjkgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5j
b20+CiAKICAgICAgICAgRm9sbG93LXVwIHRvIGh0dHBzOi8vdHJhYy53ZWJraXQub3JnL3IyMjIy
MzkgdG8gZml4IGNyYXNoZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmlu
ZGV4IDcwNThjOGUxMTBiYTNmYjczM2I2OWUzY2Q1MTFkY2RmZjViYzFiMWQuLjcwNWVmYmZhY2Zl
ODM0MmU1NThlOGQ3NzVhNTAzOGM1ZjJhYTNmMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5oCkBAIC01NTksOCArNTU5LDYgQEAgcHVibGljOgogICAgIHZvaWQgc2V0SXNT
Y3JvbGxpbmdPclpvb21pbmcoYm9vbCk7CiAgICAgdm9pZCByZXF1ZXN0UmVjdHNGb3JHcmFudWxh
cml0eVdpdGhTZWxlY3Rpb25PZmZzZXQoV2ViQ29yZTo6VGV4dEdyYW51bGFyaXR5LCB1aW50MzJf
dCBvZmZzZXQsIFdURjo6RnVuY3Rpb248dm9pZChjb25zdCBWZWN0b3I8V2ViQ29yZTo6U2VsZWN0
aW9uUmVjdD4mLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CiAgICAgdm9pZCByZXF1ZXN0UmVj
dHNBdFNlbGVjdGlvbk9mZnNldFdpdGhUZXh0KGludDMyX3Qgb2Zmc2V0LCBjb25zdCBTdHJpbmcm
LCBXVEY6OkZ1bmN0aW9uPHZvaWQoY29uc3QgVmVjdG9yPFdlYkNvcmU6OlNlbGVjdGlvblJlY3Q+
JiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOwotICAgIGJvb2wgYWNjZXB0c0F1dG9maWxsZWRM
b2dpbkNyZWRlbnRpYWxzKCk7Ci0gICAgV2ViQ29yZTo6VVJMIHJlcHJlc2VudGluZ1BhZ2VVUkwo
KTsKICAgICB2b2lkIGF1dG9maWxsTG9naW5DcmVkZW50aWFscyhjb25zdCBTdHJpbmcmIHVzZXJu
YW1lLCBjb25zdCBTdHJpbmcmIHBhc3N3b3JkKTsKICNpZiBFTkFCTEUoREFUQV9JTlRFUkFDVElP
TikKICAgICB2b2lkIGRpZFBlcmZvcm1EYXRhSW50ZXJhY3Rpb25Db250cm9sbGVyT3BlcmF0aW9u
KGJvb2wgaGFuZGxlZCk7CkBAIC0xOTk2LDggKzE5OTQsNiBAQCBwcml2YXRlOgogICAgIGJvb2wg
bV9oYXNEZWZlcnJlZFN0YXJ0QXNzaXN0aW5nTm9kZSB7IGZhbHNlIH07CiAgICAgc3RkOjp1bmlx
dWVfcHRyPE5vZGVBc3Npc3RhbmNlQXJndW1lbnRzPiBtX2RlZmVycmVkTm9kZUFzc2lzdGFuY2VB
cmd1bWVudHM7CiAgICAgYm9vbCBtX2ZvcmNlQWx3YXlzVXNlclNjYWxhYmxlIHsgZmFsc2UgfTsK
LSAgICBib29sIG1fYWNjZXB0c0F1dG9maWxsZWRMb2dpbkNyZWRlbnRpYWxzIHsgZmFsc2UgfTsK
LSAgICBXZWJDb3JlOjpVUkwgbV9yZXByZXNlbnRpbmdQYWdlVVJMOwogI2VuZGlmCiAKICNpZiBF
TkFCTEUoUE9JTlRFUl9MT0NLKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL1dLQ29udGVudFZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250
ZW50Vmlldy5tbQppbmRleCA2ODVlMzk0NjQ1Zjc3YjgwMDhkNzg4YWQ5NTU5MmQ2NGNiOWViYTFk
Li5kNjFjZWRmYzE0ZTI2ZWM0ODNlMGU5MGMxODYyN2YyMzQxZTk1MGMzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlldy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlldy5tbQpAQCAtMjU4LDE2ICsyNTgsNiBA
QCAtIChXZWJQYWdlUHJveHkqKXBhZ2UKICAgICByZXR1cm4gX3BhZ2UuZ2V0KCk7CiB9CiAKLS0g
KEJPT0wpYWNjZXB0c0F1dG9maWxsZWRMb2dpbkNyZWRlbnRpYWxzCi17Ci0gICAgcmV0dXJuIF9w
YWdlLT5hY2NlcHRzQXV0b2ZpbGxlZExvZ2luQ3JlZGVudGlhbHMoKTsKLX0KLQotLSAoTlNVUkwg
KilyZXByZXNlbnRpbmdQYWdlVVJMCi17Ci0gICAgcmV0dXJuIF9wYWdlLT5yZXByZXNlbnRpbmdQ
YWdlVVJMKCk7Ci19Ci0KIC0gKHZvaWQpd2lsbE1vdmVUb1dpbmRvdzooVUlXaW5kb3cgKiluZXdX
aW5kb3cKIHsKICAgICBOU05vdGlmaWNhdGlvbkNlbnRlciAqZGVmYXVsdENlbnRlciA9IFtOU05v
dGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0gYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCmluZGV4IGZhOWE4
MTI4YWRjMGEwMWMwN2U4YTk0ZTJiZTg4YzJiYzBkYjRlMGEuLjBiYTMwODhhODQ3ZWVlNmYyNGJh
YjI5NDkyN2ZjMTJhYjEyYWRiMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQpAQCAtNDUxOCw2ICs0NTE4LDE4
IEBAIC0gKE5TQXJyYXk8VUlEcmFnSXRlbSAqPiAqKV9pdGVtc0ZvckJlZ2lubmluZ09yQWRkaW5n
VG9TZXNzaW9uV2l0aFJlZ2lzdHJhdGlvbkxpCiAgICAgcmV0dXJuIGRyYWdJdGVtczsKIH0KIAor
LSAoTlNEaWN0aW9uYXJ5ICopX2F1dG9maWxsQ29udGV4dAoreworICAgIGlmIChfYXNzaXN0ZWRO
b2RlSW5mb3JtYXRpb24uZWxlbWVudFR5cGUgPT0gSW5wdXRUeXBlOjpOb25lIHx8ICFfYXNzaXN0
ZWROb2RlSW5mb3JtYXRpb24uYWNjZXB0c0F1dG9maWxsZWRMb2dpbkNyZWRlbnRpYWxzKQorICAg
ICAgICByZXR1cm4gbmlsOworCisgICAgTlNVUkwgKnBsYXRmb3JtVVJMID0gX2Fzc2lzdGVkTm9k
ZUluZm9ybWF0aW9uLnJlcHJlc2VudGluZ1BhZ2VVUkw7CisgICAgaWYgKCFwbGF0Zm9ybVVSTCkK
KyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIHJldHVybiBAeyBAIl9XZWJWaWV3VVJMIiA6IHBs
YXRmb3JtVVJMIH07Cit9CisKICNwcmFnbWEgbWFyayAtIFVJRHJhZ0ludGVyYWN0aW9uRGVsZWdh
dGUKIAogLSAoQk9PTClfZHJhZ0ludGVyYWN0aW9uOihVSURyYWdJbnRlcmFjdGlvbiAqKWludGVy
YWN0aW9uIHNob3VsZERlbGF5Q29tcGV0aW5nR2VzdHVyZVJlY29nbml6ZXI6KFVJR2VzdHVyZVJl
Y29nbml6ZXIgKiljb21wZXRpbmdHZXN0dXJlUmVjb2duaXplcgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KaW5kZXggZDNlNjdkN2UzNTM5MjgxNWEx
MzUxYWNiMWM0NmQzMTZlNDdiYTVhNC4uYWFiMDdhN2UzMWI3ZWRkN2U3YzNlN2MzMTVkNTFiN2Uw
NTcxMzhlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQ
cm94eUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5
SU9TLm1tCkBAIC04OTEsOCArODkxLDYgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZEdldFRhcEhp
Z2hsaWdodEdlb21ldHJpZXModWludDY0X3QgcmVxdWVzdElELCBjb25zdCBXZWJDb3IKIAogdm9p
ZCBXZWJQYWdlUHJveHk6OnN0YXJ0QXNzaXN0aW5nTm9kZShjb25zdCBBc3Npc3RlZE5vZGVJbmZv
cm1hdGlvbiYgaW5mb3JtYXRpb24sIGJvb2wgdXNlcklzSW50ZXJhY3RpbmcsIGJvb2wgYmx1clBy
ZXZpb3VzTm9kZSwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQogewotICAgIG1fYWNjZXB0c0F1
dG9maWxsZWRMb2dpbkNyZWRlbnRpYWxzID0gaW5mb3JtYXRpb24uYWNjZXB0c0F1dG9maWxsZWRM
b2dpbkNyZWRlbnRpYWxzOwotICAgIG1fcmVwcmVzZW50aW5nUGFnZVVSTCA9IGluZm9ybWF0aW9u
LnJlcHJlc2VudGluZ1BhZ2VVUkw7CiAgICAgQVBJOjpPYmplY3QqIHVzZXJEYXRhT2JqZWN0ID0g
cHJvY2VzcygpLnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0KCkpLmdl
dCgpOwogICAgIGlmIChtX2VkaXRvclN0YXRlLmlzTWlzc2luZ1Bvc3RMYXlvdXREYXRhKSB7CiAg
ICAgICAgIG1fZGVmZXJyZWROb2RlQXNzaXN0YW5jZUFyZ3VtZW50cyA9IHN0ZDo6bWFrZV91bmlx
dWU8Tm9kZUFzc2lzdGFuY2VBcmd1bWVudHM+KE5vZGVBc3Npc3RhbmNlQXJndW1lbnRzIHsgaW5m
b3JtYXRpb24sIHVzZXJJc0ludGVyYWN0aW5nLCBibHVyUHJldmlvdXNOb2RlLCB1c2VyRGF0YU9i
amVjdCB9KTsKQEAgLTkxMiwxNiArOTEwLDYgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnN0b3BBc3Np
c3RpbmdOb2RlKCkKICAgICBtX3BhZ2VDbGllbnQuc3RvcEFzc2lzdGluZ05vZGUoKTsKIH0KIAot
Ym9vbCBXZWJQYWdlUHJveHk6OmFjY2VwdHNBdXRvZmlsbGVkTG9naW5DcmVkZW50aWFscygpCi17
Ci0gICAgcmV0dXJuIG1fYWNjZXB0c0F1dG9maWxsZWRMb2dpbkNyZWRlbnRpYWxzOwotfQotCi1X
ZWJDb3JlOjpVUkwgV2ViUGFnZVByb3h5OjpyZXByZXNlbnRpbmdQYWdlVVJMKCkKLXsKLSAgICBy
ZXR1cm4gbV9yZXByZXNlbnRpbmdQYWdlVVJMOwotfQotCiB2b2lkIFdlYlBhZ2VQcm94eTo6YXV0
b2ZpbGxMb2dpbkNyZWRlbnRpYWxzKGNvbnN0IFN0cmluZyYgdXNlcm5hbWUsIGNvbnN0IFN0cmlu
ZyYgcGFzc3dvcmQpCiB7CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpB
dXRvZmlsbExvZ2luQ3JlZGVudGlhbHModXNlcm5hbWUsIHBhc3N3b3JkKSwgbV9wYWdlSUQpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxJbnB1dEVsZW1l
bnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTElucHV0RWxlbWVudC5t
bQppbmRleCA4YmQ4Y2M3NzdlZTZmNmFkYjkzZGNjNGUwMzhkY2IxN2M2MzZiY2VkLi44YzIwNDMz
NzIxZmM5MjU0NDQ5N2FjN2VjNDM3YzY5ZWEwNDZjYTAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTElucHV0RWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTElucHV0RWxlbWVudC5tbQpAQCAtMzQsNyArMzQsNyBA
QAogI2ltcG9ydCAiRE9NUHJpdmF0ZS5oIgogI2ltcG9ydCAiRXhjZXB0aW9uSGFuZGxlcnMuaCIK
IAotLy8gRklYTUUgPHJhZGFyOjM0NTgzNjI4PjogU2ltcGx5ZnkgdGhpcyBvbmNlIHRoZSBVSUtp
dCB3b3JrIGlzIGF2YWlsYWJsZSBpbiB0aGUgYnVpbGQuCisvLyBGSVhNRTogU2ltcGxpZnkgdGhp
cyBvbmNlIDxyZGFyOi8vcHJvYmxlbS8zNDU4MzYyOD4gaXMgYXZhaWxhYmxlIGluIHRoZSBidWls
ZC4KICNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKSAmJiBUQVJHRVRfT1NfSVBIT05FCiAjaWYg
X19oYXNfaW5jbHVkZSg8VUlLaXQvVUlLZXlib2FyZExvZ2luQ3JlZGVudGlhbHNTdWdnZXN0aW9u
Lmg+KQogI2ltcG9ydCA8VUlLaXQvVUlLZXlib2FyZExvZ2luQ3JlZGVudGlhbHNTdWdnZXN0aW9u
Lmg+CkBAIC02ODMsMTYgKzY4MywxNyBAQCAtICh2b2lkKXNldFZhbHVlRm9yVXNlcjooTlNTdHJp
bmcgKilpblZhbHVlCiAgICAgSU1QTC0+c2V0VmFsdWVGb3JVc2VyKGluVmFsdWUpOwogfQogCi0t
IChCT09MKWFjY2VwdHNBdXRvZmlsbGVkTG9naW5DcmVkZW50aWFscworLSAoTlNEaWN0aW9uYXJ5
ICopX2F1dG9maWxsQ29udGV4dAogewogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0
ZSBzdGF0ZTsKLSAgICByZXR1cm4gISFXZWJDb3JlOjpBdXRvZmlsbEVsZW1lbnRzOjpjb21wdXRl
QXV0b2ZpbGxFbGVtZW50cygqSU1QTCk7Ci19CisgICAgaWYgKCFXZWJDb3JlOjpBdXRvZmlsbEVs
ZW1lbnRzOjpjb21wdXRlQXV0b2ZpbGxFbGVtZW50cygqSU1QTCkpCisgICAgICAgIHJldHVybiBu
aWw7CiAKLS0gKE5TVVJMICopcmVwcmVzZW50aW5nUGFnZVVSTAotewotICAgIFdlYkNvcmU6OkpT
TWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICByZXR1cm4gW05TVVJMIFVSTFdpdGhTdHJp
bmc6c2VsZi5vd25lckRvY3VtZW50LlVSTF07CisgICAgTlNVUkwgKmRvY3VtZW50VVJMID0gW05T
VVJMIFVSTFdpdGhTdHJpbmc6c2VsZi5vd25lckRvY3VtZW50LlVSTF07CisgICAgaWYgKCFkb2N1
bWVudFVSTCkKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIHJldHVybiBAeyBAIl9XZWJWaWV3
VVJMIiA6IGRvY3VtZW50VVJMIH07CiB9CiAKICNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKSAm
JiBUQVJHRVRfT1NfSVBIT05FCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9D
aGFuZ2VMb2cKaW5kZXggYzBmN2RmOTRjZDU3OTQ3NDM4YTc5NGViNjE2NGZjYWMyYTA1ZDdiOC4u
YjRkNDQyN2M1YTgwZWFiNTg2MjE5ZjEzNWM3YWQyMWE5NmI0ZGQyOCAxMDA2NDQKLS0tIGEvVG9v
bHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDE3
LTEwLTA1ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAg
IFtpT1NdIFR3ZWFrIHN1cHBvcnQgZm9yIGNsYXNzaWZ5aW5nIGZvcm0gY29udHJvbHMgKGZvbGxv
d3VwIHRvIHIyMjI0ODcpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNzc5MTcKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzM0ODIwMTIyPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1pbm9yIGNsZWFudXAg
YXJvdW5kIGF1dG9maWxsIEFQSSB0ZXN0cyBhZGRlZCBpbiByMjIyNDg3LiBBZGRpdGlvbmFsbHks
IGF1Z21lbnRzIHNvbWUgb2YgdGhlc2UgQVBJIHRlc3RzIHRvCisgICAgICAgIHZlcmlmeSB0aGF0
IGFmdGVyIGJsdXJyaW5nIHRoZSBmb2N1c2VkIGVsZW1lbnQsIHRoZSBjb250ZW50IHZpZXcgbm8g
bG9uZ2VyIGFjY2VwdHMgYXV0b2ZpbGwgY3JlZGVudGlhbHMgKHNlZQorICAgICAgICBXZWJLaXQg
Q2hhbmdlTG9nIGZvciBtb3JlIGRldGFpbHMpLiBBbHNvIGF1Z21lbnRzIHRlc3RzIHRvIHZlcmlm
eSB0aGF0IHRoZSBVUkwgaW4gdGhlIGF1dG9maWxsIGNvbnRleHQgbWF0Y2hlcworICAgICAgICB0
aGUgZG9jdW1lbnQgVVJMLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9pb3MvV0tX
ZWJWaWV3QXV0b2ZpbGxUZXN0cy5tbToKKworICAgICAgICBSZW1vdmUgdGhlIFVTRShBUFBMRV9J
TlRFUk5BTF9TREspIGd1YXJkIGZvciB0aGVzZSBBUEkgdGVzdHMuCisKKyAgICAgICAgKG5ld1VJ
S2V5Ym9hcmRMb2dpbkNyZWRlbnRpYWxzU3VnZ2VzdGlvbik6CisKKyAgICAgICAgQWRkIGEgc3R1
YiBpbXBsZW1lbnRhdGlvbiBvZiBVSUtleWJvYXJkTG9naW5DcmVkZW50aWFsc1N1Z2dlc3Rpb24u
IFRoaXMgYWxsb3dzCisgICAgICAgIFtVSUtleWJvYXJkTG9naW5DcmVkZW50aWFsc1N1Z2dlc3Rp
b24gbmV3XSB0byByZXR1cm4gYSBub25udWxsIG9iamVjdCwgd2hpY2ggYWxsb3dzIHRoZXNlIEFQ
SSB0ZXN0cyB0byB2ZXJpZnkKKyAgICAgICAgdGhhdCB0aGUgY3JlZGVudGlhbCBmaWxsaW5nIGNv
ZGVwYXRoIHdvcmtzIGFzIGludGVuZGVkIHdpdGhvdXQgYW55IGFkZGl0aW9uYWwgVUlLaXQgY2hh
bmdlcy4gQ3VycmVudGx5LCB0ZXN0cworICAgICAgICBmb3IgdGhlIHZhbHVlIG9mIHVzZXJuYW1l
IGFuZCBwYXNzd29yZCBmaWVsZHMgYXJlIHBhc3NpbmcgZXZlbiB0aG91Z2ggdGhlIGZpZWxkcyBh
cmUgbm90IGJlaW5nIHBvcHVsYXRlZCBiZWNhdXNlCisgICAgICAgIHRoZSBleHBlY3RlZCBzdHJp
bmcgdmFsdWVzIGFyZSBudWxsLCBhbmQgdGhlIG9ic2VydmVkIHZhbHVlIGlzIGFuIGVtcHR5IHN0
cmluZy4gV2UgaW5zdGVhZCBjaGVjayB0aGUgbGl0ZXJhbAorICAgICAgICBzdHJpbmcgdmFsdWVz
IGhlcmUgaW5zdGVhZCBvZiBjcmVkZW50aWFsU3VnZ2VzdGlvbidzIHByb3BlcnRpZXMsIHNvIHRo
YXQgdGVzdHMgdmVyaWZ5aW5nIHRoZSBiZWhhdmlvciBvZgorICAgICAgICAtaW5zZXJ0VGV4dFN1
Z2dlc3Rpb246IHdpbGwgcmVxdWlyZSB1c2VybmFtZSBhbmQgcGFzc3dvcmQgaW5wdXRzIHRvIGJl
IHBvcHVsYXRlZC4KKworICAgICAgICAoLVtUZXN0SW5wdXREZWxlZ2F0ZSBfd2ViVmlldzpmb2N1
c1Nob3VsZFN0YXJ0SW5wdXRTZXNzaW9uOl0pOgorICAgICAgICAoLVtBdXRvZmlsbFRlc3RWaWV3
IGluaXRXaXRoRnJhbWU6XSk6CisgICAgICAgICgtW0F1dG9maWxsVGVzdFZpZXcgX2F1dG9maWxs
SW5wdXRWaWV3XSk6CisgICAgICAgICgtW0F1dG9maWxsVGVzdFZpZXcgdGV4dElucHV0SGFzQXV0
b2ZpbGxDb250ZXh0XSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKworICAgICAg
ICBBZGQgYW4gYWRkaXRpb25hbCBBUEkgdGVzdCB0byB2ZXJpZnkgdGhhdCBwcm9ncmFtbWF0aWMg
Zm9jdXMgd2l0aG91dCB1c2VyIGludGVyYWN0aW9uIChhbmQgYWxzbyB3aXRob3V0IHRlc3RpbmcK
KyAgICAgICAgb3ZlcnJpZGVzKSBkb2VzIG5vdCBhY3RpdmF0ZSBhdXRvZmlsbC4KKworICAgICAg
ICAoY3JlYXRlVUlLZXlib2FyZExvZ2luQ3JlZGVudGlhbHNTdWdnZXN0aW9uKTogRGVsZXRlZC4K
KyAgICAgICAgKC1bV0tXZWJWaWV3IF9wcml2YXRlVGV4dElucHV0XSk6IERlbGV0ZWQuCisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9pb3MvVUlLaXRTUEkuaDoKKworICAgICAgICBNaW5vciBnYXJk
ZW5pbmcgdG8gcmVtb3ZlIGlPUyB2ZXJzaW9uID49IDExIGd1YXJkcyB0aGF0IGFyZSBub3cgdW5u
ZWNlc3NhcnkuIEFkZGl0aW9uYWxseSwgYWRkIHNvbWUgbW9yZSBwcml2YXRlCisgICAgICAgIGhl
YWRlciBpbXBvcnRzICh3aXRoIGNvcnJlc3BvbmRpbmcgaW50ZXJmYWNlIGRlZmluaXRpb25zIGZv
ciBidWlsZGluZyBhbmQgcnVubmluZyB3aXRoIHRoZSBwdWJsaWMgU0RLKS4KKwogMjAxNy0xMC0w
NCAgSkYgQmFzdGllbiAgPGpmYmFzdGllbkBhcHBsZS5jb20+CiAKICAgICAgICAgV1RGOiBVcGRh
dGUgc3RkOjpleHBlY3RlZCB0byBtYXRjaCBjdXJyZW50IHByb3Bvc2FsCmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9XS1dlYlZpZXdBdXRvZmlsbFRlc3RzLm1tIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9pb3MvV0tXZWJWaWV3QXV0b2ZpbGxUZXN0cy5tbQpp
bmRleCBlMTEyODVlYzQ5NTY5NDE1MWUxMWY1N2NmYTFhNTNkYzYyN2VlMGI2Li4wZWQwM2EwZDA1
ZTZjMzRmZjA1NDBkMTBmMjFiN2FmOWJiYzk2ZjE1IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL2lvcy9XS1dlYlZpZXdBdXRvZmlsbFRlc3RzLm1tCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvaW9zL1dLV2ViVmlld0F1dG9maWxsVGVzdHMubW0KQEAgLTI1LDQw
ICsyNSw4NCBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAKLSNpZiBXS19BUElfRU5BQkxFRCAm
JiBQTEFURk9STShJT1MpICYmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCisjaWYgV0tfQVBJX0VO
QUJMRUQgJiYgUExBVEZPUk0oSU9TKQogCiAjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgog
I2ltcG9ydCAiVGVzdFdLV2ViVmlldy5oIgogI2ltcG9ydCAiVUlLaXRTUEkuaCIKKyNpbXBvcnQg
PFdlYktpdC9XS1dlYlZpZXdQcml2YXRlLmg+CisjaW1wb3J0IDxXZWJLaXQvX1dLRm9jdXNlZEVs
ZW1lbnRJbmZvLmg+CisjaW1wb3J0IDxXZWJLaXQvX1dLSW5wdXREZWxlZ2F0ZS5oPgorI2ltcG9y
dCA8d3RmL0Jsb2NrUHRyLmg+CisKKyNpZiAhX19oYXNfaW5jbHVkZSg8VUlLaXQvVUlLZXlib2Fy
ZExvZ2luQ3JlZGVudGlhbHNTdWdnZXN0aW9uLmg+KQorLy8gRklYTUU6IFRoaXMgY2FuIGJlIHNh
ZmVseSByZW1vdmVkIG9uY2UgPHJkYXI6Ly9wcm9ibGVtLzM0NTgzNjI4PiBsYW5kcyBpbiB0aGUg
U0RLLgorQGltcGxlbWVudGF0aW9uIFVJS2V5Ym9hcmRMb2dpbkNyZWRlbnRpYWxzU3VnZ2VzdGlv
bgorQGVuZAorI2VuZGlmCiAKLSNpbXBvcnQgPFVJS2l0L1VJVGV4dElucHV0VHJhaXRzX1ByaXZh
dGUuaD4KLSNpbXBvcnQgPFVJS2l0L1VJVGV4dElucHV0X1ByaXZhdGUuaD4KLQotLy8gRklYTUUg
MzQ1ODM2Mjg6IFNpbXBseWZ5IHRoaXMgb25jZSB0aGUgVUlLaXQgd29yayBpcyBhdmFpbGFibGUg
aW4gdGhlIGJ1aWxkLgotI2lmIF9faGFzX2luY2x1ZGUoPFVJS2l0L1VJS2V5Ym9hcmRMb2dpbkNy
ZWRlbnRpYWxzU3VnZ2VzdGlvbi5oPikKLSNpbXBvcnQgPFVJS2l0L1VJS2V5Ym9hcmRMb2dpbkNy
ZWRlbnRpYWxzU3VnZ2VzdGlvbi5oPgotI2Vsc2UKLSNpbXBvcnQgPFVJS2l0L1VJVGV4dFN1Z2dl
c3Rpb24uaD4KLUBpbnRlcmZhY2UgVUlLZXlib2FyZExvZ2luQ3JlZGVudGlhbHNTdWdnZXN0aW9u
IDogVUlUZXh0U3VnZ2VzdGlvbgorc3RhdGljIFVJS2V5Ym9hcmRMb2dpbkNyZWRlbnRpYWxzU3Vn
Z2VzdGlvbiAqbmV3VUlLZXlib2FyZExvZ2luQ3JlZGVudGlhbHNTdWdnZXN0aW9uKE5TU3RyaW5n
ICp1c2VybmFtZSwgTlNTdHJpbmcgKnBhc3N3b3JkKQoreworICAgIFVJS2V5Ym9hcmRMb2dpbkNy
ZWRlbnRpYWxzU3VnZ2VzdGlvbiAqc3VnZ2VzdGlvbiA9IFtVSUtleWJvYXJkTG9naW5DcmVkZW50
aWFsc1N1Z2dlc3Rpb24gbmV3XTsKKyAgICBzdWdnZXN0aW9uLnVzZXJuYW1lID0gdXNlcm5hbWU7
CisgICAgc3VnZ2VzdGlvbi5wYXNzd29yZCA9IHBhc3N3b3JkOworICAgIHJldHVybiBzdWdnZXN0
aW9uOworfQogCi1AcHJvcGVydHkgKG5vbmF0b21pYywgYXNzaWduKSBOU1N0cmluZyAqdXNlcm5h
bWU7Ci1AcHJvcGVydHkgKG5vbmF0b21pYywgYXNzaWduKSBOU1N0cmluZyAqcGFzc3dvcmQ7Cit0
eXBlZGVmIFVJVmlldyA8VUlUZXh0SW5wdXRUcmFpdHNfUHJpdmF0ZV9Qcm9wb3NlZF9TUElfMzQ1
ODM2Mjg+IEF1dG9maWxsSW5wdXRWaWV3OwogCitAaW50ZXJmYWNlIFRlc3RJbnB1dERlbGVnYXRl
IDogTlNPYmplY3QgPF9XS0lucHV0RGVsZWdhdGU+CitAcHJvcGVydHkgKG5vbmF0b21pYykgQk9P
TCBpbnB1dFNlc3Npb25SZXF1aXJlc1VzZXJJbnRlcmFjdGlvbjsKIEBlbmQKLSNlbmRpZgogCi1z
dGF0aWMgVUlLZXlib2FyZExvZ2luQ3JlZGVudGlhbHNTdWdnZXN0aW9uICpjcmVhdGVVSUtleWJv
YXJkTG9naW5DcmVkZW50aWFsc1N1Z2dlc3Rpb24oKQorQGltcGxlbWVudGF0aW9uIFRlc3RJbnB1
dERlbGVnYXRlCisKKy0gKGluc3RhbmNldHlwZSlpbml0CiB7Ci0gICAgcmV0dXJuIFtbTlNDbGFz
c0Zyb21TdHJpbmcoQCJVSUtleWJvYXJkTG9naW5DcmVkZW50aWFsc1N1Z2dlc3Rpb24iKSBuZXdd
IGF1dG9yZWxlYXNlXTsKKyAgICBpZiAoc2VsZiA9IFtzdXBlciBpbml0XSkKKyAgICAgICAgX2lu
cHV0U2Vzc2lvblJlcXVpcmVzVXNlckludGVyYWN0aW9uID0gTk87CisKKyAgICByZXR1cm4gc2Vs
ZjsKIH0KIAotdHlwZWRlZiBVSVZpZXcgPFVJVGV4dElucHV0UHJpdmF0ZSwgVUlUZXh0SW5wdXRU
cmFpdHNfUHJpdmF0ZSwgVUlUZXh0SW5wdXRUcmFpdHNfUHJpdmF0ZV9TdGFnaW5nXzM0NTgzNjI4
PiAgQXV0b2ZpbGxDYW5kaWRhdGVWaWV3OworLSAoQk9PTClfd2ViVmlldzooV0tXZWJWaWV3ICop
d2ViVmlldyBmb2N1c1Nob3VsZFN0YXJ0SW5wdXRTZXNzaW9uOihpZCA8X1dLRm9jdXNlZEVsZW1l
bnRJbmZvPilpbmZvCit7CisgICAgcmV0dXJuICFzZWxmLmlucHV0U2Vzc2lvblJlcXVpcmVzVXNl
ckludGVyYWN0aW9uIHx8IGluZm8udXNlckluaXRpYXRlZDsKK30KKworQGVuZAorCitAaW50ZXJm
YWNlIEF1dG9maWxsVGVzdFZpZXcgOiBUZXN0V0tXZWJWaWV3CitAZW5kCiAKLUBpbXBsZW1lbnRh
dGlvbiBXS1dlYlZpZXcgKEF1dG9maWxsVGVzdEhlbHBlcnMpCitAaW1wbGVtZW50YXRpb24gQXV0
b2ZpbGxUZXN0VmlldyB7CisgICAgUmV0YWluUHRyPFRlc3RJbnB1dERlbGVnYXRlPiBfdGVzdERl
bGVnYXRlOworfQogCi0tIChBdXRvZmlsbENhbmRpZGF0ZVZpZXcgKilfcHJpdmF0ZVRleHRJbnB1
dAorLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRnJhbWU6KENHUmVjdClmcmFtZQogewotICAgIHJl
dHVybiAoQXV0b2ZpbGxDYW5kaWRhdGVWaWV3ICopW3NlbGYgdmFsdWVGb3JLZXk6QCJfY3VycmVu
dENvbnRlbnRWaWV3Il07CisgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0V2l0aEZyYW1lOmZy
YW1lXSkpCisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICBfdGVzdERlbGVnYXRlID0gYWRvcHRO
UyhbW1Rlc3RJbnB1dERlbGVnYXRlIGFsbG9jXSBpbml0XSk7CisgICAgc2VsZi5faW5wdXREZWxl
Z2F0ZSA9IF90ZXN0RGVsZWdhdGUuZ2V0KCk7CisgICAgcmV0dXJuIHNlbGY7Cit9CisKKy0gKEF1
dG9maWxsSW5wdXRWaWV3ICopX2F1dG9maWxsSW5wdXRWaWV3Cit7CisgICAgcmV0dXJuIChBdXRv
ZmlsbElucHV0VmlldyAqKXNlbGYudGV4dElucHV0Q29udGVudFZpZXc7Cit9CisKKy0gKEJPT0wp
dGV4dElucHV0SGFzQXV0b2ZpbGxDb250ZXh0Cit7CisgICAgW3NlbGYgd2FpdEZvck5leHRQcmVz
ZW50YXRpb25VcGRhdGVdOworICAgIE5TVVJMICp1cmwgPSBbc2VsZi5fYXV0b2ZpbGxJbnB1dFZp
ZXcuX2F1dG9maWxsQ29udGV4dCBvYmplY3RGb3JLZXk6QCJfV2ViVmlld1VSTCJdOworICAgIGlm
ICghW3VybCBpc0tpbmRPZkNsYXNzOltOU1VSTCBjbGFzc11dKQorICAgICAgICByZXR1cm4gTk87
CisKKyAgICBFWFBFQ1RfV0tfU1RSRVEoW3NlbGYgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlw
dDpAImRvY3VtZW50LlVSTCJdLCB1cmwuYWJzb2x1dGVTdHJpbmcpOworICAgIHJldHVybiBZRVM7
CiB9CiAKIEBlbmQKQEAgLTY3LDExMCArMTExLDEwMiBAQCBuYW1lc3BhY2UgVGVzdFdlYktpdEFQ
SSB7CiAKIFRFU1QoV0tXZWJWaWV3QXV0b2ZpbGxUZXN0cywgVXNlcm5hbWVBbmRQYXNzd29yZEZp
ZWxkKQogewotICAgIFRlc3RXS1dlYlZpZXcgKndlYlZpZXcgPSBbW1Rlc3RXS1dlYlZpZXcgYWxs
b2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCAzMjAsIDUwMCldOwotICAgIEF1dG9m
aWxsQ2FuZGlkYXRlVmlldyAqY29udGVudFZpZXcgPSBbd2ViVmlldyBfcHJpdmF0ZVRleHRJbnB1
dF07CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW0F1dG9maWxsVGVzdFZpZXcgYWxsb2Nd
IGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCAzMjAsIDUwMCldKTsKICAgICBbd2ViVmll
dyBzeW5jaHJvbm91c2x5TG9hZEhUTUxTdHJpbmc6QCI8aW5wdXQgaWQ9J3VzZXInIHR5cGU9J2Vt
YWlsJz48aW5wdXQgaWQ9J3Bhc3N3b3JkJyB0eXBlPSdwYXNzd29yZCc+Il07CiAgICAgW3dlYlZp
ZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAInVzZXIuZm9jdXMoKSJdOwotICAgIEVY
UEVDVF9UUlVFKGNvbnRlbnRWaWV3LmFjY2VwdHNBdXRvZmlsbGVkTG9naW5DcmVkZW50aWFscyk7
CisgICAgRVhQRUNUX1RSVUUoW3dlYlZpZXcgdGV4dElucHV0SGFzQXV0b2ZpbGxDb250ZXh0XSk7
CiAKICAgICBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAicGFzc3dvcmQu
Zm9jdXMoKSJdOwotICAgIEVYUEVDVF9UUlVFKGNvbnRlbnRWaWV3LmFjY2VwdHNBdXRvZmlsbGVk
TG9naW5DcmVkZW50aWFscyk7CisgICAgRVhQRUNUX1RSVUUoW3dlYlZpZXcgdGV4dElucHV0SGFz
QXV0b2ZpbGxDb250ZXh0XSk7CiAKLSAgICBVSUtleWJvYXJkTG9naW5DcmVkZW50aWFsc1N1Z2dl
c3Rpb24gKmNyZWRlbnRpYWxTdWdnZXN0aW9uID0gY3JlYXRlVUlLZXlib2FyZExvZ2luQ3JlZGVu
dGlhbHNTdWdnZXN0aW9uKCk7Ci0gICAgY3JlZGVudGlhbFN1Z2dlc3Rpb24udXNlcm5hbWUgPSBA
ImZyZWRlcmlrIjsKLSAgICBjcmVkZW50aWFsU3VnZ2VzdGlvbi5wYXNzd29yZCA9IEAiZmFtb3Mi
OworICAgIGF1dG8gY3JlZGVudGlhbFN1Z2dlc3Rpb24gPSBhZG9wdE5TKG5ld1VJS2V5Ym9hcmRM
b2dpbkNyZWRlbnRpYWxzU3VnZ2VzdGlvbihAImZyZWRlcmlrIiwgQCJmYW1vcyIpKTsKKyAgICBb
W3dlYlZpZXcgX2F1dG9maWxsSW5wdXRWaWV3XSBpbnNlcnRUZXh0U3VnZ2VzdGlvbjpjcmVkZW50
aWFsU3VnZ2VzdGlvbi5nZXQoKV07CiAKLSAgICBbY29udGVudFZpZXcgaW5zZXJ0VGV4dFN1Z2dl
c3Rpb246Y3JlZGVudGlhbFN1Z2dlc3Rpb25dOworICAgIEVYUEVDVF9XS19TVFJFUSgiZmFtb3Mi
LCBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAicGFzc3dvcmQudmFsdWUi
XSk7CiAKLSAgICBFWFBFQ1RfV0tfU1RSRVEoY3JlZGVudGlhbFN1Z2dlc3Rpb24udXNlcm5hbWUs
IFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJ1c2VyLnZhbHVlIl0pOwot
ICAgIEVYUEVDVF9XS19TVFJFUShjcmVkZW50aWFsU3VnZ2VzdGlvbi5wYXNzd29yZCwgW3dlYlZp
ZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAInBhc3N3b3JkLnZhbHVlIl0pOwotCi0g
ICAgW3dlYlZpZXcgcmVsZWFzZV07CisgICAgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2
YVNjcmlwdDpAImRvY3VtZW50LmFjdGl2ZUVsZW1lbnQuYmx1cigpIl07CisgICAgRVhQRUNUX0ZB
TFNFKFt3ZWJWaWV3IHRleHRJbnB1dEhhc0F1dG9maWxsQ29udGV4dF0pOwogfQogCiBURVNUKFdL
V2ViVmlld0F1dG9maWxsVGVzdHMsIFVzZXJuYW1lQW5kUGFzc3dvcmRGaWVsZFNlcGFyYXRlZEJ5
UmFkaW9CdXR0b24pCiB7Ci0gICAgVGVzdFdLV2ViVmlldyAqd2ViVmlldyA9IFtbVGVzdFdLV2Vi
VmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDMyMCwgNTAwKV07Ci0g
ICAgQXV0b2ZpbGxDYW5kaWRhdGVWaWV3ICpjb250ZW50VmlldyA9IFt3ZWJWaWV3IF9wcml2YXRl
VGV4dElucHV0XTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbQXV0b2ZpbGxUZXN0Vmll
dyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDMyMCwgNTAwKV0pOwogICAg
IFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZzpAIjxpbnB1dCBpZD0ndXNlcicg
dHlwZT0nZW1haWwnPjxpbnB1dCB0eXBlPSdyYWRpbycgbmFtZT0ncmFkaW9fYnV0dG9uJyB2YWx1
ZT0ncmFkaW8nPjxpbnB1dCBpZD0ncGFzc3dvcmQnIHR5cGU9J3Bhc3N3b3JkJz4iXTsKICAgICBb
d2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAidXNlci5mb2N1cygpIl07Ci0g
ICAgRVhQRUNUX1RSVUUoY29udGVudFZpZXcuYWNjZXB0c0F1dG9maWxsZWRMb2dpbkNyZWRlbnRp
YWxzKTsKKyAgICBFWFBFQ1RfVFJVRShbd2ViVmlldyB0ZXh0SW5wdXRIYXNBdXRvZmlsbENvbnRl
eHRdKTsKIAogICAgIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJwYXNz
d29yZC5mb2N1cygpIl07Ci0gICAgRVhQRUNUX1RSVUUoY29udGVudFZpZXcuYWNjZXB0c0F1dG9m
aWxsZWRMb2dpbkNyZWRlbnRpYWxzKTsKLQotICAgIFVJS2V5Ym9hcmRMb2dpbkNyZWRlbnRpYWxz
U3VnZ2VzdGlvbiAqY3JlZGVudGlhbFN1Z2dlc3Rpb24gPSBjcmVhdGVVSUtleWJvYXJkTG9naW5D
cmVkZW50aWFsc1N1Z2dlc3Rpb24oKTsKLSAgICBjcmVkZW50aWFsU3VnZ2VzdGlvbi51c2VybmFt
ZSA9IEAiZnJlZGVyaWsiOwotICAgIGNyZWRlbnRpYWxTdWdnZXN0aW9uLnBhc3N3b3JkID0gQCJm
YW1vcyI7CisgICAgRVhQRUNUX1RSVUUoW3dlYlZpZXcgdGV4dElucHV0SGFzQXV0b2ZpbGxDb250
ZXh0XSk7CiAKLSAgICBbY29udGVudFZpZXcgaW5zZXJ0VGV4dFN1Z2dlc3Rpb246Y3JlZGVudGlh
bFN1Z2dlc3Rpb25dOworICAgIGF1dG8gY3JlZGVudGlhbFN1Z2dlc3Rpb24gPSBhZG9wdE5TKG5l
d1VJS2V5Ym9hcmRMb2dpbkNyZWRlbnRpYWxzU3VnZ2VzdGlvbihAImZyZWRlcmlrIiwgQCJmYW1v
cyIpKTsKKyAgICBbW3dlYlZpZXcgX2F1dG9maWxsSW5wdXRWaWV3XSBpbnNlcnRUZXh0U3VnZ2Vz
dGlvbjpjcmVkZW50aWFsU3VnZ2VzdGlvbi5nZXQoKV07CiAKLSAgICBFWFBFQ1RfV0tfU1RSRVEo
Y3JlZGVudGlhbFN1Z2dlc3Rpb24udXNlcm5hbWUsIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGlu
Z0phdmFTY3JpcHQ6QCJ1c2VyLnZhbHVlIl0pOwotICAgIEVYUEVDVF9XS19TVFJFUShjcmVkZW50
aWFsU3VnZ2VzdGlvbi5wYXNzd29yZCwgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNj
cmlwdDpAInBhc3N3b3JkLnZhbHVlIl0pOworICAgIEVYUEVDVF9XS19TVFJFUSgiZnJlZGVyaWsi
LCBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAidXNlci52YWx1ZSJdKTsK
KyAgICBFWFBFQ1RfV0tfU1RSRVEoImZhbW9zIiwgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5n
SmF2YVNjcmlwdDpAInBhc3N3b3JkLnZhbHVlIl0pOwogCi0gICAgW3dlYlZpZXcgcmVsZWFzZV07
CisgICAgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImRvY3VtZW50LmFj
dGl2ZUVsZW1lbnQuYmx1cigpIl07CisgICAgRVhQRUNUX0ZBTFNFKFt3ZWJWaWV3IHRleHRJbnB1
dEhhc0F1dG9maWxsQ29udGV4dF0pOwogfQogCiBURVNUKFdLV2ViVmlld0F1dG9maWxsVGVzdHMs
IFR3b1RleHRGaWVsZHMpCiB7Ci0gICAgVGVzdFdLV2ViVmlldyAqd2ViVmlldyA9IFtbVGVzdFdL
V2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDMyMCwgNTAwKV07
Ci0gICAgQXV0b2ZpbGxDYW5kaWRhdGVWaWV3ICpjb250ZW50VmlldyA9IFt3ZWJWaWV3IF9wcml2
YXRlVGV4dElucHV0XTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbQXV0b2ZpbGxUZXN0
VmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDMyMCwgNTAwKV0pOwog
ICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZzpAIjxpbnB1dCBpZD0ndGV4
dDEnIHR5cGU9J2VtYWlsJz48aW5wdXQgaWQ9J3RleHQyJyB0eXBlPSd0ZXh0Jz4iXTsKICAgICBb
d2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAidGV4dDEuZm9jdXMoKSJdOwot
ICAgIEVYUEVDVF9GQUxTRShjb250ZW50Vmlldy5hY2NlcHRzQXV0b2ZpbGxlZExvZ2luQ3JlZGVu
dGlhbHMpOworICAgIEVYUEVDVF9GQUxTRShbd2ViVmlldyB0ZXh0SW5wdXRIYXNBdXRvZmlsbENv
bnRleHRdKTsKIAogICAgIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJ0
ZXh0Mi5mb2N1cygpIl07Ci0gICAgRVhQRUNUX0ZBTFNFKGNvbnRlbnRWaWV3LmFjY2VwdHNBdXRv
ZmlsbGVkTG9naW5DcmVkZW50aWFscyk7CisgICAgRVhQRUNUX0ZBTFNFKFt3ZWJWaWV3IHRleHRJ
bnB1dEhhc0F1dG9maWxsQ29udGV4dF0pOwogfQogCiBURVNUKFdLV2ViVmlld0F1dG9maWxsVGVz
dHMsIFN0YW5kYWxvbmVQYXNzd29yZEZpZWxkKQogewotICAgIFRlc3RXS1dlYlZpZXcgKndlYlZp
ZXcgPSBbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAw
LCAzMjAsIDUwMCldOwotICAgIEF1dG9maWxsQ2FuZGlkYXRlVmlldyAqY29udGVudFZpZXcgPSBb
d2ViVmlldyBfcHJpdmF0ZVRleHRJbnB1dF07CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhb
W0F1dG9maWxsVGVzdFZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCAz
MjAsIDUwMCldKTsKICAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZEhUTUxTdHJpbmc6QCI8
aW5wdXQgaWQ9J3Bhc3N3b3JkJyB0eXBlPSdwYXNzd29yZCc+Il07CiAgICAgW3dlYlZpZXcgc3Ry
aW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAInBhc3N3b3JkLmZvY3VzKCkiXTsKLSAgICBFWFBF
Q1RfVFJVRShjb250ZW50Vmlldy5hY2NlcHRzQXV0b2ZpbGxlZExvZ2luQ3JlZGVudGlhbHMpOwor
ICAgIEVYUEVDVF9UUlVFKFt3ZWJWaWV3IHRleHRJbnB1dEhhc0F1dG9maWxsQ29udGV4dF0pOwog
Ci0gICAgVUlLZXlib2FyZExvZ2luQ3JlZGVudGlhbHNTdWdnZXN0aW9uICpjcmVkZW50aWFsU3Vn
Z2VzdGlvbiA9IGNyZWF0ZVVJS2V5Ym9hcmRMb2dpbkNyZWRlbnRpYWxzU3VnZ2VzdGlvbigpOwot
ICAgIGNyZWRlbnRpYWxTdWdnZXN0aW9uLnVzZXJuYW1lID0gQCJmcmVkZXJpayI7Ci0gICAgY3Jl
ZGVudGlhbFN1Z2dlc3Rpb24ucGFzc3dvcmQgPSBAImZhbW9zIjsKKyAgICBhdXRvIGNyZWRlbnRp
YWxTdWdnZXN0aW9uID0gYWRvcHROUyhuZXdVSUtleWJvYXJkTG9naW5DcmVkZW50aWFsc1N1Z2dl
c3Rpb24oQCJmcmVkZXJpayIsIEAiZmFtb3MiKSk7CisgICAgW1t3ZWJWaWV3IF9hdXRvZmlsbElu
cHV0Vmlld10gaW5zZXJ0VGV4dFN1Z2dlc3Rpb246Y3JlZGVudGlhbFN1Z2dlc3Rpb24uZ2V0KCld
OwogCi0gICAgW2NvbnRlbnRWaWV3IGluc2VydFRleHRTdWdnZXN0aW9uOmNyZWRlbnRpYWxTdWdn
ZXN0aW9uXTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoImZhbW9zIiwgW3dlYlZpZXcgc3RyaW5nQnlF
dmFsdWF0aW5nSmF2YVNjcmlwdDpAInBhc3N3b3JkLnZhbHVlIl0pOwogCi0gICAgRVhQRUNUX1dL
X1NUUkVRKGNyZWRlbnRpYWxTdWdnZXN0aW9uLnBhc3N3b3JkLCBbd2ViVmlldyBzdHJpbmdCeUV2
YWx1YXRpbmdKYXZhU2NyaXB0OkAicGFzc3dvcmQudmFsdWUiXSk7Ci0KLSAgICBbd2ViVmlldyBy
ZWxlYXNlXTsKKyAgICBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZG9j
dW1lbnQuYWN0aXZlRWxlbWVudC5ibHVyKCkiXTsKKyAgICBFWFBFQ1RfRkFMU0UoW3dlYlZpZXcg
dGV4dElucHV0SGFzQXV0b2ZpbGxDb250ZXh0XSk7CiB9CiAKIFRFU1QoV0tXZWJWaWV3QXV0b2Zp
bGxUZXN0cywgU3RhbmRhbG9uZVRleHRGaWVsZCkKIHsKLSAgICBUZXN0V0tXZWJWaWV3ICp3ZWJW
aWV3ID0gW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwg
MCwgMzIwLCA1MDApXTsKLSAgICBBdXRvZmlsbENhbmRpZGF0ZVZpZXcgKmNvbnRlbnRWaWV3ID0g
W3dlYlZpZXcgX3ByaXZhdGVUZXh0SW5wdXRdOworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMo
W1tBdXRvZmlsbFRlc3RWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwg
MzIwLCA1MDApXSk7CiAgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nOkAi
PGlucHV0IGlkPSd0ZXh0ZmllbGQnIHR5cGU9J3RleHQnPiJdOwogICAgIFt3ZWJWaWV3IHN0cmlu
Z0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJ0ZXh0ZmllbGQuZm9jdXMoKSJdOwotICAgIEVYUEVD
VF9GQUxTRShjb250ZW50Vmlldy5hY2NlcHRzQXV0b2ZpbGxlZExvZ2luQ3JlZGVudGlhbHMpOwot
Ci0gICAgW3dlYlZpZXcgcmVsZWFzZV07CisgICAgRVhQRUNUX0ZBTFNFKFt3ZWJWaWV3IHRleHRJ
bnB1dEhhc0F1dG9maWxsQ29udGV4dF0pOwogfQogCiBURVNUKFdLV2ViVmlld0F1dG9maWxsVGVz
dHMsIEFjY291bnRDcmVhdGlvblBhZ2UpCiB7Ci0gICAgVGVzdFdLV2ViVmlldyAqd2ViVmlldyA9
IFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDMy
MCwgNTAwKV07Ci0gICAgQXV0b2ZpbGxDYW5kaWRhdGVWaWV3ICpjb250ZW50VmlldyA9IFt3ZWJW
aWV3IF9wcml2YXRlVGV4dElucHV0XTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbQXV0
b2ZpbGxUZXN0VmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDMyMCwg
NTAwKV0pOwogICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZzpAIjxpbnB1
dCBpZD0ndXNlcicgdHlwZT0nZW1haWwnPjxpbnB1dCBpZD0ncGFzc3dvcmQnIHR5cGU9J3Bhc3N3
b3JkJz48aW5wdXQgaWQ9J2NvbmZpcm1fcGFzc3dvcmQnIHR5cGU9J3Bhc3N3b3JkJz4iXTsKICAg
ICBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAidXNlci5mb2N1cygpIl07
Ci0gICAgRVhQRUNUX0ZBTFNFKGNvbnRlbnRWaWV3LmFjY2VwdHNBdXRvZmlsbGVkTG9naW5DcmVk
ZW50aWFscyk7CisgICAgRVhQRUNUX0ZBTFNFKFt3ZWJWaWV3IHRleHRJbnB1dEhhc0F1dG9maWxs
Q29udGV4dF0pOwogCiAgICAgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpA
InBhc3N3b3JkLmZvY3VzKCkiXTsKLSAgICBFWFBFQ1RfRkFMU0UoY29udGVudFZpZXcuYWNjZXB0
c0F1dG9maWxsZWRMb2dpbkNyZWRlbnRpYWxzKTsKKyAgICBFWFBFQ1RfRkFMU0UoW3dlYlZpZXcg
dGV4dElucHV0SGFzQXV0b2ZpbGxDb250ZXh0XSk7CiAKICAgICBbd2ViVmlldyBzdHJpbmdCeUV2
YWx1YXRpbmdKYXZhU2NyaXB0OkAiY29uZmlybV9wYXNzd29yZC5mb2N1cygpIl07Ci0gICAgRVhQ
RUNUX0ZBTFNFKGNvbnRlbnRWaWV3LmFjY2VwdHNBdXRvZmlsbGVkTG9naW5DcmVkZW50aWFscyk7
Ci0KLSAgICBbd2ViVmlldyByZWxlYXNlXTsKKyAgICBFWFBFQ1RfRkFMU0UoW3dlYlZpZXcgdGV4
dElucHV0SGFzQXV0b2ZpbGxDb250ZXh0XSk7CiB9CiAKK1RFU1QoV0tXZWJWaWV3QXV0b2ZpbGxU
ZXN0cywgQXV0b2ZpbGxSZXF1aXJlc0lucHV0U2Vzc2lvbikKK3sKKyAgICBhdXRvIHdlYlZpZXcg
PSBhZG9wdE5TKFtbQXV0b2ZpbGxUZXN0VmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RN
YWtlKDAsIDAsIDMyMCwgNTAwKV0pOworICAgIFsoVGVzdElucHV0RGVsZWdhdGUgKilbd2ViVmll
dyBfaW5wdXREZWxlZ2F0ZV0gc2V0SW5wdXRTZXNzaW9uUmVxdWlyZXNVc2VySW50ZXJhY3Rpb246
WUVTXTsKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZEhUTUxTdHJpbmc6QCI8aW5wdXQg
aWQ9J3VzZXInIHR5cGU9J2VtYWlsJz48aW5wdXQgaWQ9J3Bhc3N3b3JkJyB0eXBlPSdwYXNzd29y
ZCc+Il07CisgICAgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAInVzZXIu
Zm9jdXMoKSJdOworCisgICAgRVhQRUNUX0ZBTFNFKFt3ZWJWaWV3IHRleHRJbnB1dEhhc0F1dG9m
aWxsQ29udGV4dF0pOworfQogCiB9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCiAKLSNlbmRp
ZiAvLyBXS19BUElfRU5BQkxFRCAmJiBQTEFURk9STShJT1MpICYmIFVTRShBUFBMRV9JTlRFUk5B
TF9TREspCisjZW5kaWYgLy8gV0tfQVBJX0VOQUJMRUQgJiYgUExBVEZPUk0oSU9TKQpkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9pb3MvVUlLaXRTUEkuaCBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvaW9zL1VJS2l0U1BJLmgKaW5kZXggYThjNGU0Y2IzMWNmMWY2MzdiZDk1ZDk2ZGNiYWE3
ZTA1NGU4ODE4MC4uYzMzM2JhODBmNTYzMjRjZjQ5NDUzMjNmYmZjNjY3YmQ5MzRhNjE5NiAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9pb3MvVUlLaXRTUEkuaAorKysgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL2lvcy9VSUtpdFNQSS5oCkBAIC0yNywyMyArMjcsMTYgQEAKIAogI2ltcG9y
dCA8VUlLaXQvVUlUZXh0SW5wdXRUcmFpdHMuaD4KIAotI2lmIF9fSVBIT05FX09TX1ZFUlNJT05f
TUFYX0FMTE9XRUQgPj0gMTEwMDAwCiBAcHJvdG9jb2wgVUlEcmFnU2Vzc2lvbjsKIEBjbGFzcyBV
SURyYWdJbnRlcmFjdGlvbjsKIEBjbGFzcyBVSURyYWdJdGVtOwotI2VuZGlmCiAKLSNpZiBVU0Uo
QVBQTEVfSU5URVJOQUxfU0RLKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01BWF9BTExPV0VEID49
IDExMDAwMAorI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCiAKICNpbXBvcnQgPFVJS2l0L1VJ
QXBwbGljYXRpb25fUHJpdmF0ZS5oPgogI2ltcG9ydCA8VUlLaXQvVUlEcmFnSW50ZXJhY3Rpb25f
UHJpdmF0ZS5oPgogI2ltcG9ydCA8VUlLaXQvVUlUZXh0SW5wdXRUcmFpdHNfUHJpdmF0ZS5oPgot
I2ltcG9ydCA8VUlLaXQvVUlUZXh0U3VnZ2VzdGlvbi5oPgotCi0KLUBwcm90b2NvbCBVSVRleHRJ
bnB1dFRyYWl0c19Qcml2YXRlX1N0YWdpbmdfMzQ1ODM2MjggPE5TT2JqZWN0LCBVSVRleHRJbnB1
dFRyYWl0cz4KLUBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgQk9PTCBhY2NlcHRzQXV0
b2ZpbGxlZExvZ2luQ3JlZGVudGlhbHM7Ci1AZW5kCisjaW1wb3J0IDxVSUtpdC9VSVRleHRJbnB1
dF9Qcml2YXRlLmg+CiAKICNlbHNlCiAKQEAgLTUzLDIzICs0Niw0MCBAQCB2b2lkIFVJQXBwbGlj
YXRpb25Jbml0aWFsaXplKHZvaWQpOwogCiBXVEZfRVhURVJOX0NfRU5ECiAKLSNpZiBfX0lQSE9O
RV9PU19WRVJTSU9OX01BWF9BTExPV0VEID49IDExMDAwMAorQGludGVyZmFjZSBVSVRleHRTdWdn
ZXN0aW9uIDogTlNPYmplY3QKKworQGVuZAorCiBAcHJvdG9jb2wgVUlEcmFnSW50ZXJhY3Rpb25E
ZWxlZ2F0ZV9Gb3JXZWJLaXRPbmx5IDxVSURyYWdJbnRlcmFjdGlvbkRlbGVnYXRlPgogQG9wdGlv
bmFsCiAtICh2b2lkKV9kcmFnSW50ZXJhY3Rpb246KFVJRHJhZ0ludGVyYWN0aW9uICopaW50ZXJh
Y3Rpb24gcHJlcGFyZUZvclNlc3Npb246KGlkPFVJRHJhZ1Nlc3Npb24+KXNlc3Npb24gY29tcGxl
dGlvbjoodm9pZCheKSh2b2lkKSljb21wbGV0aW9uOwogQGVuZAotI2VuZGlmIC8vIF9fSVBIT05F
X09TX1ZFUlNJT05fTUFYX0FMTE9XRUQgPj0gMTEwMDAwCiAKIEBwcm90b2NvbCBVSVRleHRJbnB1
dFRyYWl0c19Qcml2YXRlIDxOU09iamVjdCwgVUlUZXh0SW5wdXRUcmFpdHM+Ci1AcHJvcGVydHkg
KG5vbmF0b21pYywgcmVhZG9ubHkpIEJPT0wgYWNjZXB0c0F1dG9maWxsZWRMb2dpbkNyZWRlbnRp
YWxzOworQGVuZAorCitAcHJvdG9jb2wgVUlUZXh0SW5wdXRQcml2YXRlIDxVSVRleHRJbnB1dCwg
VUlUZXh0SW5wdXRUcmFpdHNfUHJpdmF0ZT4KKy0gKHZvaWQpaW5zZXJ0VGV4dFN1Z2dlc3Rpb246
KFVJVGV4dFN1Z2dlc3Rpb24gKil0ZXh0U3VnZ2VzdGlvbjsKIEBlbmQKIAogI2VuZGlmCiAKLSNp
ZiBfX0lQSE9ORV9PU19WRVJTSU9OX01BWF9BTExPV0VEID49IDExMDAwMAorQHByb3RvY29sIFVJ
VGV4dElucHV0VHJhaXRzX1ByaXZhdGVfUHJvcG9zZWRfU1BJXzM0NTgzNjI4IDxVSVRleHRJbnB1
dFByaXZhdGU+CistIChOU0RpY3Rpb25hcnkgKilfYXV0b2ZpbGxDb250ZXh0OworQGVuZAorCiBA
cHJvdG9jb2wgVUlEcmFnSW50ZXJhY3Rpb25EZWxlZ2F0ZV9Qcm9wb3NlZF9TUElfMzMxNDY4MDMg
PFVJRHJhZ0ludGVyYWN0aW9uRGVsZWdhdGU+CiAtICh2b2lkKV9kcmFnSW50ZXJhY3Rpb246KFVJ
RHJhZ0ludGVyYWN0aW9uICopaW50ZXJhY3Rpb24gaXRlbXNGb3JBZGRpbmdUb1Nlc3Npb246KGlk
IDxVSURyYWdTZXNzaW9uPilzZXNzaW9uIHdpdGhUb3VjaEF0UG9pbnQ6KENHUG9pbnQpcG9pbnQg
Y29tcGxldGlvbjoodm9pZCheKShOU0FycmF5PFVJRHJhZ0l0ZW0gKj4gKikpY29tcGxldGlvbjsK
IEBlbmQKLSNlbmRpZiAvLyBfX0lQSE9ORV9PU19WRVJTSU9OX01BWF9BTExPV0VEID49IDExMDAw
MAorCisjaWYgX19oYXNfaW5jbHVkZSg8VUlLaXQvVUlLZXlib2FyZExvZ2luQ3JlZGVudGlhbHNT
dWdnZXN0aW9uLmg+KQorLy8gRklYTUU6IE1vdmUgdGhpcyBpbXBvcnQgdW5kZXIgVVNFKEFQUExF
X0lOVEVSTkFMX1NESykgb25jZSA8cmRhcjovL3Byb2JsZW0vMzQ1ODM2Mjg+IGxhbmRzIGluIHRo
ZSBTREsuCisjaW1wb3J0IDxVSUtpdC9VSUtleWJvYXJkTG9naW5DcmVkZW50aWFsc1N1Z2dlc3Rp
b24uaD4KKyNlbHNlCitAaW50ZXJmYWNlIFVJS2V5Ym9hcmRMb2dpbkNyZWRlbnRpYWxzU3VnZ2Vz
dGlvbiA6IFVJVGV4dFN1Z2dlc3Rpb24KK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBhc3NpZ24pIE5T
U3RyaW5nICp1c2VybmFtZTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBhc3NpZ24pIE5TU3RyaW5n
ICpwYXNzd29yZDsKK0BlbmQKKyNlbmRpZgogCiAjZW5kaWYgLy8gUExBVEZPUk0oSU9TKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>