<?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>8921</bug_id>
          
          <creation_ts>2006-05-15 10:36:47 -0700</creation_ts>
          <short_desc>Use WebCore to render full-frame images</short_desc>
          <delta_ts>2006-05-16 02:26:32 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>420+</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Anders Carlsson">andersca</reporter>
          <assigned_to name="Anders Carlsson">andersca</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>42379</commentid>
    <comment_count>0</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2006-05-15 10:36:47 -0700</bug_when>
    <thetext>Currently this is handled by WebKit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>42388</commentid>
    <comment_count>1</comment_count>
      <attachid>8325</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2006-05-15 11:54:40 -0700</bug_when>
    <thetext>Created attachment 8325
Implement ImageDocument</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>42389</commentid>
    <comment_count>2</comment_count>
      <attachid>8325</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-05-15 12:08:42 -0700</bug_when>
    <thetext>Comment on attachment 8325
Implement ImageDocument

Maciej says he&apos;s going to review this and I don&apos;t want to steal his thunder.

But I will point out that all or most of WebImageData.h/m, WebImageDecodeItem.h/m, WebImageDecoder.h/m, WebImageRenderer.h/m, and WebImageRendererFactory.h/m can be deleted too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>42428</commentid>
    <comment_count>3</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2006-05-15 18:15:42 -0700</bug_when>
    <thetext>I see no actual bugs, but here&apos;s a few optional style suggestions:

You could conside factoringing the first-time initialization in this function into a separate function:

+bool ImageTokenizer::writeRawData(const char *data, int len)

This could use a FIXME for things that won&apos;t work on non-Apple platforms:

+void ImageTokenizer::finish()

It might be nice to encapsulate the choice of whether to use the decoder and feed raw data a bit better than an &quot;if&quot; in the write function - perhaps a separate function for this, or let the tokenizer manage the decoder, or something.

+    if (Tokenizer* t = d-&gt;m_doc-&gt;tokenizer()) {

Also, as Darin mentioned, it would be nice to remove all the image support code from WebCoreSupport, now that you are removing the last use of it.

Even with all these minor comments, r=me!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>8325</attachid>
            <date>2006-05-15 11:54:40 -0700</date>
            <delta_ts>2006-05-15 18:15:55 -0700</delta_ts>
            <desc>Implement ImageDocument</desc>
            <filename>image-document.txt</filename>
            <type>text/plain</type>
            <size>70662</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL2RvbS94aHRtbC9sZXZlbDIvaHRtbC9mcmFtZS1leHBlY3RlZC5j
aGVja3N1bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9kb20veGh0bWwvbGV2ZWwyL2h0bWwv
ZnJhbWUtZXhwZWN0ZWQuY2hlY2tzdW0JKHJldmlzaW9uIDE0Mzc2KQorKysgTGF5b3V0VGVzdHMv
ZG9tL3hodG1sL2xldmVsMi9odG1sL2ZyYW1lLWV4cGVjdGVkLmNoZWNrc3VtCSh3b3JraW5nIGNv
cHkpCkBAIC0xICsxIEBACi1iOTQ1MGEzZTU5ZmUzMzIyMjhkZTI3NzVjYWYwMmE2ZQpcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIGZpbGUKKzk4YmI3ZTExYzE3ZWJmNGYyYjRhNmUwY2UyNDZmOGI0Clwg
Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpJbmRleDogTGF5b3V0VGVzdHMvZG9tL3hodG1sL2xl
dmVsMi9odG1sL2lmcmFtZS1leHBlY3RlZC5jaGVja3N1bQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9kb20veGh0bWwvbGV2ZWwyL2h0bWwvaWZyYW1lLWV4cGVjdGVkLmNoZWNrc3VtCShyZXZp
c2lvbiAxNDM3NikKKysrIExheW91dFRlc3RzL2RvbS94aHRtbC9sZXZlbDIvaHRtbC9pZnJhbWUt
ZXhwZWN0ZWQuY2hlY2tzdW0JKHdvcmtpbmcgY29weSkKQEAgLTEgKzEgQEAKLTBlMDI1MjIyZWM4
NDUwOTY3MWM0NTFhNjExMWZmNDRlClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorZDIyZmU5
ZTljNjU2Yjc4YWJkODQ1NTI5YjM2ZGJkNDEKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCklu
ZGV4OiBMYXlvdXRUZXN0cy9kb20veGh0bWwvbGV2ZWwyL2h0bWwvZnJhbWUtZXhwZWN0ZWQucG5n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KQ2Fubm90IGRpc3BsYXk6IGZpbGUgbWFya2VkIGFzIGEgYmluYXJ5IHR5cGUu
CnN2bjptaW1lLXR5cGUgPSBpbWFnZS9wbmcKSW5kZXg6IExheW91dFRlc3RzL2RvbS94aHRtbC9s
ZXZlbDIvaHRtbC9pZnJhbWUtZXhwZWN0ZWQucG5nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ2Fubm90IGRpc3BsYXk6
IGZpbGUgbWFya2VkIGFzIGEgYmluYXJ5IHR5cGUuCnN2bjptaW1lLXR5cGUgPSBpbWFnZS9wbmcK
SW5kZXg6IExheW91dFRlc3RzL2RvbS94aHRtbC9sZXZlbDIvaHRtbC9mcmFtZS1leHBlY3RlZC50
eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZG9tL3hodG1sL2xldmVsMi9odG1sL2ZyYW1l
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTQzNzYpCisrKyBMYXlvdXRUZXN0cy9kb20veGh0bWwv
bGV2ZWwyL2h0bWwvZnJhbWUtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC01LDQgKzUs
MTYgQEAgbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCiAgICAgUmVuZGVyRnJhbWVTZXQge2Zy
YW1lc2V0fSBhdCAoMCwwKSBzaXplIDgwMHg2MDAKICAgICAgIFJlbmRlckZyYW1lU2V0IHtmcmFt
ZXNldH0gYXQgKDAsMCkgc2l6ZSAxNTl4NjAwCiAgICAgICAgIFJlbmRlckZyYW1lIHtmcmFtZX0g
YXQgKDAsMCkgc2l6ZSAxNTl4MTk4CisgICAgICAgICAgbGF5ZXIgYXQgKDAsMCkgc2l6ZSAxNTd4
MTk0CisgICAgICAgICAgICBSZW5kZXJDYW52YXMgYXQgKDAsMCkgc2l6ZSAxNTd4MTk0CisgICAg
ICAgICAgbGF5ZXIgYXQgKDAsMCkgc2l6ZSAxNTd4MTgKKyAgICAgICAgICAgIFJlbmRlckJsb2Nr
IHtIVE1MfSBhdCAoMCwwKSBzaXplIDE1N3gxOAorICAgICAgICAgICAgICBSZW5kZXJCb2R5IHtC
T0RZfSBhdCAoMCwwKSBzaXplIDE1N3gxOAorICAgICAgICAgICAgICAgIFJlbmRlckltYWdlIHtJ
TUd9IGF0ICgwLDMpIHNpemUgMTd4MTEKICAgICAgIFJlbmRlckZyYW1lIHtmcmFtZX0gYXQgKDE2
MywwKSBzaXplIDYzN3g2MDAKKyAgICAgICAgbGF5ZXIgYXQgKDAsMCkgc2l6ZSA2MzV4NTk2Cisg
ICAgICAgICAgUmVuZGVyQ2FudmFzIGF0ICgwLDApIHNpemUgNjM1eDU5NgorICAgICAgICBsYXll
ciBhdCAoMCwwKSBzaXplIDYzNXg1MgorICAgICAgICAgIFJlbmRlckJsb2NrIHtIVE1MfSBhdCAo
MCwwKSBzaXplIDYzNXg1MgorICAgICAgICAgICAgUmVuZGVyQm9keSB7Qk9EWX0gYXQgKDAsMCkg
c2l6ZSA2MzV4NTIKKyAgICAgICAgICAgICAgUmVuZGVySW1hZ2Uge0lNR30gYXQgKDAsMCkgc2l6
ZSAzMTV4NDgKSW5kZXg6IExheW91dFRlc3RzL2RvbS94aHRtbC9sZXZlbDIvaHRtbC9pZnJhbWUt
ZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2RvbS94aHRtbC9sZXZlbDIv
aHRtbC9pZnJhbWUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxNDM3NikKKysrIExheW91dFRlc3Rz
L2RvbS94aHRtbC9sZXZlbDIvaHRtbC9pZnJhbWUtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkp
CkBAIC00LDQgKzQsMTAgQEAgbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjYKICAgUmVuZGVyQmxv
Y2sge2h0bWx9IGF0ICgwLDApIHNpemUgODAweDY2CiAgICAgUmVuZGVyQm9keSB7Ym9keX0gYXQg
KDgsOCkgc2l6ZSA3ODR4NTAKICAgICAgIFJlbmRlclBhcnRPYmplY3Qge2lmcmFtZX0gYXQgKDAs
MCkgc2l6ZSA2MHg1MAorICAgICAgICBsYXllciBhdCAoMCwwKSBzaXplIDU4eDQ2CisgICAgICAg
ICAgUmVuZGVyQ2FudmFzIGF0ICgwLDApIHNpemUgNTh4NDYKKyAgICAgICAgbGF5ZXIgYXQgKDAs
MCkgc2l6ZSA1OHgxOAorICAgICAgICAgIFJlbmRlckJsb2NrIHtIVE1MfSBhdCAoMCwwKSBzaXpl
IDU4eDE4CisgICAgICAgICAgICBSZW5kZXJCb2R5IHtCT0RZfSBhdCAoMCwwKSBzaXplIDU4eDE4
CisgICAgICAgICAgICAgIFJlbmRlckltYWdlIHtJTUd9IGF0ICgwLDMpIHNpemUgMTd4MTEKICAg
ICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDB4MApJbmRleDogTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNp
b24gMTQzNzgpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEs
MyArMSwyMCBAQAorMjAwNi0wNS0xNSAgQW5kZXJzIENhcmxzc29uICA8YWNhcmxzc29uQGFwcGxl
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBo
dHRwOi8vYnVnemlsbGEub3BlbmRhcndpbi5vcmcvc2hvd19idWcuY2dpP2lkPTg5MjEKKyAgICAg
ICAgVXNlIFdlYkNvcmUgdG8gcmVuZGVyIGZ1bGwtZnJhbWUgaW1hZ2VzLgorCisgICAgICAgICog
Y3NzMi4xL3QwODAxLWM0MTItaHotYm94LTAwLWItYS1leHBlY3RlZC50eHQ6CisgICAgICAgICog
ZG9tL3hodG1sL2xldmVsMi9odG1sL2ZyYW1lLWV4cGVjdGVkLmNoZWNrc3VtOgorICAgICAgICAq
IGRvbS94aHRtbC9sZXZlbDIvaHRtbC9mcmFtZS1leHBlY3RlZC5wbmc6CisgICAgICAgICogZG9t
L3hodG1sL2xldmVsMi9odG1sL2ZyYW1lLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBkb20veGh0
bWwvbGV2ZWwyL2h0bWwvaWZyYW1lLWV4cGVjdGVkLmNoZWNrc3VtOgorICAgICAgICAqIGRvbS94
aHRtbC9sZXZlbDIvaHRtbC9pZnJhbWUtZXhwZWN0ZWQucG5nOgorICAgICAgICAqIGRvbS94aHRt
bC9sZXZlbDIvaHRtbC9pZnJhbWUtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHRhYmxlcy9tb3pp
bGxhL2J1Z3MvYnVnNTA2OTUtMi1leHBlY3RlZC50eHQ6CisgICAgICAgIFVwZGF0ZSB0ZXN0cy4K
KwogMjAwNi0wNS0xNCAgTWl0eiBQZXR0ZWwgIDxvcGVuZGFyd2luLm9yZ0BtaXR6cGV0dGVsLmNv
bT4KIAogICAgICAgICBSZXZpZXdlZCBieSBIeWF0dC4KSW5kZXg6IExheW91dFRlc3RzL2NzczIu
MS90MDgwMS1jNDEyLWh6LWJveC0wMC1iLWEtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2NzczIuMS90MDgwMS1jNDEyLWh6LWJveC0wMC1iLWEtZXhwZWN0ZWQudHh0CShy
ZXZpc2lvbiAxNDM3NikKKysrIExheW91dFRlc3RzL2NzczIuMS90MDgwMS1jNDEyLWh6LWJveC0w
MC1iLWEtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xMiw0ICsxMiwxMCBAQCBsYXll
ciBhdCAoMCwwKSBzaXplIDgwMHgyNzYKICAgICAgICAgICAgIHRleHQgcnVuIGF0ICg4MCwwKSB3
aWR0aCAzNjA6ICJYIFggWCBYIFgiCiAgICAgICAgIFJlbmRlckJsb2NrIHtQfSBhdCAoMCw1Nikg
c2l6ZSA3ODR4MTU0CiAgICAgICAgICAgUmVuZGVyUGFydE9iamVjdCB7T0JKRUNUfSBhdCAoMCww
KSBzaXplIDMwMHgxNTAKKyAgICAgICAgICAgIGxheWVyIGF0ICgwLDApIHNpemUgNjAweDEzNQor
ICAgICAgICAgICAgICBSZW5kZXJDYW52YXMgYXQgKDAsMCkgc2l6ZSAzMDB4MTM1CisgICAgICAg
ICAgICBsYXllciBhdCAoMCwwKSBzaXplIDYwMHg0NAorICAgICAgICAgICAgICBSZW5kZXJCbG9j
ayB7SFRNTH0gYXQgKDAsMCkgc2l6ZSAzMDB4NDQKKyAgICAgICAgICAgICAgICBSZW5kZXJCb2R5
IHtCT0RZfSBhdCAoMCwwKSBzaXplIDMwMHg0NAorICAgICAgICAgICAgICAgICAgUmVuZGVySW1h
Z2Uge0lNR30gYXQgKDAsMCkgc2l6ZSA2MDB4NDAKICAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4
dH0gYXQgKDAsMCkgc2l6ZSAweDAKSW5kZXg6IExheW91dFRlc3RzL3RhYmxlcy9tb3ppbGxhL2J1
Z3MvYnVnNTA2OTUtMi1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvdGFi
bGVzL21vemlsbGEvYnVncy9idWc1MDY5NS0yLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTQzNzYp
CisrKyBMYXlvdXRUZXN0cy90YWJsZXMvbW96aWxsYS9idWdzL2J1ZzUwNjk1LTItZXhwZWN0ZWQu
dHh0CSh3b3JraW5nIGNvcHkpCkBAIC01LDQgKzUsMTAgQEAgbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4
MDB4NjAwCiAgICAgUmVuZGVyQm9keSB7Qk9EWX0gYXQgKDgsOCkgc2l6ZSA3ODR4NTc2CiAgICAg
ICBSZW5kZXJCbG9jayB7Rk9STX0gYXQgKDAsMCkgc2l6ZSA3ODR4MzAwCiAgICAgICAgIFJlbmRl
clBhcnRPYmplY3Qge0lGUkFNRX0gYXQgKDAsMCkgc2l6ZSAzMDB4MzAwCisgICAgICAgICAgbGF5
ZXIgYXQgKDAsMCkgc2l6ZSAzMDB4MzAwCisgICAgICAgICAgICBSZW5kZXJDYW52YXMgYXQgKDAs
MCkgc2l6ZSAzMDB4MzAwCisgICAgICAgICAgbGF5ZXIgYXQgKDAsMCkgc2l6ZSAzMDB4MTc0Cisg
ICAgICAgICAgICBSZW5kZXJCbG9jayB7SFRNTH0gYXQgKDAsMCkgc2l6ZSAzMDB4MTc0CisgICAg
ICAgICAgICAgIFJlbmRlckJvZHkge0JPRFl9IGF0ICgwLDApIHNpemUgMzAweDE3NAorICAgICAg
ICAgICAgICAgIFJlbmRlckltYWdlIHtJTUd9IGF0ICgwLDApIHNpemUgMjUweDE3MAogICAgICAg
ICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAweDAKSW5kZXg6IFdlYkNvcmUvaHRt
bC9odG1sX2ltYWdlaW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL2h0bWxfaW1h
Z2VpbXBsLmNwcAkocmV2aXNpb24gMTQzNzYpCisrKyBXZWJDb3JlL2h0bWwvaHRtbF9pbWFnZWlt
cGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Myw3ICs0Myw3IEBAIHVzaW5nIG5hbWVzcGFjZSBF
dmVudE5hbWVzOwogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAogSFRNTEltYWdlTG9hZGVy
OjpIVE1MSW1hZ2VMb2FkZXIoRWxlbWVudCogZWx0KQotICAgIDogbV9lbGVtZW50KGVsdCksIG1f
aW1hZ2UoMCksIG1fZmlyZWRMb2FkKHRydWUpLCBtX2ltYWdlQ29tcGxldGUodHJ1ZSkKKyAgICA6
IG1fZWxlbWVudChlbHQpLCBtX2ltYWdlKDApLCBtX2ZpcmVkTG9hZCh0cnVlKSwgbV9pbWFnZUNv
bXBsZXRlKHRydWUpLCBtX2xvYWRNYW51YWxseShmYWxzZSkKIHsKIH0KIApAQCAtNzQsOSArNzQs
MTQgQEAgdm9pZCBIVE1MSW1hZ2VMb2FkZXI6OnVwZGF0ZUZyb21FbGVtZW50KAogICAgIAogICAg
IC8vIFRyZWF0IGEgbGFjayBvZiBzcmMgb3IgZW1wdHkgc3RyaW5nIGZvciBzcmMgYXMgbm8gaW1h
Z2UgYXQgYWxsLgogICAgIENhY2hlZEltYWdlICpuZXdJbWFnZSA9IDA7Ci0gICAgaWYgKCFhdHRy
LmlzRW1wdHkoKSkKLSAgICAgICAgbmV3SW1hZ2UgPSBkb2MtPmRvY0xvYWRlcigpLT5yZXF1ZXN0
SW1hZ2UocGFyc2VVUkwoYXR0cikpOwotCisgICAgaWYgKCFhdHRyLmlzRW1wdHkoKSkgeworICAg
ICAgICBpZiAobV9sb2FkTWFudWFsbHkpIHsKKyAgICAgICAgICAgIG5ld0ltYWdlID0gbmV3IENh
Y2hlZEltYWdlKGRvYy0+ZG9jTG9hZGVyKCksIHBhcnNlVVJMKGF0dHIpLCBLSU86OkNDX1Zlcmlm
eSwgMCk7CisgICAgICAgICAgICBkb2MtPmRvY0xvYWRlcigpLT5tX2RvY09iamVjdHMuc2V0KG5l
d0ltYWdlLT51cmwoKSwgbmV3SW1hZ2UpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIG5l
d0ltYWdlID0gZG9jLT5kb2NMb2FkZXIoKS0+cmVxdWVzdEltYWdlKHBhcnNlVVJMKGF0dHIpKTsK
KyAgICB9CisgICAgCiAgICAgQ2FjaGVkSW1hZ2UgKm9sZEltYWdlID0gbV9pbWFnZTsKICAgICBp
ZiAobmV3SW1hZ2UgIT0gb2xkSW1hZ2UpIHsKICNpZmRlZiBJTlNUUlVNRU5UX0xBWU9VVF9TQ0hF
RFVMSU5HCkluZGV4OiBXZWJDb3JlL2h0bWwvaHRtbF9pbWFnZWltcGwuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL2h0bWwvaHRtbF9pbWFnZWltcGwuaAkocmV2aXNpb24gMTQzNzYpCisrKyBXZWJD
b3JlL2h0bWwvaHRtbF9pbWFnZWltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtNTMsNiArNTMsOCBA
QCBwdWJsaWM6CiAgICAgYm9vbCBpbWFnZUNvbXBsZXRlKCkgY29uc3QgeyByZXR1cm4gbV9pbWFn
ZUNvbXBsZXRlOyB9CiAgICAgQ2FjaGVkSW1hZ2UqIGltYWdlKCkgY29uc3QgeyByZXR1cm4gbV9p
bWFnZTsgfQogCisgICAgdm9pZCBzZXRMb2FkTWFudWFsbHkoYm9vbCBsb2FkTWFudWFsbHkpIHsg
bV9sb2FkTWFudWFsbHkgPSBsb2FkTWFudWFsbHk7IH0KKyAgICAKICAgICAvLyBDYWNoZWRPYmpl
Y3RDbGllbnQgQVBJCiAgICAgdmlydHVhbCB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZE9iamVj
dCopOwogCkBAIC02NCw2ICs2Niw3IEBAIHByaXZhdGU6CiAgICAgQ2FjaGVkSW1hZ2UqIG1faW1h
Z2U7CiAgICAgYm9vbCBtX2ZpcmVkTG9hZCA6IDE7CiAgICAgYm9vbCBtX2ltYWdlQ29tcGxldGUg
OiAxOworICAgIGJvb2wgbV9sb2FkTWFudWFsbHkgOiAxOwogfTsKIAogY2xhc3MgSFRNTEltYWdl
RWxlbWVudCA6IHB1YmxpYyBIVE1MRWxlbWVudCB7CkBAIC05OSw2ICsxMDIsOCBAQCBwdWJsaWM6
CiAKICAgICBDYWNoZWRJbWFnZSogY2FjaGVkSW1hZ2UoKSBjb25zdCB7IHJldHVybiBtX2ltYWdl
TG9hZGVyLmltYWdlKCk7IH0KICAgICAKKyAgICB2b2lkIHNldExvYWRNYW51YWxseSAoYm9vbCBs
b2FkTWFudWFsbHkpIHsgbV9pbWFnZUxvYWRlci5zZXRMb2FkTWFudWFsbHkobG9hZE1hbnVhbGx5
KTsgfQorICAgIAogICAgIFN0cmluZyBuYW1lKCkgY29uc3Q7CiAgICAgdm9pZCBzZXROYW1lKGNv
bnN0IFN0cmluZyYpOwogCkluZGV4OiBXZWJDb3JlL2RvbS94bWxfdG9rZW5pemVyLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9kb20veG1sX3Rva2VuaXplci5oCShyZXZpc2lvbiAxNDM3NikKKysr
IFdlYkNvcmUvZG9tL3htbF90b2tlbml6ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNTMsNiArNTMs
OSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIHByb2Nlc3NpbmdEYXRhKCkgY29uc3QgeyBy
ZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGludCBleGVjdXRpbmdTY3JpcHQoKSBjb25zdCB7
IHJldHVybiAwOyB9CiAKKyAgICB2aXJ0dWFsIGJvb2wgd2FudHNSYXdEYXRhKCkgY29uc3QgeyBy
ZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgd3JpdGVSYXdEYXRhKGNvbnN0IGNoYXIq
IGRhdGEsIGludCBsZW4pIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgCiBwcm90ZWN0ZWQ6CiAgICAg
Ly8gVGhlIHRva2VuaXplciBoYXMgYnVmZmVycywgc28gcGFyc2luZyBtYXkgY29udGludWUgZXZl
biBhZnRlcgogICAgIC8vIGl0IHN0b3BzIHJlY2VpdmluZyBkYXRhLiBXZSB1c2UgbV9wYXJzZXJT
dG9wcGVkIHRvIHN0b3AgdGhlIHRva2VuaXplcgpJbmRleDogV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE0Mzc2KQorKysgV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTEwMCw2ICsxMDAs
OCBAQAogCQkxQTc2MkM3ODBBMDc0RjI2MDA5ODlGNUIgLyogSlNYUGF0aE5TUmVzb2x2ZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBNzYyQzcwMEEw
NzRGMjYwMDk4OUY1QiAvKiBKU1hQYXRoTlNSZXNvbHZlci5oICovOyB9OwogCQkxQTc2MkM3OTBB
MDc0RjI2MDA5ODlGNUIgLyogSlNYUGF0aFJlc3VsdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTc2MkM3MTBBMDc0RjI2MDA5ODlGNUIgLyogSlNY
UGF0aFJlc3VsdC5jcHAgKi87IH07CiAJCTFBNzYyQzdBMEEwNzRGMjYwMDk4OUY1QiAvKiBKU1hQ
YXRoUmVzdWx0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAxQTc2MkM3MjBBMDc0RjI2MDA5ODlGNUIgLyogSlNYUGF0aFJlc3VsdC5oICovOyB9OworCQkx
QTgyMEQ5MTBBMTNFQkE2MDBBRjg0M0MgLyogSW1hZ2VEb2N1bWVudC5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTgyMEQ4RjBBMTNFQkE2MDBBRjg0
M0MgLyogSW1hZ2VEb2N1bWVudC5jcHAgKi87IHNldHRpbmdzID0ge0NPTVBJTEVSX0ZMQUdTID0g
Ii14b2JqZWN0aXZlLWMrKyI7IH07IH07CisJCTFBODIwRDkyMEExM0VCQTYwMEFGODQzQyAvKiBJ
bWFnZURvY3VtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAxQTgyMEQ5MDBBMTNFQkE2MDBBRjg0M0MgLyogSW1hZ2VEb2N1bWVudC5oICovOyB9Owog
CQk1NTBBMEJDOTA4NUY2MDM5MDA3MzUzRDYgLyogUXVhbGlmaWVkTmFtZS5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NTBBMEJDNzA4NUY2MDM5MDA3
MzUzRDYgLyogUXVhbGlmaWVkTmFtZS5jcHAgKi87IH07CiAJCTU1MEEwQkNBMDg1RjYwMzkwMDcz
NTNENiAvKiBRdWFsaWZpZWROYW1lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1NTBBMEJDODA4NUY2MDM5MDA3MzUzRDYgLyogUXVhbGlmaWVkTmFtZS5o
ICovOyB9OwogCQk1NTBBMEJDRDA4NUY2MDREMDA3MzUzRDYgLyogSFRNTE5hbWVzLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1MEEwQkNCMDg1RjYw
NEQwMDczNTNENiAvKiBIVE1MTmFtZXMuY3BwICovOyB9OwpAQCAtMTQyOSw2ICsxNDMxLDggQEAK
IAkJMUE3NjJDNzAwQTA3NEYyNjAwOTg5RjVCIC8qIEpTWFBhdGhOU1Jlc29sdmVyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1hQYXRoTlNSZXNvbHZlci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkxQTc2MkM3MTBBMDc0RjI2MDA5ODlGNUIgLyogSlNYUGF0
aFJlc3VsdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
MzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNYUGF0
aFJlc3VsdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBNzYyQzcyMEEwNzRG
MjYwMDk4OUY1QiAvKiBKU1hQYXRoUmVzdWx0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBKU1hQYXRoUmVzdWx0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFB
ODIwRDhGMEExM0VCQTYwMEFGODQzQyAvKiBJbWFnZURvY3VtZW50LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbWFnZURvY3VtZW50LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMUE4MjBEOTAwQTEzRUJBNjAwQUY4NDNDIC8qIEltYWdlRG9jdW1l
bnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEltYWdlRG9jdW1lbnQuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkQ5MDY2MEIwNjY1RDkzNzAwNkI2RjFBIC8q
IENsaXBib2FyZE1hYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBDbGlwYm9hcmRNYWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lk
dGggPSA4OyB1c2VzVGFicyA9IDA7IH07CiAJCTJEOTA2NjBDMDY2NUQ5MzcwMDZCNkYxQSAvKiBD
bGlwYm9hcmRNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBDbGlwYm9hcmRNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OwogCQk0NzU4QzQ0MzA4QzVGMjE3MDA5QkFG
MDUgLyogS0NhbnZhc1BhdGguY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBLQ2FudmFzUGF0aC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OwpAQCAtNDE5Nyw2ICs0MjAxLDggQEAK
IAkJCQlCQ0IxNkMxMTA5NzlDM0JEMDA0Njc3NDEgLyogRG9jTG9hZGVyLmggKi8sCiAJCQkJOTNB
QkNFNUQwNkUxQTQyRTAwODU5MjVCIC8qIEZvcm1EYXRhLmNwcCAqLywKIAkJCQk5M0FCQ0U1RTA2
RTFBNDJFMDA4NTkyNUIgLyogRm9ybURhdGEuaCAqLywKKwkJCQkxQTgyMEQ4RjBBMTNFQkE2MDBB
Rjg0M0MgLyogSW1hZ2VEb2N1bWVudC5jcHAgKi8sCisJCQkJMUE4MjBEOTAwQTEzRUJBNjAwQUY4
NDNDIC8qIEltYWdlRG9jdW1lbnQuaCAqLywKIAkJCQlCQ0IxNkMxMzA5NzlDM0JEMDA0Njc3NDEg
LyogbG9hZGVyLmNwcCAqLywKIAkJCQlCQ0IxNkMxNDA5NzlDM0JEMDA0Njc3NDEgLyogbG9hZGVy
LmggKi8sCiAJCQkJQkNCMTZDMTUwOTc5QzNCRDAwNDY3NzQxIC8qIFJlcXVlc3QuY3BwICovLApA
QCAtNTI1MCw2ICs1MjU2LDcgQEAKIAkJCQkxQTQ5NEJGQjBBMTIyRjQ0MDBGREFGQzEgLyogSlNI
VE1MRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE0OTRFMzUwQTEyMzU4QjAwRkRBRkMx
IC8qIEpTSFRNTERvY3VtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTQ5NEVERjBBMTIzRjRD
MDBGREFGQzEgLyogSlNEb2N1bWVudEZyYWdtZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQkxQTgy
MEQ5MjBBMTNFQkE2MDBBRjg0M0MgLyogSW1hZ2VEb2N1bWVudC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQTg3MURCMjUwQTE1MEJENjAwQjEyQTY4IC8qIEhUTUxUYWJsZVNlY3Rpb25FbGVtZW50Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQlBODcxREIyNzBBMTUwQkQ2MDBCMTJBNjggLyogSFRNTFRhYmxl
RWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTg3MURCMkEwQTE1MEJENjAwQjEyQTY4IC8q
IEhUTUxUYWJsZUNlbGxFbGVtZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTYwMjksNiArNjAzNiw3
IEBACiAJCQkJMUE0OTRCRkEwQTEyMkY0NDAwRkRBRkMxIC8qIEpTSFRNTEVsZW1lbnQuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMUE0OTRFMzQwQTEyMzU4QjAwRkRBRkMxIC8qIEpTSFRNTERvY3Vt
ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBNDk0RURFMEExMjNGNEMwMEZEQUZDMSAvKiBK
U0RvY3VtZW50RnJhZ21lbnQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMUE4MjBEOTEwQTEzRUJB
NjAwQUY4NDNDIC8qIEltYWdlRG9jdW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTg3MURC
MjYwQTE1MEJENjAwQjEyQTY4IC8qIEhUTUxUYWJsZVNlY3Rpb25FbGVtZW50LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUE4NzFEQjI4MEExNTBCRDYwMEIxMkE2OCAvKiBIVE1MVGFibGVFbGVtZW50
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4NzFEQjI5MEExNTBCRDYwMEIxMkE2OCAvKiBIVE1M
VGFibGVDb2xFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogV2ViQ29yZS9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0Mzc3KQorKysg
V2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw2OSBAQAorMjAwNi0w
NS0xNSAgQW5kZXJzIENhcmxzc29uICA8YWNhcmxzc29uQGFwcGxlLmNvbT4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRwOi8vYnVnemlsbGEub3Bl
bmRhcndpbi5vcmcvc2hvd19idWcuY2dpP2lkPTg5MjEKKyAgICAgICAgVXNlIFdlYkNvcmUgdG8g
cmVuZGVyIGZ1bGwtZnJhbWUgaW1hZ2VzLgorCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICBBZGQgSW1hZ2VEb2N1bWVudC4KKyAgICAgICAgCisg
ICAgICAgICogYnJpZGdlL21hYy9XZWJDb3JlRnJhbWVCcmlkZ2UuaDoKKyAgICAgICAgQWRkIG1h
aW5SZXNvdXJjZVVSTFJlc3BvbnNlIGFuZCBpbWFnZVRpdGxlRm9yRmlsZW5hbWUuCisgICAgICAg
IAorICAgICAgICAqIGJyaWRnZS9tYWMvV2ViQ29yZUZyYW1lQnJpZGdlLm1tOgorICAgICAgICAo
K1tXZWJDb3JlRnJhbWVCcmlkZ2Ugc3VwcG9ydGVkTm9uSW1hZ2VNSU1FVHlwZXNdKToKKyAgICAg
ICAgVGhpcyB1c2VkIHRvIGJlIHN1cHBvcnRlZE1JTUVUeXBlcyBidXQgV2ViS2l0IHJlcXVpcmVz
IHRoYXQgd2UgaGFuZGxlIHRoZQorICAgICAgICBpbWFnZSBNSU1FIHR5cGVzIHNlcGFyYXRlbHku
CisgICAgICAgIAorICAgICAgICAoK1tXZWJDb3JlRnJhbWVCcmlkZ2Ugc3VwcG9ydGVkSW1hZ2VN
SU1FVHlwZXNdKToKKyAgICAgICAgQWRkIGltYWdlIHR5cGVzIGZyb20gV2ViQ29yZUltYWdlUmVu
ZGVyZXJGYWN0b3J5LgorICAgICAgICAKKyAgICAgICAgKC1bV2ViQ29yZUZyYW1lQnJpZGdlIGNh
blByb3ZpZGVEb2N1bWVudFNvdXJjZV0pOgorICAgICAgICBSZXR1cm4gbm8gZm9yIGltYWdlIHR5
cGVzLgorICAgICAgICAKKyAgICAgICAgKiBkb20veG1sX3Rva2VuaXplci5oOgorICAgICAgICAo
V2ViQ29yZTo6VG9rZW5pemVyOjp3YW50c1Jhd0RhdGEpOgorICAgICAgICAoV2ViQ29yZTo6VG9r
ZW5pemVyOjp3cml0ZVJhd0RhdGEpOgorICAgICAgICBOZXcgdmlydHVhbCBmdW5jdGlvbnMgd2hp
Y2ggdG9rZW5pemVycyBjYW4gb3ZlcnJpZGUgaWYgdGhleSB3YW50IHRvIGdldAorICAgICAgICBy
YXcgZGF0YSAod2hpY2ggaXNuJ3QgZmVkIHRocm91Z2ggdGhlIGRlY29kZXIpCisgICAgICAgIAor
ICAgICAgICAqIGh0bWwvaHRtbF9pbWFnZWltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TEltYWdlTG9hZGVyOjpIVE1MSW1hZ2VMb2FkZXIpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElt
YWdlTG9hZGVyOjp1cGRhdGVGcm9tRWxlbWVudCk6CisgICAgICAgIERvbid0IHJlcXVlc3QgdGhl
IGltYWdlIGZyb20gdGhlIGxvYWRlciBpZiB0aGUgbG9hZCBpcyBzZXQgdG8gYmUgbWFudWFsLgor
ICAgICAgICAKKyAgICAgICAgKiBodG1sL2h0bWxfaW1hZ2VpbXBsLmg6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MSW1hZ2VMb2FkZXI6OnNldExvYWRNYW51YWxseSk6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MSW1hZ2VFbGVtZW50OjpzZXRMb2FkTWFudWFsbHkpOgorICAgICAgICBOZXcgZnVuY3Rp
b24gd2hpY2ggZGVjaWRlcyBpZiB0aGUgaW1hZ2UgZGF0YSBzaG91bGQgYmUgZmVkIG1hbnVhbGx5
IG9yIGxvYWRlZAorICAgICAgICBieSB0aGUgbG9hZGVyLgorICAgICAgICAKKyAgICAgICAgKiBs
b2FkZXIvRG9jTG9hZGVyLmg6CisgICAgICAgIEFkZCBIVE1MSW1hZ2VMb2FkZXIgYXMgYSBmcmll
bmQuCisgICAgICAgIAorICAgICAgICAqIGxvYWRlci9JbWFnZURvY3VtZW50LmNwcDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVRva2VuaXplcjo6SW1hZ2VUb2tlbml6ZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VUb2tlbml6ZXI6OndhbnRzUmF3RGF0YSk6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZVRva2VuaXplcjo6d3JpdGUpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VU
b2tlbml6ZXI6OndyaXRlUmF3RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVRva2VuaXpl
cjo6c3RvcFBhcnNpbmcpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VUb2tlbml6ZXI6OmZpbmlz
aCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVRva2VuaXplcjo6aXNXYWl0aW5nRm9yU2NyaXB0
cyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURvY3VtZW50OjpJbWFnZURvY3VtZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OkltYWdlRG9jdW1lbnQ6OmNyZWF0ZVRva2VuaXplcik6CisgICAgICAg
ICogbG9hZGVyL0ltYWdlRG9jdW1lbnQuaDogQWRkZWQuCisgICAgICAgIEFkZCBuZXcgSW1hZ2VE
b2N1bWVudCBjbGFzcyB3aGljaCB3aWxsIGZlZWQgaXRzIGRhdGEgdG8gYSBjcmVhdGVkIGltYWdl
IGVsZW1lbnQuCisKKyAgICAgICAgKiBsb2FkZXIvVGV4dERvY3VtZW50Lmg6CisgICAgICAgIElu
aGVyaXQgZnJvbSBIVE1MRG9jdW1lbnQgaGVyZSB0b28sIGluIGNhc2UgYW55IGJyb2tlbiB3ZWIg
cGFnZXMgd2FudCB0byBtYW5pcHVsYXRlCisgICAgICAgIHRoZSBET00gb2YgYW55IHBsYWluIHRl
eHQgZG9jdW1lbnRzLgorICAgICAgICAKKyAgICAgICAgKiBwYWdlL0ZyYW1lLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZyYW1lOjpiZWdpbik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6d3Jp
dGUpOgorICAgICAgICBEb24ndCBjcmVhdGUgb3IgdXNlIHRoZSBkZWNvZGVyIGlmIHRoZSB0b2tl
bml6ZXIgaXMgaW4gInJhdyBtb2RlIi4KKyAgICAgICAgCiAyMDA2LTA1LTE1ICBFcmljIFNlaWRl
bCAgPGVzZWlkZWxAYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCBsaW51eCBidWlsZC4KSW5kZXg6
IFdlYkNvcmUvYnJpZGdlL21hYy9XZWJDb3JlRnJhbWVCcmlkZ2UubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9icmlkZ2UvbWFjL1dlYkNvcmVGcmFtZUJyaWRnZS5tbQkocmV2aXNpb24gMTQzNzYp
CisrKyBXZWJDb3JlL2JyaWRnZS9tYWMvV2ViQ29yZUZyYW1lQnJpZGdlLm1tCSh3b3JraW5nIGNv
cHkpCkBAIC00OCw2ICs0OCw3IEBACiAjaW1wb3J0ICJGcmFtZU1hYy5oIgogI2ltcG9ydCAiUGFn
ZS5oIgogI2ltcG9ydCAiU2VsZWN0aW9uQ29udHJvbGxlci5oIgorI2ltcG9ydCAiV2ViQ29yZUlt
YWdlUmVuZGVyZXJGYWN0b3J5LmgiCiAjaW1wb3J0ICJXZWJDb3JlUGFnZUJyaWRnZS5oIgogI2lt
cG9ydCAiV2ViQ29yZVNldHRpbmdzLmgiCiAjaW1wb3J0ICJXZWJDb3JlVmlld0ZhY3RvcnkuaCIK
QEAgLTU4LDYgKzU5LDcgQEAKICNpbXBvcnQgImh0bWxfaW1hZ2VpbXBsLmgiCiAjaW1wb3J0ICJo
dG1sZWRpdGluZy5oIgogI2ltcG9ydCAiSFRNTE5hbWVzLmgiCisjaW1wb3J0ICJJbWFnZS5oIgog
I2ltcG9ydCAia2pzX3Byb3h5LmgiCiAjaW1wb3J0ICJranNfd2luZG93LmgiCiAjaW1wb3J0ICJt
YXJrdXAuaCIKQEAgLTM2MSw5ICszNjMsOSBAQCBzdGF0aWMgaW5saW5lIFdlYkNvcmVGcmFtZUJy
aWRnZSAqYnJpZGdlCiAgICAgcmV0dXJuIGJyaWRnZShtX2ZyYW1lLT50cmVlKCktPmZpbmQobmFt
ZSkpOwogfQogCi0rIChOU0FycmF5ICopc3VwcG9ydGVkTUlNRVR5cGVzCisrIChOU0FycmF5ICop
c3VwcG9ydGVkTm9uSW1hZ2VNSU1FVHlwZXMKIHsKLSAgICByZXR1cm4gW05TQXJyYXkgYXJyYXlX
aXRoT2JqZWN0czoKKyAgICByZXR1cm4gW05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0czogICAgICAg
IAogICAgICAgICBAInRleHQvaHRtbCIsCiAgICAgICAgIEAidGV4dC94bWwiLAogICAgICAgICBA
InRleHQveHNsIiwKQEAgLTM4MSw2ICszODMsMTcgQEAgc3RhdGljIGlubGluZSBXZWJDb3JlRnJh
bWVCcmlkZ2UgKmJyaWRnZQogICAgICAgICBuaWxdOwogfQogCisrIChOU0FycmF5ICopc3VwcG9y
dGVkSW1hZ2VNSU1FVHlwZXMKK3sKKyAgICBzdGF0aWMgTlNNdXRhYmxlQXJyYXkgKm1pbWVUeXBl
cyA9IG5pbDsKKyAgICBpZiAobWltZVR5cGVzID09IG5pbCkgeworICAgICAgICBtaW1lVHlwZXMg
PSBbW1tXZWJDb3JlSW1hZ2VSZW5kZXJlckZhY3Rvcnkgc2hhcmVkRmFjdG9yeV0gc3VwcG9ydGVk
TUlNRVR5cGVzXSBtdXRhYmxlQ29weV07CisgICAgICAgIFttaW1lVHlwZXMgcmVtb3ZlT2JqZWN0
OkAiYXBwbGljYXRpb24vcGRmIl07CisgICAgICAgIFttaW1lVHlwZXMgcmVtb3ZlT2JqZWN0OkAi
YXBwbGljYXRpb24vcG9zdHNjcmlwdCJdOworICAgIH0KKyAgICByZXR1cm4gbWltZVR5cGVzOwor
fQorCiArIChXZWJDb3JlRnJhbWVCcmlkZ2UgKilicmlkZ2VGb3JET01Eb2N1bWVudDooRE9NRG9j
dW1lbnQgKilkb2N1bWVudAogewogICAgIHJldHVybiBicmlkZ2UoW2RvY3VtZW50IF9kb2N1bWVu
dF0tPmZyYW1lKCkpOwpAQCAtMjQ2Miw3ICsyNDc1LDggQEAgc3RhdGljIE5TQ2hhcmFjdGVyU2V0
ICpfZ2V0UG9zdFNtYXJ0U2V0KAogewogICAgIFN0cmluZyBtaW1lVHlwZSA9IG1fZnJhbWUtPnJl
c291cmNlUmVxdWVzdCgpLm1fcmVzcG9uc2VNSU1FVHlwZTsKICAgICAKLSAgICBpZiAoV2ViQ29y
ZTo6RE9NSW1wbGVtZW50YXRpb246OmlzVGV4dE1JTUVUeXBlKG1pbWVUeXBlKSkKKyAgICBpZiAo
V2ViQ29yZTo6RE9NSW1wbGVtZW50YXRpb246OmlzVGV4dE1JTUVUeXBlKG1pbWVUeXBlKSB8fAor
ICAgICAgICBJbWFnZTo6c3VwcG9ydHNUeXBlKG1pbWVUeXBlKSkKICAgICAgICAgcmV0dXJuIE5P
OwogICAgIAogICAgIHJldHVybiBZRVM7CkluZGV4OiBXZWJDb3JlL2JyaWRnZS9tYWMvV2ViQ29y
ZUZyYW1lQnJpZGdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9icmlkZ2UvbWFjL1dlYkNvcmVG
cmFtZUJyaWRnZS5oCShyZXZpc2lvbiAxNDM3NikKKysrIFdlYkNvcmUvYnJpZGdlL21hYy9XZWJD
b3JlRnJhbWVCcmlkZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtMTg2LDcgKzE4Niw4IEBAIHR5cGVk
ZWYgZW51bSB7CiAtIChpZClpbml0TWFpbkZyYW1lV2l0aFBhZ2U6KFdlYkNvcmVQYWdlQnJpZGdl
ICopcGFnZTsKIC0gKGlkKWluaXRTdWJmcmFtZVdpdGhSZW5kZXJlcjooV2ViQ29yZVJlbmRlclBh
cnQgKilyZW5kZXJlcjsKIAotKyAoTlNBcnJheSAqKXN1cHBvcnRlZE1JTUVUeXBlczsKKysgKE5T
QXJyYXkgKilzdXBwb3J0ZWROb25JbWFnZU1JTUVUeXBlczsKKysgKE5TQXJyYXkgKilzdXBwb3J0
ZWRJbWFnZU1JTUVUeXBlczsKIAogLSAodm9pZClpbml0aWFsaXplU2V0dGluZ3M6KFdlYkNvcmVT
ZXR0aW5ncyAqKXNldHRpbmdzOwogCkBAIC02NjQsNiArNjY1LDkgQEAgdHlwZWRlZiBlbnVtIHsK
IAogLSAoV2ViQ29yZUtleWJvYXJkVUlNb2RlKWtleWJvYXJkVUlNb2RlOwogCistIChOU1VSTFJl
c3BvbnNlKiltYWluUmVzb3VyY2VVUkxSZXNwb25zZTsKKy0gKE5TU3RyaW5nKilpbWFnZVRpdGxl
Rm9yRmlsZW5hbWU6KE5TU3RyaW5nKilmaWxlbmFtZSBzaXplOihOU1NpemUpc2l6ZTsKKwogQGVu
ZAogCiAvLyBUaGlzIGludGVyZmFjZSBkZWZpbml0aW9uIGFsbG93cyB0aG9zZSB3aG8gaG9sZCBh
IFdlYkNvcmVGcmFtZUJyaWRnZSAqIHRvIGNhbGwgYWxsIHRoZSBtZXRob2RzCkluZGV4OiBXZWJD
b3JlL2xvYWRlci9JbWFnZURvY3VtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRl
ci9JbWFnZURvY3VtZW50LmNwcAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvbG9hZGVyL0ltYWdl
RG9jdW1lbnQuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE1MCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAwNiBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBV
VEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVU
RVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIkltYWdlRG9jdW1lbnQuaCIKKworI2luY2x1ZGUg
IkNhY2hlZEltYWdlLmgiCisjaW5jbHVkZSAiRWxlbWVudC5oIgorI2luY2x1ZGUgIkhUTUxOYW1l
cy5oIgorI2luY2x1ZGUgIlNlZ21lbnRlZFN0cmluZy5oIgorI2luY2x1ZGUgIlRleHQuaCIKKyNp
bmNsdWRlICJodG1sX2ltYWdlaW1wbC5oIgorI2luY2x1ZGUgInhtbF90b2tlbml6ZXIuaCIKKwor
I2lmZGVmIF9fQVBQTEVfXworI2luY2x1ZGUgPENvY29hL0NvY29hLmg+CisjaW5jbHVkZSAiRnJh
bWVNYWMuaCIKKyNpbmNsdWRlICJXZWJDb3JlRnJhbWVCcmlkZ2UuaCIKKyNlbmRpZiAKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworICAgIAordXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKKyAgICAK
K2NsYXNzIEltYWdlVG9rZW5pemVyIDogcHVibGljIFRva2VuaXplciB7CitwdWJsaWM6CisgICAg
SW1hZ2VUb2tlbml6ZXIoRG9jdW1lbnQqIGRvYykgOiBtX2RvYyhkb2MpLCBtX2ltYWdlRWxlbWVu
dCgwKSB7fQorICAgICAgICAKKyAgICB2aXJ0dWFsIGJvb2wgd3JpdGUoY29uc3QgU2VnbWVudGVk
U3RyaW5nJiwgYm9vbCBhcHBlbmREYXRhKTsKKyAgICB2aXJ0dWFsIHZvaWQgc3RvcFBhcnNpbmco
KTsKKyAgICB2aXJ0dWFsIHZvaWQgZmluaXNoKCk7CisgICAgdmlydHVhbCBib29sIGlzV2FpdGlu
Z0ZvclNjcmlwdHMoKSBjb25zdDsKKyAgICAKKyAgICB2aXJ0dWFsIGJvb2wgd2FudHNSYXdEYXRh
KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgYm9vbCB3cml0ZVJhd0RhdGEo
Y29uc3QgY2hhciAqZGF0YSwgaW50IGxlbik7Citwcml2YXRlOgorICAgIERvY3VtZW50KiBtX2Rv
YzsKKyAgICBIVE1MSW1hZ2VFbGVtZW50KiBtX2ltYWdlRWxlbWVudDsKKyAgICBEZXByZWNhdGVk
Qnl0ZUFycmF5IG1fYnVmZmVyOworfTsKKyAgICAKK2Jvb2wgSW1hZ2VUb2tlbml6ZXI6OndyaXRl
KGNvbnN0IFNlZ21lbnRlZFN0cmluZyYgcywgYm9vbCBhcHBlbmREYXRhKQoreworICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKyAgICAKK2Jvb2wgSW1hZ2VU
b2tlbml6ZXI6OndyaXRlUmF3RGF0YShjb25zdCBjaGFyICpkYXRhLCBpbnQgbGVuKQoreworICAg
IGlmICghbV9pbWFnZUVsZW1lbnQpIHsgIAorICAgICAgICBFeGNlcHRpb25Db2RlIGVjOworCisg
ICAgICAgIFJlZlB0cjxFbGVtZW50PiByb290RWxlbWVudCA9IG1fZG9jLT5jcmVhdGVFbGVtZW50
TlMoeGh0bWxOYW1lc3BhY2VVUkksICJodG1sIiwgZWMpOworICAgICAgICBtX2RvYy0+YXBwZW5k
Q2hpbGQocm9vdEVsZW1lbnQsIGVjKTsKKyAgICAgICAgCisgICAgICAgIFJlZlB0cjxFbGVtZW50
PiBib2R5ID0gbV9kb2MtPmNyZWF0ZUVsZW1lbnROUyh4aHRtbE5hbWVzcGFjZVVSSSwgImJvZHki
LCBlYyk7CisgICAgICAgIGJvZHktPnNldEF0dHJpYnV0ZShzdHlsZUF0dHIsICJtYXJnaW46IDBw
eDsiKTsKKworICAgICAgICByb290RWxlbWVudC0+YXBwZW5kQ2hpbGQoYm9keSwgZWMpOworICAg
IAorICAgICAgICBSZWZQdHI8RWxlbWVudD4gaW1hZ2VFbGVtZW50ID0gbV9kb2MtPmNyZWF0ZUVs
ZW1lbnROUyh4aHRtbE5hbWVzcGFjZVVSSSwgImltZyIsIGVjKTsKKworICAgICAgICBtX2ltYWdl
RWxlbWVudCA9IHN0YXRpY19jYXN0PEhUTUxJbWFnZUVsZW1lbnQgKj4oaW1hZ2VFbGVtZW50Lmdl
dCgpKTsKKyAgICAgICAgbV9pbWFnZUVsZW1lbnQtPnNldEF0dHJpYnV0ZShzdHlsZUF0dHIsICIt
d2Via2l0LXVzZXItc2VsZWN0OiBub25lIik7ICAgICAgICAKKyAgICAgICAgbV9pbWFnZUVsZW1l
bnQtPnNldExvYWRNYW51YWxseSh0cnVlKTsKKyAgICAgICAgbV9pbWFnZUVsZW1lbnQtPnNldFNy
YyhtX2RvYy0+VVJMKCkpOworICAgICAgICAKKyAgICAgICAgYm9keS0+YXBwZW5kQ2hpbGQoaW1h
Z2VFbGVtZW50LCBlYyk7CisgICAgfQorCisgICAgdW5zaWduZWQgb2xkU2l6ZSA9IG1fYnVmZmVy
LnNpemUoKTsKKyAgICBtX2J1ZmZlci5yZXNpemUob2xkU2l6ZSArIGxlbik7CisgICAgbWVtY3B5
KG1fYnVmZmVyLmRhdGEoKSArIG9sZFNpemUsIGRhdGEsIGxlbik7CisKKyAgICBtX2ltYWdlRWxl
bWVudC0+Y2FjaGVkSW1hZ2UoKS0+ZGF0YShtX2J1ZmZlciwgZmFsc2UpOworCisgICAgcmV0dXJu
IGZhbHNlOworfQorCit2b2lkIEltYWdlVG9rZW5pemVyOjpzdG9wUGFyc2luZygpCit7CisgICAg
VG9rZW5pemVyOjpzdG9wUGFyc2luZygpOworICAgCisgICAgbV9pbWFnZUVsZW1lbnQtPmNhY2hl
ZEltYWdlKCktPmVycm9yKCk7Cit9CisKK3ZvaWQgSW1hZ2VUb2tlbml6ZXI6OmZpbmlzaCgpCit7
CisgICAgaWYgKCFtX3BhcnNlclN0b3BwZWQpIHsKKyAgICAgICAgbV9pbWFnZUVsZW1lbnQtPmNh
Y2hlZEltYWdlKCktPmRhdGEobV9idWZmZXIsIHRydWUpOworCisjaWZkZWYgX19BUFBMRV9fCisg
ICAgICAgIFdlYkNvcmVGcmFtZUJyaWRnZSAqYnJpZGdlID0gTWFjKG1fZG9jLT5mcmFtZSgpKS0+
YnJpZGdlKCk7CisgICAgICAgIE5TVVJMUmVzcG9uc2UgKnJlc3BvbnNlID0gW2JyaWRnZSBtYWlu
UmVzb3VyY2VVUkxSZXNwb25zZV07CisgICAgICAgIE5TRGF0YSAqZGF0YSA9IFtOU0RhdGEgZGF0
YVdpdGhCeXRlczptX2J1ZmZlci5kYXRhKCkgbGVuZ3RoOm1fYnVmZmVyLnNpemUoKV07CisgICAg
ICAgIG1faW1hZ2VFbGVtZW50LT5jYWNoZWRJbWFnZSgpLT5zZXRBbGxEYXRhKFtkYXRhIHJldGFp
bl0pOworICAgICAgICBtX2ltYWdlRWxlbWVudC0+Y2FjaGVkSW1hZ2UoKS0+c2V0UmVzcG9uc2Uo
cmVzcG9uc2UpOworCisgICAgICAgIGlmIChtX2ltYWdlRWxlbWVudC0+Y2FjaGVkSW1hZ2UoKS0+
aW1hZ2VTaXplKCkud2lkdGgoKSA+IDApIHsKKyAgICAgICAgICAgIE5TU2l6ZSBzaXplID0gTlNN
YWtlU2l6ZShtX2ltYWdlRWxlbWVudC0+Y2FjaGVkSW1hZ2UoKS0+aW1hZ2VTaXplKCkud2lkdGgo
KSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9pbWFnZUVsZW1lbnQt
PmNhY2hlZEltYWdlKCktPmltYWdlU2l6ZSgpLmhlaWdodCgpKTsKKyAgICAgICAgICAgIG1fZG9j
LT5zZXRUaXRsZShbYnJpZGdlIGltYWdlVGl0bGVGb3JGaWxlbmFtZTpbcmVzcG9uc2Ugc3VnZ2Vz
dGVkRmlsZW5hbWVdCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNpemU6c2l6ZV0pOworICAgICAgICB9CisgICAgfQorI2VuZGlmCisKKyAgICBt
X2RvYy0+ZmluaXNoZWRQYXJzaW5nKCk7ICAgIAorICAgIAorfQorICAgIAorYm9vbCBJbWFnZVRv
a2VuaXplcjo6aXNXYWl0aW5nRm9yU2NyaXB0cygpIGNvbnN0Cit7CisgICAgLy8gQW4gaW1hZ2Ug
ZG9jdW1lbnQgaXMgbmV2ZXIgd2FpdGluZyBmb3Igc2NyaXB0cworICAgIHJldHVybiBmYWxzZTsK
K30KKyAgICAKK0ltYWdlRG9jdW1lbnQ6OkltYWdlRG9jdW1lbnQoRE9NSW1wbGVtZW50YXRpb24g
Kl9pbXBsZW1lbnRhdGlvbiwgRnJhbWVWaWV3ICp2KQorICAgIDogSFRNTERvY3VtZW50KF9pbXBs
ZW1lbnRhdGlvbiwgdikKK3sKK30KKyAgICAKK1Rva2VuaXplciogSW1hZ2VEb2N1bWVudDo6Y3Jl
YXRlVG9rZW5pemVyKCkKK3sKKyAgICByZXR1cm4gbmV3IEltYWdlVG9rZW5pemVyKHRoaXMpOwor
fQorICAgIAorfQpJbmRleDogV2ViQ29yZS9sb2FkZXIvRG9jTG9hZGVyLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9sb2FkZXIvRG9jTG9hZGVyLmgJKHJldmlzaW9uIDE0Mzc2KQorKysgV2ViQ29y
ZS9sb2FkZXIvRG9jTG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDcgKzQ1LDggQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIENhY2hlZFhTTFN0eWxlU2hlZXQ7CiAgICAgY2xh
c3MgRG9jdW1lbnQ7CiAgICAgY2xhc3MgRnJhbWU7Ci0KKyAgICBjbGFzcyBIVE1MSW1hZ2VMb2Fk
ZXI7CisgICAgCiAgICAgLyoqCiAgICAgICogTWFuYWdlcyB0aGUgbG9hZGluZyBvZiBzY3JpcHRz
L2ltYWdlcy9zdHlsZXNoZWV0cyBmb3IgYSBwYXJ0aWN1bGFyIGRvY3VtZW50CiAgICAgICovCkBA
IC04OCw2ICs4OSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICBmcmllbmQgY2xh
c3MgQ2FjaGU7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBXZWJDb3JlOjpEb2N1bWVudDsKKyAgICAg
ICAgZnJpZW5kIGNsYXNzIFdlYkNvcmU6OkhUTUxJbWFnZUxvYWRlcjsKIAogICAgICAgICBEZXBy
ZWNhdGVkU3RyaW5nTGlzdCBtX3JlbG9hZGVkVVJMczsKICAgICAgICAgbXV0YWJsZSBIYXNoTWFw
PFN0cmluZywgQ2FjaGVkT2JqZWN0Kj4gbV9kb2NPYmplY3RzOwpJbmRleDogV2ViQ29yZS9sb2Fk
ZXIvSW1hZ2VEb2N1bWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL0ltYWdlRG9j
dW1lbnQuaAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvbG9hZGVyL0ltYWdlRG9jdW1lbnQuaAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSw0NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNiBB
cHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisjaWZuZGVmIEltYWdlRG9jdW1lbnRf
aAorI2RlZmluZSBJbWFnZURvY3VtZW50X2gKKworI2luY2x1ZGUgIkhUTUxEb2N1bWVudC5oIgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisgICAgCitjbGFzcyBET01JbXBsZW1lbnRhdGlvbjsKK2Ns
YXNzIEZyYW1lVmlldzsKKyAgICAKK2NsYXNzIEltYWdlRG9jdW1lbnQgOiBwdWJsaWMgSFRNTERv
Y3VtZW50Cit7CitwdWJsaWM6CisgICAgSW1hZ2VEb2N1bWVudChET01JbXBsZW1lbnRhdGlvbios
IEZyYW1lVmlldyogPSAwKTsKKworICAgIHZpcnR1YWwgVG9rZW5pemVyKiBjcmVhdGVUb2tlbml6
ZXIoKTsKK307CisgICAgCit9CisKKyNlbmRpZiAvLyBJbWFnZURvY3VtZW50X2gKSW5kZXg6IFdl
YkNvcmUvcGFnZS9GcmFtZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0ZyYW1lLmNw
cAkocmV2aXNpb24gMTQzNzYpCisrKyBXZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC00OSw2ICs0OSw3IEBACiAjaW5jbHVkZSAiSFRNTEdlbmVyaWNGb3JtRWxlbWVudC5o
IgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIkhUTUxPYmplY3RFbGVtZW50Lmgi
CisjaW5jbHVkZSAiSW1hZ2VEb2N1bWVudC5oIgogI2luY2x1ZGUgIk1vdXNlRXZlbnRXaXRoSGl0
VGVzdFJlc3VsdHMuaCIKICNpbmNsdWRlICJOb2RlTGlzdC5oIgogI2luY2x1ZGUgIlBsdWdpbi5o
IgpAQCAtNjAwLDcgKzYwMSw5IEBAIHZvaWQgRnJhbWU6OmJlZ2luKGNvbnN0IEtVUkwmIHVybCkK
ICAgaWYgKERPTUltcGxlbWVudGF0aW9uOjppc1hNTE1JTUVUeXBlKGQtPm1fcmVxdWVzdC5tX3Jl
c3BvbnNlTUlNRVR5cGUpKQogICAgIGQtPm1fZG9jID0gRE9NSW1wbGVtZW50YXRpb246Omluc3Rh
bmNlKCktPmNyZWF0ZURvY3VtZW50KGQtPm1fdmlldy5nZXQoKSk7CiAgIGVsc2UgaWYgKERPTUlt
cGxlbWVudGF0aW9uOjppc1RleHRNSU1FVHlwZShkLT5tX3JlcXVlc3QubV9yZXNwb25zZU1JTUVU
eXBlKSkKLSAgICBkLT5tX2RvYyA9IERPTUltcGxlbWVudGF0aW9uOjppbnN0YW5jZSgpLT5jcmVh
dGVUZXh0RG9jdW1lbnQoZC0+bV92aWV3LmdldCgpKTsKKyAgICBkLT5tX2RvYyA9IG5ldyBUZXh0
RG9jdW1lbnQoRE9NSW1wbGVtZW50YXRpb246Omluc3RhbmNlKCksIGQtPm1fdmlldy5nZXQoKSk7
CisgZWxzZSBpZiAoSW1hZ2U6OnN1cHBvcnRzVHlwZShkLT5tX3JlcXVlc3QubV9yZXNwb25zZU1J
TUVUeXBlKSkKKyAgICBkLT5tX2RvYyA9IG5ldyBJbWFnZURvY3VtZW50KERPTUltcGxlbWVudGF0
aW9uOjppbnN0YW5jZSgpLCBkLT5tX3ZpZXcuZ2V0KCkpOwogICBlbHNlCiAgICAgZC0+bV9kb2Mg
PSBET01JbXBsZW1lbnRhdGlvbjo6aW5zdGFuY2UoKS0+Y3JlYXRlSFRNTERvY3VtZW50KGQtPm1f
dmlldy5nZXQoKSk7CiAKQEAgLTYzMSw2ICs2MzQsMTkgQEAgdm9pZCBGcmFtZTo6YmVnaW4oY29u
c3QgS1VSTCYgdXJsKQogCiB2b2lkIEZyYW1lOjp3cml0ZShjb25zdCBjaGFyKiBzdHIsIGludCBs
ZW4pCiB7CisgICAgaWYgKGxlbiA9PSAwKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgaWYg
KGxlbiA9PSAtMSkKKyAgICAgICAgbGVuID0gc3RybGVuKHN0cik7CisKKyAgICBpZiAoVG9rZW5p
emVyKiB0ID0gZC0+bV9kb2MtPnRva2VuaXplcigpKSB7CisgICAgICAgIGlmICh0LT53YW50c1Jh
d0RhdGEoKSkgeworICAgICAgICAgICAgdC0+d3JpdGVSYXdEYXRhKHN0ciwgbGVuKTsKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KKyAgICAKICAgICBpZiAoIWQtPm1fZGVj
b2RlcikgewogICAgICAgICBkLT5tX2RlY29kZXIgPSBuZXcgRGVjb2RlcjsKICAgICAgICAgaWYg
KCFkLT5tX2VuY29kaW5nLmlzTnVsbCgpKQpAQCAtNjQyLDEyICs2NTgsNiBAQCB2b2lkIEZyYW1l
Ojp3cml0ZShjb25zdCBjaGFyKiBzdHIsIGludCBsCiAgICAgICAgIGlmIChkLT5tX2RvYykKICAg
ICAgICAgICAgIGQtPm1fZG9jLT5zZXREZWNvZGVyKGQtPm1fZGVjb2Rlci5nZXQoKSk7CiAgICAg
fQotICBpZiAobGVuID09IDApCi0gICAgcmV0dXJuOwotCi0gIGlmIChsZW4gPT0gLTEpCi0gICAg
bGVuID0gc3RybGVuKHN0cik7Ci0KICAgRGVwcmVjYXRlZFN0cmluZyBkZWNvZGVkID0gZC0+bV9k
ZWNvZGVyLT5kZWNvZGUoc3RyLCBsZW4pOwogCiAgIGlmIChkZWNvZGVkLmlzRW1wdHkoKSkKQEAg
LTY2Myw4ICs2NzMsMTAgQEAgdm9pZCBGcmFtZTo6d3JpdGUoY29uc3QgY2hhciogc3RyLCBpbnQg
bAogICAgICAgZC0+bV9kb2MtPnJlY2FsY1N0eWxlKE5vZGU6OkZvcmNlKTsKICAgfQogCi0gIGlm
IChUb2tlbml6ZXIqIHQgPSBkLT5tX2RvYy0+dG9rZW5pemVyKCkpCisgIGlmIChUb2tlbml6ZXIq
IHQgPSBkLT5tX2RvYy0+dG9rZW5pemVyKCkpIHsKKyAgICAgIEFTU0VSVCghdC0+d2FudHNSYXdE
YXRhKCkpOwogICAgICAgdC0+d3JpdGUoZGVjb2RlZCwgdHJ1ZSk7CisgIH0KIH0KIAogdm9pZCBG
cmFtZTo6d3JpdGUoY29uc3QgRGVwcmVjYXRlZFN0cmluZyYgc3RyKQpJbmRleDogV2ViS2l0L1dl
YktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9XZWJL
aXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTQzNzYpCisrKyBXZWJLaXQv
V2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTExMSw4
ICsxMTEsNiBAQAogCQk5Mzk4MTA1NjA4MjRCRjAxMDA4REYwMzggLyogV2ViSFRNTFJlcHJlc2Vu
dGF0aW9uUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRjVBNTVEQzcwMkJBQTJFODAxODYzNUNDIC8qIFdlYkhUTUxSZXByZXNlbnRhdGlvblBy
aXZhdGUuaCAqLzsgfTsKIAkJOTM5ODEwNTcwODI0QkYwMTAwOERGMDM4IC8qIFdlYkhUTUxWaWV3
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzNTA4MUQ5
NDAyQjZENEQ4MEFDQTJBQ0EgLyogV2ViSFRNTFZpZXcuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5Mzk4MTA1ODA4MjRCRjAxMDA4REYwMzggLyog
V2ViSFRNTFZpZXdQcml2YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAzNTA4MUQ5NjAyQjZENEQ4MEFDQTJBQ0EgLyogV2ViSFRNTFZpZXdQcml2YXRl
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJOTM5
ODEwNTkwODI0QkYwMTAwOERGMDM4IC8qIFdlYkltYWdlUmVwcmVzZW50YXRpb24uaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM1MDgxRDk4MDJCNkQ0RDgw
QUNBMkFDQSAvKiBXZWJJbWFnZVJlcHJlc2VudGF0aW9uLmggKi87IH07Ci0JCTkzOTgxMDVBMDgy
NEJGMDEwMDhERjAzOCAvKiBXZWJJbWFnZVZpZXcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM1MDgxRDlBMDJCNkQ0RDgwQUNBMkFDQSAvKiBXZWJJbWFn
ZVZpZXcuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9ICgpOyB9OyB9OwogCQk5Mzk4MTA1
QjA4MjRCRjAxMDA4REYwMzggLyogV2ViRnJhbWVMb2FkRGVsZWdhdGUuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNTJGQUU1MDMzRkM1MjIwMENBMkFD
RCAvKiBXZWJGcmFtZUxvYWREZWxlZ2F0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFB1YmxpYywgKTsgfTsgfTsKIAkJOTM5ODEwNUMwODI0QkYwMTAwOERGMDM4IC8qIFdlYk1haW5S
ZXNvdXJjZUxvYWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRjVENTM4RTgwMjQ0MUYyNjAxQTgwMTgxIC8qIFdlYk1haW5SZXNvdXJjZUxvYWRlci5o
ICovOyB9OwogCQk5Mzk4MTA1RDA4MjRCRjAxMDA4REYwMzggLyogV2ViUHJlZmVyZW5jZXMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM5NDQ2MDZFMDIw
RjUwRUQwRUNBMTc2NyAvKiBXZWJQcmVmZXJlbmNlcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFB1YmxpYywgKTsgfTsgfTsKQEAgLTIzMyw4ICsyMzEsNiBAQAogCQk5Mzk4MTBGMjA4
MjRCRjAxMDA4REYwMzggLyogV2ViRnJhbWUubSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEY1MTQzQTM3MDIyMURDQ0UwMUE4MDE4MSAvKiBXZWJGcmFtZS5t
ICovOyB9OwogCQk5Mzk4MTBGMzA4MjRCRjAxMDA4REYwMzggLyogV2ViSFRNTFJlcHJlc2VudGF0
aW9uLm0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzNTA4
MUQ5MzAyQjZENEQ4MEFDQTJBQ0EgLyogV2ViSFRNTFJlcHJlc2VudGF0aW9uLm0gKi87IH07CiAJ
CTkzOTgxMEY0MDgyNEJGMDEwMDhERjAzOCAvKiBXZWJIVE1MVmlldy5tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzUwODFEOTUwMkI2RDREODBBQ0EyQUNB
IC8qIFdlYkhUTUxWaWV3Lm0gKi87IH07Ci0JCTkzOTgxMEY1MDgyNEJGMDEwMDhERjAzOCAvKiBX
ZWJJbWFnZVJlcHJlc2VudGF0aW9uLm0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAzNTA4MUQ5OTAyQjZENEQ4MEFDQTJBQ0EgLyogV2ViSW1hZ2VSZXByZXNl
bnRhdGlvbi5tICovOyB9OwotCQk5Mzk4MTBGNjA4MjRCRjAxMDA4REYwMzggLyogV2ViSW1hZ2VW
aWV3Lm0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzNTA4
MUQ5QjAyQjZENEQ4MEFDQTJBQ0EgLyogV2ViSW1hZ2VWaWV3Lm0gKi87IH07CiAJCTkzOTgxMEY3
MDgyNEJGMDEwMDhERjAzOCAvKiBXZWJNYWluUmVzb3VyY2VMb2FkZXIubSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY1RDUzOEVDMDI0NDFGREQwMUE4MDE4
MSAvKiBXZWJNYWluUmVzb3VyY2VMb2FkZXIubSAqLzsgfTsKIAkJOTM5ODEwRjgwODI0QkYwMTAw
OERGMDM4IC8qIFdlYlByZWZlcmVuY2VzLm0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBGNUFFQkIzRDAyNEE1Mjc2MDFDMUE1MjYgLyogV2ViUHJlZmVyZW5j
ZXMubSAqLzsgfTsKIAkJOTM5ODEwRjkwODI0QkYwMTAwOERGMDM4IC8qIFdlYlJlbmRlck5vZGUu
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY1RjgxQzNB
MDJCNjdDMjYwMTg2MzVDQSAvKiBXZWJSZW5kZXJOb2RlLm0gKi87IH07CkBAIC0zNjMsMTAgKzM1
OSw2IEBACiAJCTM1MDgxRDk0MDJCNkQ0RDgwQUNBMkFDQSAvKiBXZWJIVE1MVmlldy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGluZGVudFdpZHRoID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkhUTUxWaWV3
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9
OwogCQkzNTA4MUQ5NTAyQjZENEQ4MEFDQTJBQ0EgLyogV2ViSFRNTFZpZXcubSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBpbmRlbnRXaWR0aCA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLm9iamM7IHBhdGggPSBXZWJIVE1MVmlldy5t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsK
IAkJMzUwODFEOTYwMkI2RDREODBBQ0EyQUNBIC8qIFdlYkhUTUxWaWV3UHJpdmF0ZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGluZGVudFdpZHRoID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkhUTUxWaWV3
UHJpdmF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJz
ID0gMDsgfTsKLQkJMzUwODFEOTgwMkI2RDREODBBQ0EyQUNBIC8qIFdlYkltYWdlUmVwcmVzZW50
YXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBp
bmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXZWJJbWFnZVJlcHJlc2VudGF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldp
ZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OwotCQkzNTA4MUQ5OTAyQjZENEQ4MEFDQTJBQ0EgLyog
V2ViSW1hZ2VSZXByZXNlbnRhdGlvbi5tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMub2JqYzsgcGF0aCA9IFdlYkltYWdlUmVwcmVzZW50YXRpb24ubTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07Ci0JCTM1MDgxRDlB
MDJCNkQ0RDgwQUNBMkFDQSAvKiBXZWJJbWFnZVZpZXcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJJbWFnZVZpZXcuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07Ci0JCTM1MDgxRDlCMDJC
NkQ0RDgwQUNBMkFDQSAvKiBXZWJJbWFnZVZpZXcubSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLm9iamM7IHBhdGggPSBXZWJJbWFnZVZpZXcubTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CiAJCTM1MDgxREFFMDJC
NkQ0RjUwQUNBMkFDQSAvKiBXZWJEb2N1bWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkRvY3VtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OwogCQkzNUYzNTc3RjAxOThBQUI4
MEFDQTE1MjAgLyogRW5nbGlzaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQucGxp
c3Quc3RyaW5nczsgbmFtZSA9IEVuZ2xpc2g7IHBhdGggPSBFbmdsaXNoLmxwcm9qL0xvY2FsaXph
YmxlLnN0cmluZ3M7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1Rh
YnMgPSAwOyB9OwogCQkzOTQ0NjA2QjAyMEY1MEVEMEVDQTE3NjcgLyogV2ViRHluYW1pY1Njcm9s
bEJhcnNWaWV3LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV2ViRHluYW1pY1Njcm9sbEJhcnNWaWV3Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OwpAQCAtOTA0LDcgKzg5Niw2IEBACiAJCQkJ
NjU1MEI3QzUwOTlFRkFFOTAwOTBENzgxIC8qIFdlYkFyY2hpdmVyLmggKi8sCiAJCQkJNjU1MEI3
QzYwOTlFRkFFOTAwOTBENzgxIC8qIFdlYkFyY2hpdmVyLm0gKi8sCiAJCQkJRjUyQ0E2QkQwMkRG
OUQwRjAxODYzNUNBIC8qIEhUTUwgKi8sCi0JCQkJRjUyQ0E2QkUwMkRGOUQ0OTAxODYzNUNBIC8q
IEltYWdlICovLAogCQkJCTUxRTk0QzA3MDZDMDJDQTMwMEE5QjA5RSAvKiBQREYgKi8sCiAJCQkJ
ODM3MzQzNUEwNjI0RUUwRDAwRjNCMjg5IC8qIFdlYkFyY2hpdmUuaCAqLywKIAkJCQk4MzczNDM1
QjA2MjRFRTBEMDBGM0IyODkgLyogV2ViQXJjaGl2ZS5tICovLApAQCAtOTc3LDE3ICs5NjgsNiBA
QAogCQkJbmFtZSA9IEhUTUw7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OwotCQlG
NTJDQTZCRTAyREY5RDQ5MDE4NjM1Q0EgLyogSW1hZ2UgKi8gPSB7Ci0JCQlpc2EgPSBQQlhHcm91
cDsKLQkJCWNoaWxkcmVuID0gKAotCQkJCTM1MDgxRDk4MDJCNkQ0RDgwQUNBMkFDQSAvKiBXZWJJ
bWFnZVJlcHJlc2VudGF0aW9uLmggKi8sCi0JCQkJMzUwODFEOTkwMkI2RDREODBBQ0EyQUNBIC8q
IFdlYkltYWdlUmVwcmVzZW50YXRpb24ubSAqLywKLQkJCQkzNTA4MUQ5QTAyQjZENEQ4MEFDQTJB
Q0EgLyogV2ViSW1hZ2VWaWV3LmggKi8sCi0JCQkJMzUwODFEOUIwMkI2RDREODBBQ0EyQUNBIC8q
IFdlYkltYWdlVmlldy5tICovLAotCQkJKTsKLQkJCW5hbWUgPSBJbWFnZTsKLQkJCXNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7Ci0JCX07CiAJCUY1MkNBNkMwMDJERjlENzgwMTg2MzVDQSAvKiBEb3du
bG9hZCAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCkBAIC0xMTg4
LDggKzExNjgsNiBAQAogCQkJCTkzOTgxMDU2MDgyNEJGMDEwMDhERjAzOCAvKiBXZWJIVE1MUmVw
cmVzZW50YXRpb25Qcml2YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5Mzk4MTA1NzA4MjRCRjAx
MDA4REYwMzggLyogV2ViSFRNTFZpZXcuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzOTgxMDU4MDgy
NEJGMDEwMDhERjAzOCAvKiBXZWJIVE1MVmlld1ByaXZhdGUuaCBpbiBIZWFkZXJzICovLAotCQkJ
CTkzOTgxMDU5MDgyNEJGMDEwMDhERjAzOCAvKiBXZWJJbWFnZVJlcHJlc2VudGF0aW9uLmggaW4g
SGVhZGVycyAqLywKLQkJCQk5Mzk4MTA1QTA4MjRCRjAxMDA4REYwMzggLyogV2ViSW1hZ2VWaWV3
LmggaW4gSGVhZGVycyAqLywKIAkJCQk5Mzk4MTA1QjA4MjRCRjAxMDA4REYwMzggLyogV2ViRnJh
bWVMb2FkRGVsZWdhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzOTgxMDVDMDgyNEJGMDEwMDhE
RjAzOCAvKiBXZWJNYWluUmVzb3VyY2VMb2FkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzOTgx
MDVEMDgyNEJGMDEwMDhERjAzOCAvKiBXZWJQcmVmZXJlbmNlcy5oIGluIEhlYWRlcnMgKi8sCkBA
IC0xNzYxLDggKzE3MzksNiBAQAogCQkJCTkzOTgxMEYyMDgyNEJGMDEwMDhERjAzOCAvKiBXZWJG
cmFtZS5tIGluIFNvdXJjZXMgKi8sCiAJCQkJOTM5ODEwRjMwODI0QkYwMTAwOERGMDM4IC8qIFdl
YkhUTUxSZXByZXNlbnRhdGlvbi5tIGluIFNvdXJjZXMgKi8sCiAJCQkJOTM5ODEwRjQwODI0QkYw
MTAwOERGMDM4IC8qIFdlYkhUTUxWaWV3Lm0gaW4gU291cmNlcyAqLywKLQkJCQk5Mzk4MTBGNTA4
MjRCRjAxMDA4REYwMzggLyogV2ViSW1hZ2VSZXByZXNlbnRhdGlvbi5tIGluIFNvdXJjZXMgKi8s
Ci0JCQkJOTM5ODEwRjYwODI0QkYwMTAwOERGMDM4IC8qIFdlYkltYWdlVmlldy5tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJOTM5ODEwRjcwODI0QkYwMTAwOERGMDM4IC8qIFdlYk1haW5SZXNvdXJjZUxv
YWRlci5tIGluIFNvdXJjZXMgKi8sCiAJCQkJOTM5ODEwRjgwODI0QkYwMTAwOERGMDM4IC8qIFdl
YlByZWZlcmVuY2VzLm0gaW4gU291cmNlcyAqLywKIAkJCQk5Mzk4MTBGOTA4MjRCRjAxMDA4REYw
MzggLyogV2ViUmVuZGVyTm9kZS5tIGluIFNvdXJjZXMgKi8sCkluZGV4OiBXZWJLaXQvV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVCcmlkZ2UubQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVCcmlkZ2UubQkocmV2aXNpb24gMTQzNzYpCisrKyBXZWJLaXQvV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVCcmlkZ2UubQkod29ya2luZyBjb3B5KQpAQCAtNDMsNyArNDMsNiBA
QAogI2ltcG9ydCAiV2ViSFRNTFJlcHJlc2VudGF0aW9uUHJpdmF0ZS5oIgogI2ltcG9ydCAiV2Vi
SFRNTFZpZXdJbnRlcm5hbC5oIgogI2ltcG9ydCAiV2ViSGlzdG9yeUl0ZW1Qcml2YXRlLmgiCi0j
aW1wb3J0ICJXZWJJbWFnZVZpZXcuaCIKICNpbXBvcnQgIldlYkphdmFQbHVnSW4uaCIKICNpbXBv
cnQgIldlYkphdmFTY3JpcHRUZXh0SW5wdXRQYW5lbC5oIgogI2ltcG9ydCAiV2ViS2l0RXJyb3Jz
UHJpdmF0ZS5oIgpAQCAtMTEzMyw5ICsxMTMyLDYgQEAgc3RhdGljIEJPT0wgbG9nZ2VkT2JqZWN0
Q2FjaGVTaXplID0gTk87CiAgICAgICAgICAgICByZXR1cm4gT2JqZWN0RWxlbWVudE5vbmU7CiAg
ICAgfQogICAgIAotICAgIGlmIChbdmlld0NsYXNzIGlzU3ViY2xhc3NPZkNsYXNzOltXZWJJbWFn
ZVZpZXcgY2xhc3NdXSkKLSAgICAgICAgcmV0dXJuIE9iamVjdEVsZW1lbnRJbWFnZTsKLSAgICAK
ICAgICAvLyBJZiB3ZSdyZSBhIHN1cHBvcnRlZCB0eXBlIG90aGVyIHRoYW4gYSBwbHVnaW4sIHdl
IHdhbnQgdG8gbWFrZSBhIGZyYW1lLgogICAgIC8vIFVsdGltYXRlbHkgd2Ugc2hvdWxkIGp1c3Qg
dXNlIGZyYW1lcyBmb3IgYWxsIG1pbWUgdHlwZXMgKHBsdWdpbnMgYW5kIEhUTUwvWE1ML3RleHQg
ZG9jdW1lbnRzKSwKICAgICAvLyBidXQgZm9yIG5vdyB3ZSdyZSBidXJkZW5lZCB3aXRoIG1ha2lu
ZyBhIGRpc3RpbmN0aW9uIGJldHdlZW4gdGhlIHR3by4KQEAgLTE2MjQsNCArMTYyMCwxNCBAQCBz
dGF0aWMgaWQgPFdlYkZvcm1EZWxlZ2F0ZT4gZm9ybURlbGVnYXRlCiAgICAgW3N1cGVyIGNsb3Nl
VVJMXTsKIH0KIAorLSAoTlNVUkxSZXNwb25zZSopbWFpblJlc291cmNlVVJMUmVzcG9uc2UKK3sK
KyAgICByZXR1cm4gW1tfZnJhbWUgZGF0YVNvdXJjZV0gcmVzcG9uc2VdOworfQorCistIChOU1N0
cmluZyopaW1hZ2VUaXRsZUZvckZpbGVuYW1lOihOU1N0cmluZyopZmlsZW5hbWUgc2l6ZTooTlNT
aXplKXNpemUKK3sKKyAgICByZXR1cm4gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6VUlfU1RS
SU5HKCIlQCAlLjBmw5clLjBmIHBpeGVscyIsICJ3aW5kb3cgdGl0bGUgZm9yIGEgc3RhbmRhbG9u
ZSBpbWFnZSAodXNlcyBtdWx0aXBsaWNhdGlvbiBzeW1ib2wsIG5vdCB4KSIpLCBmaWxlbmFtZSwg
c2l6ZS53aWR0aCwgc2l6ZS5oZWlnaHRdOworfQorCiBAZW5kCkluZGV4OiBXZWJLaXQvV2ViQ29y
ZVN1cHBvcnQvV2ViSW1hZ2VSZW5kZXJlci5tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9XZWJDb3Jl
U3VwcG9ydC9XZWJJbWFnZVJlbmRlcmVyLm0JKHJldmlzaW9uIDE0Mzc2KQorKysgV2ViS2l0L1dl
YkNvcmVTdXBwb3J0L1dlYkltYWdlUmVuZGVyZXIubQkod29ya2luZyBjb3B5KQpAQCAtMzMsNyAr
MzMsNiBAQAogI2ltcG9ydCA8V2ViS2l0L1dlYkhUTUxWaWV3Lmg+CiAjaW1wb3J0IDxXZWJLaXQv
V2ViSW1hZ2VEYXRhLmg+CiAjaW1wb3J0IDxXZWJLaXQvV2ViSW1hZ2VSZW5kZXJlckZhY3Rvcnku
aD4KLSNpbXBvcnQgPFdlYktpdC9XZWJJbWFnZVZpZXcuaD4KICNpbXBvcnQgPFdlYktpdC9XZWJO
U09iamVjdEV4dHJhcy5oPgogI2ltcG9ydCA8V2ViS2l0U3lzdGVtSW50ZXJmYWNlLmg+CiAKQEAg
LTE5NCw3ICsxOTMsNyBAQAogICAgIC8vIE9ubHkgYW5pbWF0ZSBpZiB3ZSdyZSBkcmF3aW5nIGlu
dG8gYSBXZWJIVE1MVmlldyBvciBXZWJJbWFnZVZpZXcuICBUaGlzIGZpeGVzIHByb2JsZW1zCiAg
ICAgLy8gbGlrZSA8cmRhcjovL3Byb2JsZW0vMzk2Njk3Mz4sIHdoaWNoIGRlc2NyaWJlcyBhIHRo
aXJkIHBhcnR5IGFwcGxpY2F0aW9uIHRoYXQgcmVuZGVycyB0aHVtYm5haWxzIG9mCiAgICAgLy8g
dGhlIHBhZ2UgaW50byBhIGFsdGVybmF0ZSB2aWV3LgotICAgIGlmICgoW3RhcmdldFZpZXcgaXNL
aW5kT2ZDbGFzczpbV2ViSFRNTFZpZXcgY2xhc3NdXSB8fCBbdGFyZ2V0VmlldyBpc0tpbmRPZkNs
YXNzOltXZWJJbWFnZVZpZXcgY2xhc3NdXSkgCisgICAgaWYgKFt0YXJnZXRWaWV3IGlzS2luZE9m
Q2xhc3M6W1dlYkhUTUxWaWV3IGNsYXNzXV0gCiAgICAgICAgICAgICAmJiBbaW1hZ2VEYXRhIHNo
b3VsZEFuaW1hdGVdICYmIFtNSU1FVHlwZSBpc0VxdWFsOkAiaW1hZ2UvZ2lmIl0pIHsKICAgICAg
ICAgW2ltYWdlRGF0YSBhZGRBbmltYXRpbmdSZW5kZXJlcjpzZWxmIGluVmlldzp0YXJnZXRWaWV3
XTsKICAgICAgICAgW2ltYWdlRGF0YSBhbmltYXRlXTsKSW5kZXg6IFdlYktpdC9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMTQzNzgpCisrKyBXZWJL
aXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNjcgQEAKIDIwMDYtMDUtMTUg
IEFuZGVycyBDYXJsc3NvbiAgPGFjYXJsc3NvbkBhcHBsZS5jb20+CiAKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cDovL2J1Z3ppbGxhLm9wZW5kYXJ3
aW4ub3JnL3Nob3dfYnVnLmNnaT9pZD04OTIxCisgICAgICAgIFVzZSBXZWJDb3JlIHRvIHJlbmRl
ciBmdWxsLWZyYW1lIGltYWdlcworICAgICAgICAKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUJyaWRnZS5tOgorICAgICAgICAoLVtXZWJGcmFtZUJyaWRnZSBkZXRlcm1pbmVPYmpl
Y3RGcm9tTUlNRVR5cGU6VVJMOl0pOgorICAgICAgICBSZW1vdmUgV2ViSW1hZ2VWaWV3IGhhbmRs
aW5nLgorICAgICAgICAKKyAgICAgICAgKC1bV2ViRnJhbWVCcmlkZ2UgbWFpblJlc291cmNlVVJM
UmVzcG9uc2VdKToKKyAgICAgICAgTmV3IGZ1bmN0aW9uIHdoaWNoIHJldHVybnMgdGhlIFVSTCBy
ZXNwb25zZSBmb3IgdGhlIG1haW4gcmVzb3VyY2UuIFRoaXMgaXMgdXNlZCBieSB0aGUKKyAgICAg
ICAgbWFudWFsIGxvYWRpbmcgb2YgaW1hZ2VzLgorICAgICAgICAKKyAgICAgICAgKC1bV2ViRnJh
bWVCcmlkZ2UgaW1hZ2VUaXRsZUZvckZpbGVuYW1lOnNpemU6XSk6CisgICAgICAgIE5ldyBmdW5j
dGlvbiB3aGljaCByZXR1cm5zIGEgY29ycmVjdGx5IHRyYW5zbGF0ZWQgaW1hZ2UgdGl0bGUgZ2l2
ZW4gYSBmaWxlbmFtZSBhbmQgYSBzaXplLgorICAgICAgICAKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9XZWJJbWFnZVJlbmRlcmVyLm06CisgICAgICAgICgtW1dlYkltYWdlUmVuZGVyZXIgX3N0
YXJ0T3JDb250aW51ZUFuaW1hdGlvbklmTmVjZXNzYXJ5XSk6CisgICAgICAgIFJlbW92ZSBXZWJJ
bWFnZVZpZXcgaGFuZGxpbmcuCisgICAgICAgIAorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICBSZW1vdmUgV2ViSW1hZ2VSZXByZXNlbnRhdGlvbiBh
bmQgV2ViSW1hZ2VWaWV3LgorICAgICAgICAKKyAgICAgICAgKiBXZWJWaWV3L1dlYkFyY2hpdmVy
Lmg6CisgICAgICAgICogV2ViVmlldy9XZWJBcmNoaXZlci5tOgorICAgICAgICAoK1tXZWJBcmNo
aXZlciBhcmNoaXZlTWFpblJlc291cmNlRm9yRnJhbWU6XSk6CisgICAgICAgIE5ldyBmdW5jdGlv
bnMgd2hpY2ggcmV0dXJucyBhIFdlYkFyY2hpdmUgd2l0aCBqdXN0IHRoZSBtYWluIHJlc291cmNl
LCBpZ25vcmluZyBhbnkgc3VicmVzb3VyY2VzLgorICAgICAgICAKKyAgICAgICAgKiBXZWJWaWV3
L1dlYkRhdGFTb3VyY2UubToKKyAgICAgICAgKCtbV2ViRGF0YVNvdXJjZSBfcmVwVHlwZXNBbGxv
d0ltYWdlVHlwZU9taXNzaW9uOl0pOgorICAgICAgICBVc2UgTUlNRSB0eXBlcyBmcm9tIFdlYkhU
TUxSZXByZXNlbnRhdGlvbiBpbnN0ZWFkIG9mIFdlYkltYWdlUmVwcmVzZW50YXRpb24uCisgICAg
ICAgIAorICAgICAgICAqIFdlYlZpZXcvV2ViRnJhbWVWaWV3Lm06CisgICAgICAgICgrW1dlYkZy
YW1lVmlldyBfdmlld1R5cGVzQWxsb3dJbWFnZVR5cGVPbWlzc2lvbjpdKToKKyAgICAgICAgVXNl
IE1JTUUgdHlwZXMgZnJvbSBXZWJIVE1MUmVwcmVzZW50YXRpb24gaW5zdGVhZCBvZiBXZWJJbWFn
ZVJlcHJlc2VudGF0aW9uLgorICAgICAgICAKKyAgICAgICAgKCtbV2ViSFRNTFJlcHJlc2VudGF0
aW9uIHN1cHBvcnRlZE1JTUVUeXBlc10pOgorICAgICAgICBDcmVhdGUgYW4gYXJyYXkgb2YgaW1h
Z2UgYW5kIG5vbi1pbWFnZSBNSU1FIFR5cGVzLgorICAgICAgICAKKyAgICAgICAgKCtbV2ViSFRN
TFJlcHJlc2VudGF0aW9uIHN1cHBvcnRlZE5vbkltYWdlTUlNRVR5cGVzXSk6CisgICAgICAgICgr
W1dlYkhUTUxSZXByZXNlbnRhdGlvbiBzdXBwb3J0ZWRJbWFnZU1JTUVUeXBlc10pOgorICAgICAg
ICBOZXcgZnVuY3Rpb25zLCBzZXBhcmF0aW5nIHRoZSBsaXN0IG9mIE1JTUUgdHlwZXMgaW50byBp
bWFnZSBhbmQgbm9uLWltYWdlIG9uZXMuCisgICAgICAgIAorICAgICAgICAqIFdlYlZpZXcvV2Vi
SFRNTFZpZXcubToKKyAgICAgICAgKCtbV2ViSFRNTFZpZXcgc3VwcG9ydGVkSW1hZ2VNSU1FVHlw
ZXNdKToKKyAgICAgICAgKCtbV2ViSFRNTFZpZXcgc3VwcG9ydGVkTm9uSW1hZ2VNSU1FVHlwZXNd
KToKKyAgICAgICAgTmV3IGZ1bmN0aW9ucyB3aGljaCBjYWxsIGRvd24gdG8gV2ViSFRNTFJlcHJl
c2VudGF0aW9uLgorICAgICAgICAKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgX3N0YXJ0RHJhZ2dp
bmdJbWFnZTphdDpvcGVyYXRpb246ZXZlbnQ6c291cmNlSXNESFRNTDpESFRNTFdyb3RlRGF0YTpd
KToKKyAgICAgICAgSWYgdGhlIGltYWdlIGVsZW1lbnQgY29tZXMgZnJvbSBhbiBJbWFnZURvY3Vt
ZW50LCBqdXN0IHVzZSBhbiBhcmNoaXZlIG9mIHRoZSBtYWluIHJlc291cmNlCisgICAgICAgIGlu
c3RlYWQgb2YgdGhlIGdlbmVyYXRlZCBIVE1MIGRvY3VtZW50LgorICAgICAgICAKKyAgICAgICAg
KiBXZWJWaWV3L1dlYkhUTUxWaWV3UHJpdmF0ZS5oOgorICAgICAgICBEZWNsYXJlIG5ldyBmdW5j
dGlvbnMuCisgICAgICAgIAorICAgICAgICAqIFdlYlZpZXcvV2ViSW1hZ2VSZXByZXNlbnRhdGlv
bi5oOiBSZW1vdmVkLgorICAgICAgICAqIFdlYlZpZXcvV2ViSW1hZ2VSZXByZXNlbnRhdGlvbi5t
OiBSZW1vdmVkLgorICAgICAgICAqIFdlYlZpZXcvV2ViSW1hZ2VWaWV3Lmg6IFJlbW92ZWQuCisg
ICAgICAgICogV2ViVmlldy9XZWJJbWFnZVZpZXcubTogUmVtb3ZlZC4KKyAgICAgICAgCisyMDA2
LTA1LTE1ICBBbmRlcnMgQ2FybHNzb24gIDxhY2FybHNzb25AYXBwbGUuY29tPgorCiAgICAgICAg
IFJldmlld2VkIGJ5IE1hY2llai4KIAogICAgICAgICBodHRwOi8vYnVnemlsbGEub3BlbmRhcndp
bi5vcmcvc2hvd19idWcuY2dpP2lkPTg5MTMKSW5kZXg6IFdlYktpdC9XZWJWaWV3L1dlYkhUTUxS
ZXByZXNlbnRhdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9XZWJWaWV3L1dlYkhUTUxSZXBy
ZXNlbnRhdGlvbi5oCShyZXZpc2lvbiAxNDM3NikKKysrIFdlYktpdC9XZWJWaWV3L1dlYkhUTUxS
ZXByZXNlbnRhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC00OSw2ICs0OSw4IEBACiB9CiAKICsg
KE5TQXJyYXkgKilzdXBwb3J0ZWRNSU1FVHlwZXM7CisrIChOU0FycmF5ICopc3VwcG9ydGVkTm9u
SW1hZ2VNSU1FVHlwZXM7CisrIChOU0FycmF5ICopc3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXM7CiAK
IC0gKE5TQXR0cmlidXRlZFN0cmluZyAqKWF0dHJpYnV0ZWRTdHJpbmdGcm9tOihET01Ob2RlICop
c3RhcnROb2RlIHN0YXJ0T2Zmc2V0OihpbnQpc3RhcnRPZmZzZXQgdG86KERPTU5vZGUgKillbmRO
b2RlIGVuZE9mZnNldDooaW50KWVuZE9mZnNldDsKIApJbmRleDogV2ViS2l0L1dlYlZpZXcvV2Vi
SFRNTFJlcHJlc2VudGF0aW9uLm0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L1dlYlZpZXcvV2ViSFRN
TFJlcHJlc2VudGF0aW9uLm0JKHJldmlzaW9uIDE0Mzc2KQorKysgV2ViS2l0L1dlYlZpZXcvV2Vi
SFRNTFJlcHJlc2VudGF0aW9uLm0JKHdvcmtpbmcgY29weSkKQEAgLTM1LDYgKzM1LDcgQEAKICNp
bXBvcnQgPFdlYktpdC9XZWJEYXRhU291cmNlSW50ZXJuYWwuaD4KICNpbXBvcnQgPFdlYktpdC9X
ZWJEb2N1bWVudFByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XZWJGcmFtZVByaXZhdGUuaD4K
KyNpbXBvcnQgPFdlYktpdC9XZWJJbWFnZVJlbmRlcmVyRmFjdG9yeS5oPgogI2ltcG9ydCA8V2Vi
S2l0L1dlYktpdE5TU3RyaW5nRXh0cmFzLmg+CiAjaW1wb3J0IDxXZWJLaXQvV2ViS2l0U3RhdGlz
dGljc1ByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XZWJOU09iamVjdEV4dHJhcy5oPgpAQCAt
NjYsNyArNjcsMjUgQEAKIAogKyAoTlNBcnJheSAqKXN1cHBvcnRlZE1JTUVUeXBlcwogewotICAg
IHJldHVybiBbV2ViQ29yZUZyYW1lQnJpZGdlIHN1cHBvcnRlZE1JTUVUeXBlc107CisgICAgc3Rh
dGljIE5TTXV0YWJsZUFycmF5ICptaW1lVHlwZXMLID0gbmlsOworICAgIAorICAgIGlmICghbWlt
ZVR5cGVzKSB7CisgICAgICAgIG1pbWVUeXBlcyA9IFtbc2VsZiBzdXBwb3J0ZWROb25JbWFnZU1J
TUVUeXBlc10gbXV0YWJsZUNvcHldOworICAgICAgICBbbWltZVR5cGVzIGFkZE9iamVjdHNGcm9t
QXJyYXk6W3NlbGYgc3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXNdXTsKKyAgICB9CisgICAgCisgICAg
cmV0dXJuIG1pbWVUeXBlczsKK30KKworKyAoTlNBcnJheSAqKXN1cHBvcnRlZE5vbkltYWdlTUlN
RVR5cGVzCit7CisgICAgcmV0dXJuIFtXZWJDb3JlRnJhbWVCcmlkZ2Ugc3VwcG9ydGVkTm9uSW1h
Z2VNSU1FVHlwZXNdOworfQorCisrIChOU0FycmF5ICopc3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXMK
K3sKKyAgICBbV2ViSW1hZ2VSZW5kZXJlckZhY3RvcnkgY3JlYXRlU2hhcmVkRmFjdG9yeV07Cisg
ICAgcmV0dXJuIFtXZWJDb3JlRnJhbWVCcmlkZ2Ugc3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXNdOwog
fQogCiAtIGluaXQKSW5kZXg6IFdlYktpdC9XZWJWaWV3L1dlYkltYWdlVmlldy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdC9XZWJWaWV3L1dlYkltYWdlVmlldy5oCShyZXZpc2lvbiAxNDM3NikKKysr
IFdlYktpdC9XZWJWaWV3L1dlYkltYWdlVmlldy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDQzICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDUgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKLSAqIDIuICBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLiAKLSAqIDMuICBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9m
Ci0gKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZAotICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4gCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkK
LSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YK
LSAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI2ltcG9ydCA8V2ViS2l0L1dlYkRvY3VtZW50SW50ZXJuYWwu
aD4KLQotQGNsYXNzIFdlYkltYWdlUmVwcmVzZW50YXRpb247Ci0KLUBpbnRlcmZhY2UgV2ViSW1h
Z2VWaWV3IDogTlNWaWV3IDxXZWJEb2N1bWVudFZpZXcsIFdlYkRvY3VtZW50SW1hZ2UsIFdlYkRv
Y3VtZW50RWxlbWVudD4KLXsKLSAgICBXZWJJbWFnZVJlcHJlc2VudGF0aW9uICpyZXA7Ci0gICAg
Qk9PTCBuZWVkc0xheW91dDsKLSAgICBCT09MIGlnbm9yaW5nTW91c2VEcmFnZ2VkRXZlbnRzOwot
ICAgIE5TRXZlbnQgKm1vdXNlRG93bkV2ZW50OwotICAgIHVuc2lnbmVkIGludCBkcmFnU291cmNl
QWN0aW9uTWFzazsKLSAgICBXZWJEYXRhU291cmNlICpfZGF0YVNvdXJjZTsKLX0KLSsgKE5TQXJy
YXkgKilzdXBwb3J0ZWRNSU1FVHlwZXM7Ci1AZW5kCkluZGV4OiBXZWJLaXQvV2ViVmlldy9XZWJJ
bWFnZVZpZXcubQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvV2ViVmlldy9XZWJJbWFnZVZpZXcubQko
cmV2aXNpb24gMTQzNzYpCisrKyBXZWJLaXQvV2ViVmlldy9XZWJJbWFnZVZpZXcubQkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzNjMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNSBBcHBs
ZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
IAotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
IAotICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBs
ZSIpIG5vciB0aGUgbmFtZXMgb2YKLSAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCi0gKiAgICAgZnJvbSB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLiAKLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVU
T1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
LSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0IDxXZWJLaXQv
V2ViSW1hZ2VWaWV3Lmg+Ci0KLSNpbXBvcnQgPFdlYktpdC9XZWJBcmNoaXZlci5oPgotI2ltcG9y
dCA8SmF2YVNjcmlwdENvcmUvQXNzZXJ0aW9ucy5oPgotI2ltcG9ydCA8V2ViS2l0L1dlYkRhdGFT
b3VyY2VJbnRlcm5hbC5oPgotI2ltcG9ydCA8V2ViS2l0L1dlYkRvY3VtZW50Lmg+Ci0jaW1wb3J0
IDxXZWJLaXQvV2ViRnJhbWVWaWV3Lmg+Ci0jaW1wb3J0IDxXZWJLaXQvV2ViSW1hZ2VSZW5kZXJl
ci5oPgotI2ltcG9ydCA8V2ViS2l0L1dlYkltYWdlUmVuZGVyZXJGYWN0b3J5Lmg+Ci0jaW1wb3J0
IDxXZWJLaXQvV2ViSW1hZ2VSZXByZXNlbnRhdGlvbi5oPgotI2ltcG9ydCA8V2ViS2l0L1dlYk5T
RmlsZU1hbmFnZXJFeHRyYXMuaD4KLSNpbXBvcnQgPFdlYktpdC9XZWJOU09iamVjdEV4dHJhcy5o
PgotI2ltcG9ydCA8V2ViS2l0L1dlYk5TUGFzdGVib2FyZEV4dHJhcy5oPgotI2ltcG9ydCA8V2Vi
S2l0L1dlYk5TVmlld0V4dHJhcy5oPgotI2ltcG9ydCA8V2ViS2l0L1dlYkZyYW1lVmlld1ByaXZh
dGUuaD4KLSNpbXBvcnQgPFdlYktpdC9XZWJWaWV3SW50ZXJuYWwuaD4KLSNpbXBvcnQgPFdlYktp
dC9XZWJVSURlbGVnYXRlUHJpdmF0ZS5oPgotCi0jaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVJbWFn
ZVJlbmRlcmVyLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVGcmFtZUJyaWRnZS5oPgotCi1A
aW1wbGVtZW50YXRpb24gV2ViSW1hZ2VWaWV3Ci0KLSsgKHZvaWQpaW5pdGlhbGl6ZQotewotICAg
IFtOU0FwcCByZWdpc3RlclNlcnZpY2VzTWVudVNlbmRUeXBlczpbTlNBcnJheSBhcnJheVdpdGhP
YmplY3Q6TlNUSUZGUGJvYXJkVHlwZV0gcmV0dXJuVHlwZXM6bmlsXTsKLX0KLQotKyAoTlNBcnJh
eSAqKXN1cHBvcnRlZE1JTUVUeXBlcwotewotICAgIHJldHVybiBbV2ViSW1hZ2VSZXByZXNlbnRh
dGlvbiBzdXBwb3J0ZWRNSU1FVHlwZXNdOwotfQotCi0tIChpZClpbml0V2l0aEZyYW1lOihOU1Jl
Y3QpZnJhbWUKLXsKLSAgICBzZWxmID0gW3N1cGVyIGluaXRXaXRoRnJhbWU6ZnJhbWVdOwotICAg
IGlmICghc2VsZikKLSAgICAgICAgcmV0dXJuIG5pbDsKLSAgICBbc2VsZiBzZXRBdXRvcmVzaXpp
bmdNYXNrOk5TVmlld1dpZHRoU2l6YWJsZSB8IE5TVmlld0hlaWdodFNpemFibGVdOwotICAgIHJl
dHVybiBzZWxmOwotfQotCi0tICh2b2lkKWRlYWxsb2MKLXsKLSAgICBbW3JlcCBpbWFnZV0gc3Rv
cEFuaW1hdGlvbl07Ci0gICAgW3JlcCByZWxlYXNlXTsKLSAgICBbbW91c2VEb3duRXZlbnQgcmVs
ZWFzZV07Ci0gICAgCi0gICAgW3N1cGVyIGRlYWxsb2NdOwotfQotCi0tICh2b2lkKWZpbmFsaXpl
Ci17Ci0gICAgW1tyZXAgaW1hZ2VdIHN0b3BBbmltYXRpb25dOwotICAgIFtzdXBlciBmaW5hbGl6
ZV07Ci19Ci0KLS0gKEJPT0wpaGF2ZUNvbXBsZXRlSW1hZ2UKLXsKLSAgICBOU1NpemUgaW1hZ2VT
aXplID0gW1tyZXAgaW1hZ2VdIHNpemVdOwotICAgIHJldHVybiBbcmVwIGRvbmVMb2FkaW5nXSAm
JiBpbWFnZVNpemUud2lkdGggPiAwICYmIGltYWdlU2l6ZS53aWR0aCA+IDA7Ci19Ci0KLS0gKEJP
T0wpaXNGbGlwcGVkIAotewotICAgIHJldHVybiBZRVM7Ci19Ci0KLS0gKEJPT0wpYWNjZXB0c0Zp
cnN0UmVzcG9uZGVyCi17Ci0gICAgLy8gQmVpbmcgZmlyc3QgcmVzcG9uZGVyIGlzIHVzZWZ1bCBm
b3Igc2Nyb2xsaW5nIGZyb20gdGhlIGtleWJvYXJkIGF0IGxlYXN0LgotICAgIHJldHVybiBZRVM7
Ci19Ci0KLS0gKE5TUmVjdClkcmF3aW5nUmVjdAotewotICAgIE5TU2l6ZSBpbWFnZVNpemUgPSBb
W3JlcCBpbWFnZV0gc2l6ZV07Ci0gICAgcmV0dXJuIE5TTWFrZVJlY3QoMCwgMCwgaW1hZ2VTaXpl
LndpZHRoLCBpbWFnZVNpemUuaGVpZ2h0KTsKLX0KLQotLSAodm9pZClkcmF3UmVjdDooTlNSZWN0
KXJlY3QKLXsKLSAgICBpZiAobmVlZHNMYXlvdXQpIHsKLSAgICAgICAgW3NlbGYgbGF5b3V0XTsK
LSAgICB9Ci0gICAgCi0gICAgaWYgKFtbX2RhdGFTb3VyY2UgX3dlYlZpZXddIGRyYXdzQmFja2dy
b3VuZF0pIHsKLSAgICAgICAgW1tOU0NvbG9yIHdoaXRlQ29sb3JdIHNldF07Ci0gICAgICAgIE5T
UmVjdEZpbGwocmVjdCk7Ci0gICAgfQotICAgIAotICAgIE5TUmVjdCBkcmF3aW5nUmVjdCA9IFtz
ZWxmIGRyYXdpbmdSZWN0XTsKLSAgICBbW3JlcCBpbWFnZV0gZHJhd0ltYWdlSW5SZWN0OmRyYXdp
bmdSZWN0IGZyb21SZWN0OmRyYXdpbmdSZWN0XTsKLX0KLQotLSAodm9pZClhZGp1c3RGcmFtZVNp
emUKLXsKLSAgICBOU1NpemUgc2l6ZSA9IFtbcmVwIGltYWdlXSBzaXplXTsKLSAgICAKLSAgICAv
LyBXaGVuIGRyYXdpbmcgb24gc2NyZWVuLCBlbnN1cmUgdGhhdCB0aGUgdmlldyBhbHdheXMgZmls
bHMgdGhlIGNvbnRlbnQgYXJlYSAKLSAgICAvLyAoc28gd2UgZHJhdyBvdmVyIHRoZSBlbnRpcmUg
cHJldmlvdXMgcGFnZSksIGFuZCB0aGF0IHRoZSB2aWV3IGlzIGF0IGxlYXN0IAotICAgIC8vIGFz
IGxhcmdlIGFzIHRoZSBpbWFnZS4uIE90aGVyd2lzZSB3ZSdyZSBwcmludGluZywgYW5kIHdlIHdh
bnQgdGhlIGltYWdlIHRvIAotICAgIC8vIGZpbGwgdGhlIHZpZXcgc28gdGhhdCB0aGUgcHJpbnRl
ZCBzaXplIGRvZXNuJ3QgZGVwZW5kIG9uIHRoZSB3aW5kb3cgc2l6ZS4KLSAgICBpZiAoW05TR3Jh
cGhpY3NDb250ZXh0IGN1cnJlbnRDb250ZXh0RHJhd2luZ1RvU2NyZWVuXSkgewotICAgICAgICBO
U1NpemUgY2xpcFZpZXdTaXplID0gW1tbW19kYXRhU291cmNlIHdlYkZyYW1lXSBmcmFtZVZpZXdd
IF9jb250ZW50Vmlld10gZnJhbWVdLnNpemU7Ci0gICAgICAgIHNpemUud2lkdGggPSBNQVgoc2l6
ZS53aWR0aCwgY2xpcFZpZXdTaXplLndpZHRoKTsKLSAgICAgICAgc2l6ZS5oZWlnaHQgPSBNQVgo
c2l6ZS5oZWlnaHQsIGNsaXBWaWV3U2l6ZS5oZWlnaHQpOwotICAgIH0KLSAgICAKLSAgICBbc3Vw
ZXIgc2V0RnJhbWVTaXplOnNpemVdOwotfQotCi0tICh2b2lkKXNldEZyYW1lU2l6ZTooTlNTaXpl
KXNpemUKLXsKLSAgICBbc2VsZiBhZGp1c3RGcmFtZVNpemVdOwotfQotCi0tICh2b2lkKWxheW91
dAotewotICAgIFtzZWxmIGFkanVzdEZyYW1lU2l6ZV07ICAgIAotICAgIG5lZWRzTGF5b3V0ID0g
Tk87Ci19Ci0KLS0gKHZvaWQpc2V0RGF0YVNvdXJjZTooV2ViRGF0YVNvdXJjZSAqKWRhdGFTb3Vy
Y2UKLXsKLSAgICBBU1NFUlQoIXJlcCk7Ci0gICAgcmVwID0gW1tkYXRhU291cmNlIHJlcHJlc2Vu
dGF0aW9uXSByZXRhaW5dOwotICAgIF9kYXRhU291cmNlID0gZGF0YVNvdXJjZTsKLX0KLQotLSAo
dm9pZClkYXRhU291cmNlVXBkYXRlZDooV2ViRGF0YVNvdXJjZSAqKWRhdGFTb3VyY2UKLXsKLSAg
ICBOU1NpemUgaW1hZ2VTaXplID0gW1tyZXAgaW1hZ2VdIHNpemVdOwotICAgIGlmIChpbWFnZVNp
emUud2lkdGggPiAwICYmIGltYWdlU2l6ZS5oZWlnaHQgPiAwKSB7Ci0gICAgICAgIFtzZWxmIHNl
dE5lZWRzTGF5b3V0OllFU107Ci0gICAgICAgIFtzZWxmIGxheW91dF07Ci0gICAgICAgIFtzZWxm
IHNldE5lZWRzRGlzcGxheTpZRVNdOwotICAgIH0KLX0KLQotLSAodm9pZClzZXROZWVkc0xheW91
dDooQk9PTClmbGFnCi17Ci0gICAgbmVlZHNMYXlvdXQgPSBmbGFnOwotfQotCi0tICh2b2lkKXZp
ZXdXaWxsTW92ZVRvSG9zdFdpbmRvdzooTlNXaW5kb3cgKilob3N0V2luZG93Ci17Ci19Ci0KLS0g
KHZvaWQpdmlld0RpZE1vdmVUb0hvc3RXaW5kb3cKLXsKLX0KLQotLSAodm9pZCl2aWV3RGlkTW92
ZVRvV2luZG93Ci17Ci0gICAgaWYgKCFbc2VsZiB3aW5kb3ddKXsKLSAgICAgICAgW1tyZXAgaW1h
Z2VdIHN0b3BBbmltYXRpb25dOwotICAgIH0KLSAgICAKLSAgICBbc3VwZXIgdmlld0RpZE1vdmVU
b1dpbmRvd107Ci19Ci0KLS0gKFdlYlZpZXcgKil3ZWJWaWV3Ci17Ci0gICAgcmV0dXJuIFtfZGF0
YVNvdXJjZSBfd2ViVmlld107Ci19Ci0KLS0gKEJPT0wpdmFsaWRhdGVVc2VySW50ZXJmYWNlSXRl
bTooaWQgPE5TVmFsaWRhdGVkVXNlckludGVyZmFjZUl0ZW0+KWl0ZW0KLXsKLSAgICBpZiAoW2l0
ZW0gYWN0aW9uXSA9PSBAc2VsZWN0b3IoY29weTopKXsKLSAgICAgICAgcmV0dXJuIFtzZWxmIGhh
dmVDb21wbGV0ZUltYWdlXTsKLSAgICB9Ci0KLSAgICByZXR1cm4gWUVTOwotfQotCi0tIChpZCl2
YWxpZFJlcXVlc3RvckZvclNlbmRUeXBlOihOU1N0cmluZyAqKXNlbmRUeXBlIHJldHVyblR5cGU6
KE5TU3RyaW5nICopcmV0dXJuVHlwZQotewotICAgIGlmIChzZW5kVHlwZSAmJiBbc2VuZFR5cGUg
aXNFcXVhbFRvU3RyaW5nOk5TVElGRlBib2FyZFR5cGVdKXsKLSAgICAgICAgcmV0dXJuIHNlbGY7
Ci0gICAgfQotCi0gICAgcmV0dXJuIFtzdXBlciB2YWxpZFJlcXVlc3RvckZvclNlbmRUeXBlOnNl
bmRUeXBlIHJldHVyblR5cGU6cmV0dXJuVHlwZV07Ci19Ci0KLS0gKEJPT0wpd3JpdGVJbWFnZVRv
UGFzdGVib2FyZDooTlNQYXN0ZWJvYXJkICopcGFzdGVib2FyZCB0eXBlczooTlNBcnJheSAqKXR5
cGVzCi17Ci0gICAgV2ViRnJhbWUgKmZyYW1lID0gW19kYXRhU291cmNlIHdlYkZyYW1lXTsKLSAg
ICBpZiAoW3NlbGYgaGF2ZUNvbXBsZXRlSW1hZ2VdKSB7Ci0gICAgICAgIFtwYXN0ZWJvYXJkIF93
ZWJfd3JpdGVJbWFnZTpbcmVwIGltYWdlXSBlbGVtZW50Om5pbCBVUkw6W3JlcCBVUkxdIHRpdGxl
Om5pbCBhcmNoaXZlOltXZWJBcmNoaXZlciBhcmNoaXZlRnJhbWU6ZnJhbWVdIHR5cGVzOnR5cGVz
XTsKLSAgICAgICAgcmV0dXJuIFlFUzsKLSAgICB9Ci0gICAgCi0gICAgcmV0dXJuIE5POwotfQot
Ci0tICh2b2lkKWNvcHk6KGlkKXNlbmRlcgotewotICAgIFdlYkZyYW1lICpmcmFtZSA9IFtfZGF0
YVNvdXJjZSB3ZWJGcmFtZV07Ci0gICAgTlNBcnJheSAqdHlwZXMgPSBbTlNQYXN0ZWJvYXJkIF93
ZWJfd3JpdGFibGVUeXBlc0ZvckltYWdlSW5jbHVkaW5nQXJjaGl2ZTooW1dlYkFyY2hpdmVyIGFy
Y2hpdmVGcmFtZTpmcmFtZV0gIT0gbmlsKV07Ci0gICAgTlNQYXN0ZWJvYXJkICpwYXN0ZWJvYXJk
ID0gW05TUGFzdGVib2FyZCBnZW5lcmFsUGFzdGVib2FyZF07Ci0gICAgW3Bhc3RlYm9hcmQgZGVj
bGFyZVR5cGVzOnR5cGVzIG93bmVyOm5pbF07Ci0gICAgW3NlbGYgd3JpdGVJbWFnZVRvUGFzdGVi
b2FyZDpwYXN0ZWJvYXJkIHR5cGVzOnR5cGVzXTsKLX0KLQotLSAoQk9PTCl3cml0ZVNlbGVjdGlv
blRvUGFzdGVib2FyZDooTlNQYXN0ZWJvYXJkICopcGFzdGVib2FyZCB0eXBlczooTlNBcnJheSAq
KXR5cGVzCi17Ci0gICAgW3Bhc3RlYm9hcmQgZGVjbGFyZVR5cGVzOnR5cGVzIG93bmVyOm5pbF07
Ci0gICAgcmV0dXJuIFtzZWxmIHdyaXRlSW1hZ2VUb1Bhc3RlYm9hcmQ6cGFzdGVib2FyZCB0eXBl
czp0eXBlc107Ci19Ci0KLS0gKE5TRGljdGlvbmFyeSAqKWVsZW1lbnRBdFBvaW50OihOU1BvaW50
KXBvaW50Ci17Ci0gICAgV2ViRnJhbWUgKmZyYW1lID0gW19kYXRhU291cmNlIHdlYkZyYW1lXTsK
LSAgICBBU1NFUlQoZnJhbWUpOwotICAgIAotICAgIHJldHVybiBbTlNEaWN0aW9uYXJ5IGRpY3Rp
b25hcnlXaXRoT2JqZWN0c0FuZEtleXM6Ci0gICAgICAgIFtbcmVwIGltYWdlXSBpbWFnZV0sICAg
ICAgICAgICAgICAgICAgICBXZWJFbGVtZW50SW1hZ2VLZXksCi0gICAgICAgIFtOU1ZhbHVlIHZh
bHVlV2l0aFJlY3Q6W3NlbGYgYm91bmRzXV0sICBXZWJFbGVtZW50SW1hZ2VSZWN0S2V5LAotICAg
ICAgICBbcmVwIFVSTF0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViRWxlbWVudElt
YWdlVVJMS2V5LAotICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6Tk9dLCAgICAgICAg
ICAgV2ViRWxlbWVudElzU2VsZWN0ZWRLZXksCi0gICAgICAgIGZyYW1lLCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBXZWJFbGVtZW50RnJhbWVLZXksIG5pbF07Ci19Ci0KLS0gKE5T
RGljdGlvbmFyeSAqKWVsZW1lbnRBdFBvaW50OihOU1BvaW50KXBvaW50IGFsbG93U2hhZG93Q29u
dGVudDooQk9PTClhbGxvdwotewotICAgIHJldHVybiBbc2VsZiBlbGVtZW50QXRQb2ludDpwb2lu
dF07Ci19Ci0KLS0gKE5TTWVudSAqKW1lbnVGb3JFdmVudDooTlNFdmVudCAqKXRoZUV2ZW50Ci17
Ci0gICAgV2ViVmlldyAqd2ViVmlldyA9IFtzZWxmIHdlYlZpZXddOwotICAgIEFTU0VSVCh3ZWJW
aWV3KTsKLSAgICByZXR1cm4gW3dlYlZpZXcgX21lbnVGb3JFbGVtZW50OltzZWxmIGVsZW1lbnRB
dFBvaW50Ok5TWmVyb1BvaW50XSBkZWZhdWx0SXRlbXM6bmlsXTsKLX0KLQotLSAodm9pZCltb3Vz
ZURvd246KE5TRXZlbnQgKilldmVudAotewotICAgIGlnbm9yaW5nTW91c2VEcmFnZ2VkRXZlbnRz
ID0gTk87Ci0gICAgW21vdXNlRG93bkV2ZW50IHJlbGVhc2VdOwotICAgIG1vdXNlRG93bkV2ZW50
ID0gW2V2ZW50IHJldGFpbl07Ci0gICAgCi0gICAgV2ViVmlldyAqd2ViVmlldyA9IFtzZWxmIHdl
YlZpZXddOwotICAgIE5TUG9pbnQgcG9pbnQgPSBbd2ViVmlldyBjb252ZXJ0UG9pbnQ6W21vdXNl
RG93bkV2ZW50IGxvY2F0aW9uSW5XaW5kb3ddIGZyb21WaWV3Om5pbF07Ci0gICAgZHJhZ1NvdXJj
ZUFjdGlvbk1hc2sgPSBbW3dlYlZpZXcgX1VJRGVsZWdhdGVGb3J3YXJkZXJdIHdlYlZpZXc6d2Vi
VmlldyBkcmFnU291cmNlQWN0aW9uTWFza0ZvclBvaW50OnBvaW50XTsKLSAgICAKLSAgICBbc3Vw
ZXIgbW91c2VEb3duOmV2ZW50XTsKLX0KLQotLSAodm9pZCltb3VzZURyYWdnZWQ6KE5TRXZlbnQg
Kiltb3VzZURyYWdnZWRFdmVudAotewotICAgIGlmIChpZ25vcmluZ01vdXNlRHJhZ2dlZEV2ZW50
cyB8fCAhW3NlbGYgaGF2ZUNvbXBsZXRlSW1hZ2VdIHx8ICEoZHJhZ1NvdXJjZUFjdGlvbk1hc2sg
JiBXZWJEcmFnU291cmNlQWN0aW9uSW1hZ2UpKSB7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0g
ICAgCi0gICAgV2ViRnJhbWUgKmZyYW1lID0gW19kYXRhU291cmNlIHdlYkZyYW1lXTsKLSAgICBO
U1Bhc3RlYm9hcmQgKnBhc3RlYm9hcmQgPSBbTlNQYXN0ZWJvYXJkIHBhc3RlYm9hcmRXaXRoTmFt
ZTpOU0RyYWdQYm9hcmRdOwotICAgIGlkIHNvdXJjZSA9IFtwYXN0ZWJvYXJkIF93ZWJfZGVjbGFy
ZUFuZFdyaXRlRHJhZ0ltYWdlOltyZXAgaW1hZ2VdCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQ6bmlsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVUkw6W3JlcCBVUkxdCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6bmlsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyY2hpdmU6
W1dlYkFyY2hpdmVyIGFyY2hpdmVGcmFtZTpmcmFtZV0KLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZTpzZWxmXTsKLSAgICAKLSAgICBXZWJW
aWV3ICp3ZWJWaWV3ID0gW3NlbGYgd2ViVmlld107Ci0gICAgTlNQb2ludCBwb2ludCA9IFt3ZWJW
aWV3IGNvbnZlcnRQb2ludDpbbW91c2VEb3duRXZlbnQgbG9jYXRpb25JbldpbmRvd10gZnJvbVZp
ZXc6bmlsXTsKLSAgICBbW3dlYlZpZXcgX1VJRGVsZWdhdGVGb3J3YXJkZXJdIHdlYlZpZXc6d2Vi
VmlldyB3aWxsUGVyZm9ybURyYWdTb3VyY2VBY3Rpb246V2ViRHJhZ1NvdXJjZUFjdGlvbkltYWdl
IGZyb21Qb2ludDpwb2ludCB3aXRoUGFzdGVib2FyZDpwYXN0ZWJvYXJkXTsKLSAgICAKLSAgICBb
W3NlbGYgd2ViVmlld10gX3NldEluaXRpYXRlZERyYWc6WUVTXTsKLSAgICAKLSAgICAvLyBSZXRh
aW4gdGhpcyB2aWV3IGR1cmluZyB0aGUgZHJhZyBiZWNhdXNlIGl0IG1heSBiZSByZWxlYXNlZCBi
ZWZvcmUgdGhlIGRyYWcgZW5kcy4KLSAgICBbc2VsZiByZXRhaW5dOwotICAgIAotICAgIFtzZWxm
IF93ZWJfZHJhZ0ltYWdlOltyZXAgaW1hZ2VdCi0gICAgICAgICAgICAgICAgIGVsZW1lbnQ6bmls
Ci0gICAgICAgICAgICAgICAgICAgIHJlY3Q6W3NlbGYgZHJhd2luZ1JlY3RdCi0gICAgICAgICAg
ICAgICAgICAgZXZlbnQ6bW91c2VEcmFnZ2VkRXZlbnQKLSAgICAgICAgICAgICAgcGFzdGVib2Fy
ZDpwYXN0ZWJvYXJkCi0gICAgICAgICAgICAgICAgICBzb3VyY2U6c291cmNlCi0gICAgICAgICAg
ICAgICAgICBvZmZzZXQ6TlVMTF07Ci19Ci0KLS0gKE5TQXJyYXkgKiluYW1lc09mUHJvbWlzZWRG
aWxlc0Ryb3BwZWRBdERlc3RpbmF0aW9uOihOU1VSTCAqKWRyb3BEZXN0aW5hdGlvbgotewotICAg
IC8vIEZJWE1FOiBSZXBvcnQgYW4gZXJyb3IgaWYgd2UgZmFpbCB0byBjcmVhdGUgYSBmaWxlLgot
ICAgIE5TU3RyaW5nICpwYXRoID0gW1tkcm9wRGVzdGluYXRpb24gcGF0aF0gc3RyaW5nQnlBcHBl
bmRpbmdQYXRoQ29tcG9uZW50OltyZXAgZmlsZW5hbWVdXTsKLSAgICBwYXRoID0gW1tOU0ZpbGVN
YW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBfd2Via2l0X3BhdGhXaXRoVW5pcXVlRmlsZW5hbWVGb3JQ
YXRoOnBhdGhdOwotICAgIFtbcmVwIGRhdGFdIHdyaXRlVG9GaWxlOnBhdGggYXRvbWljYWxseTpO
T107Ci0gICAgcmV0dXJuIFtOU0FycmF5IGFycmF5V2l0aE9iamVjdDpbcGF0aCBsYXN0UGF0aENv
bXBvbmVudF1dOwotfQotCi0tICh2b2lkKWRyYWdnZWRJbWFnZTooTlNJbWFnZSAqKWFuSW1hZ2Ug
ZW5kZWRBdDooTlNQb2ludClhUG9pbnQgb3BlcmF0aW9uOihOU0RyYWdPcGVyYXRpb24pb3BlcmF0
aW9uCi17Ci0gICAgLy8gUHJldmVudCBxdWV1ZWQgbW91c2VEcmFnZ2VkIGV2ZW50cyBmcm9tIGNv
bWluZyBhZnRlciB0aGUgZHJhZyB3aGljaCBjYW4gY2F1c2UgYSBkb3VibGUgZHJhZy4KLSAgICBp
Z25vcmluZ01vdXNlRHJhZ2dlZEV2ZW50cyA9IFlFUzsKLSAgICAKLSAgICBbW3NlbGYgd2ViVmll
d10gX3NldEluaXRpYXRlZERyYWc6Tk9dOwotCi0gICAgLy8gQmFsYW5jZSB0aGUgcHJldmlvdXMg
cmV0YWluIGZyb20gd2hlbiB0aGUgZHJhZyBzdGFydGVkLgotICAgIFtzZWxmIHJlbGVhc2VdOwot
fQotCi0tIChOU0ltYWdlICopaW1hZ2UKLXsKLSAgICByZXR1cm4gW1tyZXAgaW1hZ2VdIGltYWdl
XTsKLX0KLQotI3ByYWdtYSBtYXJrIFBSSU5USU5HCi0KLS0gKHZvaWQpZHJhd1BhZ2VCb3JkZXJX
aXRoU2l6ZTooTlNTaXplKWJvcmRlclNpemUKLXsKLSAgICBBU1NFUlQoTlNFcXVhbFNpemVzKGJv
cmRlclNpemUsIFtbW05TUHJpbnRPcGVyYXRpb24gY3VycmVudE9wZXJhdGlvbl0gcHJpbnRJbmZv
XSBwYXBlclNpemVdKSk7Ci0gICAgLy8gRklYTUU6IEhvdyB0byBkZXRlcm1pbmUgdGhlIG51bWJl
ciBvZiBwYWdlcyByZXF1aXJlZCB0byBwcmludCB0aGUgd2hvbGUgaW1hZ2U/Ci0gICAgW1tzZWxm
IHdlYlZpZXddIF9kcmF3SGVhZGVyQW5kRm9vdGVyXTsKLX0KLQotLSAodm9pZCliZWdpbkRvY3Vt
ZW50Ci17Ci0gICAgW3NlbGYgYWRqdXN0RnJhbWVTaXplXTsKLSAgICBbW3NlbGYgd2ViVmlld10g
X2FkanVzdFByaW50aW5nTWFyZ2luc0ZvckhlYWRlckFuZEZvb3Rlcl07Ci0gICAgW3N1cGVyIGJl
Z2luRG9jdW1lbnRdOwotfQotCi0tICh2b2lkKWVuZERvY3VtZW50Ci17Ci0gICAgW3N1cGVyIGVu
ZERvY3VtZW50XTsKLSAgICBbc2VsZiBhZGp1c3RGcmFtZVNpemVdOwotfQotCi0tIChCT09MKWNh
blByaW50SGVhZGVyc0FuZEZvb3RlcnMKLXsKLSAgICByZXR1cm4gWUVTOwotfQotCi1AZW5kCklu
ZGV4OiBXZWJLaXQvV2ViVmlldy9XZWJBcmNoaXZlci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9X
ZWJWaWV3L1dlYkFyY2hpdmVyLmgJKHJldmlzaW9uIDE0Mzc2KQorKysgV2ViS2l0L1dlYlZpZXcv
V2ViQXJjaGl2ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNDEsNSArNDEsNiBAQAogKyAoV2ViQXJj
aGl2ZSAqKWFyY2hpdmVSYW5nZTooRE9NUmFuZ2UgKilyYW5nZTsKICsgKFdlYkFyY2hpdmUgKilh
cmNoaXZlU2VsZWN0aW9uSW5GcmFtZTooV2ViRnJhbWUgKilmcmFtZTsKICsgKFdlYkFyY2hpdmUg
KilhcmNoaXZlRnJhbWU6KFdlYkZyYW1lICopZnJhbWU7CisrIChXZWJBcmNoaXZlICopYXJjaGl2
ZU1haW5SZXNvdXJjZUZvckZyYW1lOihXZWJGcmFtZSAqKWZyYW1lOwogCiBAZW5kCkluZGV4OiBX
ZWJLaXQvV2ViVmlldy9XZWJBcmNoaXZlci5tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9XZWJWaWV3
L1dlYkFyY2hpdmVyLm0JKHJldmlzaW9uIDE0Mzc2KQorKysgV2ViS2l0L1dlYlZpZXcvV2ViQXJj
aGl2ZXIubQkod29ya2luZyBjb3B5KQpAQCAtNTksNiArNTksMTMgQEAKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHN1YmZyYW1lQXJjaGl2ZXM6W3NlbGYgX3N1YmZyYW1lQXJj
aGl2ZXNGb3JGcmFtZTpmcmFtZV1dIGF1dG9yZWxlYXNlXTsKIH0KIAorKyAoV2ViQXJjaGl2ZSAq
KWFyY2hpdmVNYWluUmVzb3VyY2VGb3JGcmFtZTooV2ViRnJhbWUgKilmcmFtZTsKK3sKKyAgICBy
ZXR1cm4gW1tbV2ViQXJjaGl2ZSBhbGxvY10gaW5pdFdpdGhNYWluUmVzb3VyY2U6W1tmcmFtZSBk
YXRhU291cmNlXSBtYWluUmVzb3VyY2VdCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc3VicmVzb3VyY2VzOm5pbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc3ViZnJhbWVBcmNoaXZlczpuaWxdIGF1dG9yZWxlYXNlXTsKK30KKwogKyAoV2ViQXJj
aGl2ZSAqKV9hcmNoaXZlQ3VycmVudFN0YXRlRm9yRnJhbWU6KFdlYkZyYW1lICopZnJhbWUKIHsK
ICAgICBpZiAoW2ZyYW1lIERPTURvY3VtZW50XSkKSW5kZXg6IFdlYktpdC9XZWJWaWV3L1dlYkZy
YW1lVmlldy5tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9XZWJWaWV3L1dlYkZyYW1lVmlldy5tCShy
ZXZpc2lvbiAxNDM3NikKKysrIFdlYktpdC9XZWJWaWV3L1dlYkZyYW1lVmlldy5tCSh3b3JraW5n
IGNvcHkpCkBAIC00MCw3ICs0MCw2IEBACiAjaW1wb3J0ICJXZWJIVE1MVmlld1ByaXZhdGUuaCIK
ICNpbXBvcnQgIldlYkltYWdlUmVuZGVyZXIuaCIKICNpbXBvcnQgIldlYkltYWdlUmVuZGVyZXJG
YWN0b3J5LmgiCi0jaW1wb3J0ICJXZWJJbWFnZVZpZXcuaCIKICNpbXBvcnQgIldlYktleUdlbmVy
YXRvci5oIgogI2ltcG9ydCAiV2ViS2l0RXJyb3JzUHJpdmF0ZS5oIgogI2ltcG9ydCAiV2ViS2l0
U3RhdGlzdGljc1ByaXZhdGUuaCIKQEAgLTI1OSw3ICsyNTgsNyBAQCBzdGF0aWMgaW5saW5lIHZv
aWQgYWRkVHlwZXNGcm9tQ2xhc3MoTlNNCiAgICAgCiAgICAgaWYgKCF2aWV3VHlwZXMpIHsKICAg
ICAgICAgdmlld1R5cGVzID0gW1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0XTsKLSAg
ICAgICAgYWRkVHlwZXNGcm9tQ2xhc3Modmlld1R5cGVzLCBbV2ViSFRNTFZpZXcgY2xhc3NdLCBb
V2ViSFRNTFZpZXcgc3VwcG9ydGVkTUlNRVR5cGVzXSk7CisgICAgICAgIGFkZFR5cGVzRnJvbUNs
YXNzKHZpZXdUeXBlcywgW1dlYkhUTUxWaWV3IGNsYXNzXSwgW1dlYkhUTUxWaWV3IHN1cHBvcnRl
ZE5vbkltYWdlTUlNRVR5cGVzXSk7CiAKICAgICAgICAgLy8gU2luY2UgdGhpcyBpcyBhICJzZWNy
ZXQgZGVmYXVsdCIgd2UgZG9uJ3QgYm90aCByZWdpc3RlcmluZyBpdC4KICAgICAgICAgQk9PTCBv
bWl0UERGU3VwcG9ydCA9IFtbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNdIGJv
b2xGb3JLZXk6QCJXZWJLaXRPbWl0UERGU3VwcG9ydCJdOwpAQCAtMjY4LDcgKzI2Nyw3IEBAIHN0
YXRpYyBpbmxpbmUgdm9pZCBhZGRUeXBlc0Zyb21DbGFzcyhOU00KICAgICB9CiAgICAgCiAgICAg
aWYgKCFhZGRlZEltYWdlVHlwZXMgJiYgIWFsbG93SW1hZ2VUeXBlT21pc3Npb24pIHsKLSAgICAg
ICAgYWRkVHlwZXNGcm9tQ2xhc3Modmlld1R5cGVzLCBbV2ViSW1hZ2VWaWV3IGNsYXNzXSwgW1dl
YkltYWdlVmlldyBzdXBwb3J0ZWRNSU1FVHlwZXNdKTsKKyAgICAgICAgYWRkVHlwZXNGcm9tQ2xh
c3Modmlld1R5cGVzLCBbV2ViSFRNTFZpZXcgY2xhc3NdLCBbV2ViSFRNTFZpZXcgc3VwcG9ydGVk
SW1hZ2VNSU1FVHlwZXNdKTsKICAgICAgICAgYWRkZWRJbWFnZVR5cGVzID0gWUVTOwogICAgIH0K
ICAgICAKSW5kZXg6IFdlYktpdC9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJLaXQvV2ViVmlldy9XZWJEYXRhU291cmNlLm0JKHJldmlzaW9uIDE0Mzc2KQorKysgV2Vi
S2l0L1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5tCSh3b3JraW5nIGNvcHkpCkBAIC00OCw4ICs0OCw2
IEBACiAjaW1wb3J0IDxXZWJLaXQvV2ViSWNvbkRhdGFiYXNlUHJpdmF0ZS5oPgogI2ltcG9ydCA8
V2ViS2l0L1dlYkljb25Mb2FkZXIuaD4KICNpbXBvcnQgPFdlYktpdC9XZWJJbWFnZVJlbmRlcmVy
RmFjdG9yeS5oPgotI2ltcG9ydCA8V2ViS2l0L1dlYkltYWdlUmVwcmVzZW50YXRpb24uaD4KLSNp
bXBvcnQgPFdlYktpdC9XZWJJbWFnZVZpZXcuaD4KICNpbXBvcnQgPFdlYktpdC9XZWJLaXRFcnJv
cnNQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV2ViS2l0TG9nZ2luZy5oPgogI2ltcG9ydCA8
V2ViS2l0L1dlYktpdE5TU3RyaW5nRXh0cmFzLmg+CkBAIC03MTEsNyArNzA5LDcgQEAgc3RhdGlj
IGlubGluZSB2b2lkIGFkZFR5cGVzRnJvbUNsYXNzKE5TTQogICAgIAogICAgIGlmICghcmVwVHlw
ZXMpIHsKICAgICAgICAgcmVwVHlwZXMgPSBbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGlu
aXRdOwotICAgICAgICBhZGRUeXBlc0Zyb21DbGFzcyhyZXBUeXBlcywgW1dlYkhUTUxSZXByZXNl
bnRhdGlvbiBjbGFzc10sIFtXZWJIVE1MUmVwcmVzZW50YXRpb24gc3VwcG9ydGVkTUlNRVR5cGVz
XSk7CisgICAgICAgIGFkZFR5cGVzRnJvbUNsYXNzKHJlcFR5cGVzLCBbV2ViSFRNTFJlcHJlc2Vu
dGF0aW9uIGNsYXNzXSwgW1dlYkhUTUxSZXByZXNlbnRhdGlvbiBzdXBwb3J0ZWROb25JbWFnZU1J
TUVUeXBlc10pOwogCiAgICAgICAgIC8vIFNpbmNlIHRoaXMgaXMgYSAic2VjcmV0IGRlZmF1bHQi
IHdlIGRvbid0IGJvdGggcmVnaXN0ZXJpbmcgaXQuCiAgICAgICAgIEJPT0wgb21pdFBERlN1cHBv
cnQgPSBbW05TVXNlckRlZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1bHRzXSBib29sRm9yS2V5OkAi
V2ViS2l0T21pdFBERlN1cHBvcnQiXTsKQEAgLTcyMCw3ICs3MTgsNyBAQCBzdGF0aWMgaW5saW5l
IHZvaWQgYWRkVHlwZXNGcm9tQ2xhc3MoTlNNCiAgICAgfQogICAgIAogICAgIGlmICghYWRkZWRJ
bWFnZVR5cGVzICYmICFhbGxvd0ltYWdlVHlwZU9taXNzaW9uKSB7Ci0gICAgICAgIGFkZFR5cGVz
RnJvbUNsYXNzKHJlcFR5cGVzLCBbV2ViSW1hZ2VSZXByZXNlbnRhdGlvbiBjbGFzc10sIFtXZWJJ
bWFnZVJlcHJlc2VudGF0aW9uIHN1cHBvcnRlZE1JTUVUeXBlc10pOworICAgICAgICBhZGRUeXBl
c0Zyb21DbGFzcyhyZXBUeXBlcywgW1dlYkhUTUxSZXByZXNlbnRhdGlvbiBjbGFzc10sIFtXZWJI
VE1MUmVwcmVzZW50YXRpb24gc3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXNdKTsKICAgICAgICAgYWRk
ZWRJbWFnZVR5cGVzID0gWUVTOwogICAgIH0KICAgICAKSW5kZXg6IFdlYktpdC9XZWJWaWV3L1dl
YkhUTUxWaWV3Lm0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L1dlYlZpZXcvV2ViSFRNTFZpZXcubQko
cmV2aXNpb24gMTQzNzYpCisrKyBXZWJLaXQvV2ViVmlldy9XZWJIVE1MVmlldy5tCSh3b3JraW5n
IGNvcHkpCkBAIC02OTgsNiArNjk4LDE2IEBAIHZvaWQgKl9OU1NvZnRMaW5raW5nR2V0RnJhbWV3
b3JrRnVuY1B0cigKICAgICByZXR1cm4gW1dlYkhUTUxSZXByZXNlbnRhdGlvbiBzdXBwb3J0ZWRN
SU1FVHlwZXNdOwogfQogCisrIChOU0FycmF5ICopc3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXMKK3sK
KyAgICByZXR1cm4gW1dlYkhUTUxSZXByZXNlbnRhdGlvbiBzdXBwb3J0ZWRJbWFnZU1JTUVUeXBl
c107Cit9CisKKysgKE5TQXJyYXkgKilzdXBwb3J0ZWROb25JbWFnZU1JTUVUeXBlcworeworICAg
IHJldHVybiBbV2ViSFRNTFJlcHJlc2VudGF0aW9uIHN1cHBvcnRlZE5vbkltYWdlTUlNRVR5cGVz
XTsKK30KKwogKyAoTlNBcnJheSAqKXVuc3VwcG9ydGVkVGV4dE1JTUVUeXBlcwogewogICAgIHJl
dHVybiBbTlNBcnJheSBhcnJheVdpdGhPYmplY3RzOgpAQCAtMTI3NiwxMSArMTI4NiwyMSBAQCBz
dGF0aWMgV2ViSFRNTFZpZXcgKmxhc3RIaXRWaWV3ID0gbmlsOwogICAgICAgICAgICAgQVNTRVJU
KGltYWdlRWxlbWVudCAhPSBuaWwpOwogICAgICAgICAgICAgW3dlYlZpZXcgc2V0U2VsZWN0ZWRE
T01SYW5nZTpbW1tzZWxmIF9icmlkZ2VdIERPTURvY3VtZW50XSBfY3JlYXRlUmFuZ2VXaXRoTm9k
ZTppbWFnZUVsZW1lbnRdIGFmZmluaXR5Ok5TU2VsZWN0aW9uQWZmaW5pdHlEb3duc3RyZWFtXTsK
ICAgICAgICAgICAgIF9wcml2YXRlLT5kcmFnZ2luZ0ltYWdlVVJMID0gW2ltYWdlVVJMIHJldGFp
bl07CisgICAgICAgICAgICAKKyAgICAgICAgICAgIFdlYkFyY2hpdmUgKmFyY2hpdmU7CisgICAg
ICAgICAgICAKKyAgICAgICAgICAgIC8vIElmIHRoZSBpbWFnZSBlbGVtZW50IGNvbWVzIGZyb20g
YW4gSW1hZ2VEb2N1bWVudCwgd2UgZG9uJ3Qgd2FudCB0byAKKyAgICAgICAgICAgIC8vIGNyZWF0
ZSBhIHdlYiBhcmNoaXZlIGZyb20gdGhlIGltYWdlIGVsZW1lbnQuCisgICAgICAgICAgICBpZiAo
W1tzZWxmIF9icmlkZ2VdIGNhblNhdmVBc1dlYkFyY2hpdmVdKQorICAgICAgICAgICAgICAgIGFy
Y2hpdmUgPSBbaW1hZ2VFbGVtZW50IHdlYkFyY2hpdmVdOworICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgICAgIGFyY2hpdmUgPSBbV2ViQXJjaGl2ZXIgYXJjaGl2ZU1haW5SZXNvdXJjZUZv
ckZyYW1lOltzZWxmIF9mcmFtZV1dOworICAgICAgICAgICAgCiAgICAgICAgICAgICBzb3VyY2Ug
PSBbcGFzdGVib2FyZCBfd2ViX2RlY2xhcmVBbmRXcml0ZURyYWdJbWFnZTpuaWwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50Omlt
YWdlRWxlbWVudAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBVUkw6bGlua1VSTCA/IGxpbmtVUkwgOiBpbWFnZVVSTAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6W2Vs
ZW1lbnQgb2JqZWN0Rm9yS2V5OldlYkVsZW1lbnRJbWFnZUFsdFN0cmluZ0tleV0KLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmNoaXZlOltp
bWFnZUVsZW1lbnQgd2ViQXJjaGl2ZV0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBhcmNoaXZlOmFyY2hpdmUKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlOnNlbGZdOwogICAg
ICAgICB9CiAgICAgICAgIFtbd2ViVmlldyBfVUlEZWxlZ2F0ZUZvcndhcmRlcl0gd2ViVmlldzp3
ZWJWaWV3IHdpbGxQZXJmb3JtRHJhZ1NvdXJjZUFjdGlvbjpXZWJEcmFnU291cmNlQWN0aW9uSW1h
Z2UgZnJvbVBvaW50Om1vdXNlRG93blBvaW50IHdpdGhQYXN0ZWJvYXJkOnBhc3RlYm9hcmRdOwpJ
bmRleDogV2ViS2l0L1dlYlZpZXcvV2ViSW1hZ2VSZXByZXNlbnRhdGlvbi5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYktpdC9XZWJWaWV3L1dlYkltYWdlUmVwcmVzZW50YXRpb24uaAkocmV2aXNpb24gMTQz
NzYpCisrKyBXZWJLaXQvV2ViVmlldy9XZWJJbWFnZVJlcHJlc2VudGF0aW9uLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNDggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNSBBcHBsZSBD
b21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuIAot
ICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uIAot
ICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIp
IG5vciB0aGUgbmFtZXMgb2YKLSAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCi0gKiAgICAgZnJvbSB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLiAKLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JT
ICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQot
ICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0IDxDb2NvYS9Db2Nv
YS5oPgotCi1AY2xhc3MgV2ViRGF0YVNvdXJjZTsKLUBjbGFzcyBXZWJJbWFnZVJlbmRlcmVyOwot
Ci1AcHJvdG9jb2wgV2ViRG9jdW1lbnRSZXByZXNlbnRhdGlvbjsKLQotQGludGVyZmFjZSBXZWJJ
bWFnZVJlcHJlc2VudGF0aW9uIDogTlNPYmplY3QgPFdlYkRvY3VtZW50UmVwcmVzZW50YXRpb24+
Ci17Ci0gICAgV2ViRGF0YVNvdXJjZSAqZGF0YVNvdXJjZTsKLSAgICBXZWJJbWFnZVJlbmRlcmVy
ICppbWFnZTsKLSAgICBCT09MIGRvbmVMb2FkaW5nOwotfQotKyAoTlNBcnJheSAqKXN1cHBvcnRl
ZE1JTUVUeXBlczsKLS0gKFdlYkltYWdlUmVuZGVyZXIgKilpbWFnZTsKLS0gKE5TU3RyaW5nICop
ZmlsZW5hbWU7Ci0tIChCT09MKWRvbmVMb2FkaW5nOwotLSAoTlNEYXRhICopZGF0YTsKLS0gKE5T
VVJMICopVVJMOwotQGVuZApJbmRleDogV2ViS2l0L1dlYlZpZXcvV2ViSW1hZ2VSZXByZXNlbnRh
dGlvbi5tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9XZWJWaWV3L1dlYkltYWdlUmVwcmVzZW50YXRp
b24ubQkocmV2aXNpb24gMTQzNzYpCisrKyBXZWJLaXQvV2ViVmlldy9XZWJJbWFnZVJlcHJlc2Vu
dGF0aW9uLm0JKHdvcmtpbmcgY29weSkKQEAgLTEsMTM0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMDUgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLiAKLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLiAKLSAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1
dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCi0gKiAgICAgaXRzIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAot
ICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4gCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBB
TkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQK
LSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
I2ltcG9ydCAiV2ViSW1hZ2VSZXByZXNlbnRhdGlvbi5oIgotCi0jaW1wb3J0IDxXZWJLaXQvV2Vi
QXJjaGl2ZS5oPgotI2ltcG9ydCA8V2ViS2l0L1dlYkRhdGFTb3VyY2VQcml2YXRlLmg+Ci0jaW1w
b3J0IDxXZWJLaXQvV2ViSW1hZ2VSZW5kZXJlci5oPgotI2ltcG9ydCA8V2ViS2l0L1dlYkltYWdl
UmVuZGVyZXJGYWN0b3J5Lmg+Ci0jaW1wb3J0IDxXZWJLaXQvV2ViTG9jYWxpemFibGVTdHJpbmdz
Lmg+Ci0jaW1wb3J0IDxXZWJLaXQvV2ViUmVzb3VyY2UuaD4KLQotI2ltcG9ydCA8V2ViQ29yZS9X
ZWJDb3JlSW1hZ2VSZW5kZXJlci5oPgotCi0jaW1wb3J0IDxGb3VuZGF0aW9uL05TVVJMUmVxdWVz
dC5oPgotCi1AaW1wbGVtZW50YXRpb24gV2ViSW1hZ2VSZXByZXNlbnRhdGlvbgotCi0rIChOU0Fy
cmF5ICopc3VwcG9ydGVkTUlNRVR5cGVzCi17Ci0gICAgc3RhdGljIE5TTXV0YWJsZUFycmF5ICpp
bWFnZU1JTUVUeXBlcyA9IG5pbDsKLSAgICBpZiAoaW1hZ2VNSU1FVHlwZXMgPT0gbmlsKSB7Ci0g
ICAgICAgIGltYWdlTUlNRVR5cGVzID0gW1tbV2ViSW1hZ2VSZW5kZXJlckZhY3Rvcnkgc2hhcmVk
RmFjdG9yeV0gc3VwcG9ydGVkTUlNRVR5cGVzXSBtdXRhYmxlQ29weV07Ci0gICAgICAgIFtpbWFn
ZU1JTUVUeXBlcyByZW1vdmVPYmplY3Q6QCJhcHBsaWNhdGlvbi9wZGYiXTsKLSAgICAgICAgW2lt
YWdlTUlNRVR5cGVzIHJlbW92ZU9iamVjdDpAImFwcGxpY2F0aW9uL3Bvc3RzY3JpcHQiXTsKLSAg
ICB9Ci0gICAgcmV0dXJuIGltYWdlTUlNRVR5cGVzOwotfQotCi0tICh2b2lkKWRlYWxsb2MKLXsK
LSAgICBbaW1hZ2UgcmVsZWFzZV07Ci0gICAgW3N1cGVyIGRlYWxsb2NdOwotfQotCi0tIChXZWJJ
bWFnZVJlbmRlcmVyICopaW1hZ2UKLXsKLSAgICByZXR1cm4gaW1hZ2U7Ci19Ci0KLS0gKE5TVVJM
ICopVVJMCi17Ci0gICAgcmV0dXJuIFtbZGF0YVNvdXJjZSByZXF1ZXN0XSBVUkxdOwotfQotCi0t
IChCT09MKWRvbmVMb2FkaW5nCi17Ci0gICAgcmV0dXJuIGRvbmVMb2FkaW5nOwotfQotCi0tICh2
b2lkKXNldERhdGFTb3VyY2U6KFdlYkRhdGFTb3VyY2UgKil0aGVEYXRhU291cmNlCi17Ci0gICAg
ZGF0YVNvdXJjZSA9IHRoZURhdGFTb3VyY2U7Ci0gICAgaW1hZ2UgPSBbW1tXZWJJbWFnZVJlbmRl
cmVyRmFjdG9yeSBzaGFyZWRGYWN0b3J5XSBpbWFnZVJlbmRlcmVyV2l0aE1JTUVUeXBlOltbZGF0
YVNvdXJjZSByZXNwb25zZV0gTUlNRVR5cGVdXSByZXRhaW5dOwotfQotCi0tICh2b2lkKXJlY2Vp
dmVkRGF0YTooTlNEYXRhICopZGF0YSB3aXRoRGF0YVNvdXJjZTooV2ViRGF0YVNvdXJjZSAqKXRo
ZURhdGFTb3VyY2UKLXsKLSAgICBOU0RhdGEgKmFsbERhdGEgPSBbZGF0YVNvdXJjZSBkYXRhXTsK
LSAgICBbaW1hZ2UgaW5jcmVtZW50YWxMb2FkV2l0aEJ5dGVzOlthbGxEYXRhIGJ5dGVzXSBsZW5n
dGg6W2FsbERhdGEgbGVuZ3RoXSBjb21wbGV0ZTpOTyBjYWxsYmFjazowXTsKLX0KLQotLSAodm9p
ZClyZWNlaXZlZEVycm9yOihOU0Vycm9yICopZXJyb3Igd2l0aERhdGFTb3VyY2U6KFdlYkRhdGFT
b3VyY2UgKil0aGVEYXRhU291cmNlCi17Ci0gICAgTlNEYXRhICphbGxEYXRhID0gW2RhdGFTb3Vy
Y2UgZGF0YV07Ci0gICAgaWYgKFthbGxEYXRhIGxlbmd0aF0gPiAwKSB7Ci0gICAgICAgIFtpbWFn
ZSBpbmNyZW1lbnRhbExvYWRXaXRoQnl0ZXM6W2FsbERhdGEgYnl0ZXNdIGxlbmd0aDpbYWxsRGF0
YSBsZW5ndGhdIGNvbXBsZXRlOllFUyBjYWxsYmFjazowXTsKLSAgICB9Ci0gICAgZG9uZUxvYWRp
bmcgPSBZRVM7Ci19Ci0KLS0gKHZvaWQpZmluaXNoZWRMb2FkaW5nV2l0aERhdGFTb3VyY2U6KFdl
YkRhdGFTb3VyY2UgKil0aGVEYXRhU291cmNlCi17Ci0gICAgTlNEYXRhICphbGxEYXRhID0gW2Rh
dGFTb3VyY2UgZGF0YV07Ci0gICAgW2ltYWdlIGluY3JlbWVudGFsTG9hZFdpdGhCeXRlczpbYWxs
RGF0YSBieXRlc10gbGVuZ3RoOlthbGxEYXRhIGxlbmd0aF0gY29tcGxldGU6WUVTIGNhbGxiYWNr
OjBdOwotICAgIGRvbmVMb2FkaW5nID0gWUVTOwotfQotCi0tIChCT09MKWNhblByb3ZpZGVEb2N1
bWVudFNvdXJjZQotewotICAgIHJldHVybiBOTzsKLX0KLQotLSAoTlNTdHJpbmcgKilkb2N1bWVu
dFNvdXJjZQotewotICAgIHJldHVybiBuaWw7Ci19Ci0KLS0gKE5TU3RyaW5nICopdGl0bGUKLXsK
LSAgICBOU1N0cmluZyAqZmlsZW5hbWUgPSBbc2VsZiBmaWxlbmFtZV07Ci0gICAgTlNTaXplIHNp
emUgPSBbaW1hZ2Ugc2l6ZV07Ci0gICAgaWYgKCFOU0VxdWFsU2l6ZXMoc2l6ZSwgTlNaZXJvU2l6
ZSkpIHsKLSAgICAgICAgcmV0dXJuIFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OlVJX1NUUklO
RygiJUAgJS4wZsOXJS4wZiBwaXhlbHMiLCAid2luZG93IHRpdGxlIGZvciBhIHN0YW5kYWxvbmUg
aW1hZ2UgKHVzZXMgbXVsdGlwbGljYXRpb24gc3ltYm9sLCBub3QgeCkiKSwgZmlsZW5hbWUsIHNp
emUud2lkdGgsIHNpemUuaGVpZ2h0XTsKLSAgICB9Ci0gICAgcmV0dXJuIGZpbGVuYW1lOwotfQot
Ci0tIChOU0RhdGEgKilkYXRhCi17Ci0gICAgcmV0dXJuIFtkYXRhU291cmNlIGRhdGFdOwotfQot
Ci0tIChOU1N0cmluZyAqKWZpbGVuYW1lCi17Ci0gICAgcmV0dXJuIFtbZGF0YVNvdXJjZSByZXNw
b25zZV0gc3VnZ2VzdGVkRmlsZW5hbWVdOwotfQotCi1AZW5kCkluZGV4OiBXZWJLaXQvV2ViVmll
dy9XZWJIVE1MVmlld1ByaXZhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvV2ViVmlldy9XZWJI
VE1MVmlld1ByaXZhdGUuaAkocmV2aXNpb24gMTQzNzYpCisrKyBXZWJLaXQvV2ViVmlldy9XZWJI
VE1MVmlld1ByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDAsNiArNDAsOCBAQAogCiAtICh2
b2lkKV9yZXNldDsKICsgKE5TQXJyYXkgKilzdXBwb3J0ZWRNSU1FVHlwZXM7CisrIChOU0FycmF5
ICopc3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXM7CisrIChOU0FycmF5ICopc3VwcG9ydGVkTm9uSW1h
Z2VNSU1FVHlwZXM7CiArIChOU0FycmF5ICopdW5zdXBwb3J0ZWRUZXh0TUlNRVR5cGVzOwogCiAv
LyBNb2RpZmllciAoZmxhZ3NDaGFuZ2VkKSB0cmFja2luZyBTUEkK
</data>
<flag name="review"
          id="2342"
          type_id="1"
          status="+"
          setter="mjs"
    />
          </attachment>
      

    </bug>

</bugzilla>