<?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>59686</bug_id>
          
          <creation_ts>2011-04-28 03:51:50 -0700</creation_ts>
          <short_desc>[GTK] Move WebView to UIProcess/API/gtk</short_desc>
          <delta_ts>2011-04-28 10:00:10 -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>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Gtk</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>57944</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Carlos Garcia Campos">cgarcia</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>394342</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2011-04-28 03:51:50 -0700</bug_when>
    <thetext>And rename it to PageClientImpl.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>394344</commentid>
    <comment_count>1</comment_count>
      <attachid>91464</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2011-04-28 03:54:36 -0700</bug_when>
    <thetext>Created attachment 91464
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>394492</commentid>
    <comment_count>2</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2011-04-28 09:49:07 -0700</bug_when>
    <thetext>Committed r85198: &lt;http://trac.webkit.org/changeset/85198&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>394500</commentid>
    <comment_count>3</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2011-04-28 10:00:10 -0700</bug_when>
    <thetext>*** Bug 59602 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>91464</attachid>
            <date>2011-04-28 03:54:36 -0700</date>
            <delta_ts>2011-04-28 09:49:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>wk2-page-client-impl.diff</filename>
            <type>text/plain</type>
            <size>55357</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCA0N2Q4NTBhLi4xZjc3NDNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzcg
QEAKKzIwMTEtMDQtMjggIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtHVEtd
IE1vdmUgV2ViVmlldyB0byBVSVByb2Nlc3MvQVBJL2d0aworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTk2ODYKKworICAgICAgICBBbmQgcmVuYW1lIGl0
IGFzIFBhZ2VDbGllbnRJbXBsLCBzaW5jZSBpdCdzIGEgcGFnZSBjbGllbnQKKyAgICAgICAgaW1w
bGVtZW50YXRpb24sIG5vdCBhIHdlYiB2aWV3LgorCisgICAgICAgICogR05VbWFrZWZpbGUuYW06
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL2d0ay9XS1ZpZXcuY3BwOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViVmlldy5jcHAuCisgICAgICAgIChXZWJLaXQ6OmJhY2tz
cGFjZUNhbGxiYWNrKToKKyAgICAgICAgKFdlYktpdDo6c2VsZWN0QWxsQ2FsbGJhY2spOgorICAg
ICAgICAoV2ViS2l0OjpjdXRDbGlwYm9hcmRDYWxsYmFjayk6CisgICAgICAgIChXZWJLaXQ6OmNv
cHlDbGlwYm9hcmRDYWxsYmFjayk6CisgICAgICAgIChXZWJLaXQ6OnBhc3RlQ2xpcGJvYXJkQ2Fs
bGJhY2spOgorICAgICAgICAoV2ViS2l0Ojp0b2dnbGVPdmVyd3JpdGVDYWxsYmFjayk6CisgICAg
ICAgIChXZWJLaXQ6OnBvcHVwTWVudUNhbGxiYWNrKToKKyAgICAgICAgKFdlYktpdDo6c2hvd0hl
bHBDYWxsYmFjayk6CisgICAgICAgIChXZWJLaXQ6OmRlbGV0ZUZyb21DdXJzb3JDYWxsYmFjayk6
CisgICAgICAgIChXZWJLaXQ6Om1vdmVDdXJzb3JDYWxsYmFjayk6CisgICAgICAgIChXZWJLaXQ6
OlBhZ2VDbGllbnRJbXBsOjpQYWdlQ2xpZW50SW1wbCk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VD
bGllbnRJbXBsOjp+UGFnZUNsaWVudEltcGwpOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50
SW1wbDo6Z2V0RWRpdG9yQ29tbWFuZHNGb3JLZXlFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OlBh
Z2VDbGllbnRJbXBsOjpjcmVhdGVEcmF3aW5nQXJlYVByb3h5KToKKyAgICAgICAgKFdlYktpdDo6
UGFnZUNsaWVudEltcGw6OnNldFZpZXdOZWVkc0Rpc3BsYXkpOgorICAgICAgICAoV2ViS2l0OjpQ
YWdlQ2xpZW50SW1wbDo6ZGlzcGxheVZpZXcpOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50
SW1wbDo6c2Nyb2xsVmlldyk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjp2aWV3
U2l6ZSk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjppc1ZpZXdXaW5kb3dBY3Rp
dmUpOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6aXNWaWV3Rm9jdXNlZCk6Cisg
ICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjppc1ZpZXdWaXNpYmxlKToKKyAgICAgICAg
KFdlYktpdDo6UGFnZUNsaWVudEltcGw6OmlzVmlld0luV2luZG93KToKKyAgICAgICAgKFdlYktp
dDo6UGFnZUNsaWVudEltcGw6OlBhZ2VDbGllbnRJbXBsOjpwcm9jZXNzRGlkQ3Jhc2gpOgorICAg
ICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6ZGlkUmVsYXVuY2hQcm9jZXNzKToKKyAgICAg
ICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OnRha2VGb2N1cyk6CisgICAgICAgIChXZWJLaXQ6
OlBhZ2VDbGllbnRJbXBsOjp0b29sVGlwQ2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VD
bGllbnRJbXBsOjpzZXRDdXJzb3IpOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6
c2V0Vmlld3BvcnRBcmd1bWVudHMpOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6
cmVnaXN0ZXJFZGl0Q29tbWFuZCk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpj
bGVhckFsbEVkaXRDb21tYW5kcyk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpj
YW5VbmRvUmVkbyk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpleGVjdXRlVW5k
b1JlZG8pOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6Y29udmVydFRvRGV2aWNl
U3BhY2UpOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6Y29udmVydFRvVXNlclNw
YWNlKToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OndpbmRvd1RvU2NyZWVuKToK
KyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OmRvbmVXaXRoS2V5RXZlbnQpOgorICAg
ICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6ZGlkTm90SGFuZGxlS2V5RXZlbnQpOgorICAg
ICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlUG9wdXBNZW51UHJveHkpOgorICAg
ICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlQ29udGV4dE1lbnVQcm94eSk6Cisg
ICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpzZXRGaW5kSW5kaWNhdG9yKToKKyAgICAg
ICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OnBhZ2VEaWRFbnRlckFjY2VsZXJhdGVkQ29tcG9z
aXRpbmcpOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6cGFnZURpZExlYXZlQWNj
ZWxlcmF0ZWRDb21wb3NpdGluZyk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpk
aWRDb21taXRMb2FkRm9yTWFpbkZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudElt
cGw6OmRpZEZpbmlzaExvYWRpbmdEYXRhRm9yQ3VzdG9tUmVwcmVzZW50YXRpb24pOgorICAgICAg
ICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6Y3VzdG9tUmVwcmVzZW50YXRpb25ab29tRmFjdG9y
KToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OnNldEN1c3RvbVJlcHJlc2VudGF0
aW9uWm9vbUZhY3Rvcik6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpwYWdlQ2xv
c2VkKToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OmRpZENoYW5nZVNjcm9sbGJh
cnNGb3JNYWluRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6Zmxhc2hC
YWNraW5nU3RvcmVVcGRhdGVzKToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OmZp
bmRTdHJpbmdJbkN1c3RvbVJlcHJlc2VudGF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNs
aWVudEltcGw6OmNvdW50U3RyaW5nTWF0Y2hlc0luQ3VzdG9tUmVwcmVzZW50YXRpb24pOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmg6IFJlbmFtZWQgZnJvbSBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYlZpZXcuaC4KKyAgICAgICAgKFdlYktpdDo6
UGFnZUNsaWVudEltcGw6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBs
OjphZGRQZW5kaW5nRWRpdG9yQ29tbWFuZCk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJ
bXBsOjp1c2VyU3BhY2VTY2FsZUZhY3Rvcik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0V2ViVmlld0Jhc2UuY3BwOgorICAgICAgICAod2Via2l0V2ViVmlld0Jhc2VJbml0KToK
KyAgICAgICAgKHdlYmtpdFdlYlZpZXdCYXNlQ3JlYXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9ndGsvQ2h1
bmtlZFVwZGF0ZURyYXdpbmdBcmVhUHJveHlHdGsuY3BwOgorCiAyMDExLTA0LTI3ICBTYW0gV2Vp
bmlnICA8c2FtQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBSb2Jlbi4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmFtIGIvU291cmNlL1dlYktp
dDIvR05VbWFrZWZpbGUuYW0KaW5kZXggOTJkZWM3ZC4uYjNhYzIwYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvR05VbWFrZWZpbGUuYW0KKysrIGIvU291cmNlL1dlYktpdDIvR05VbWFrZWZp
bGUuYW0KQEAgLTM1MCw2ICszNTAsOCBAQCBsaWJ3ZWJraXQyZ3RrX0BXRUJLSVRHVEtfQVBJX01B
Sk9SX1ZFUlNJT05AX0BXRUJLSVRHVEtfQVBJX01JTk9SX1ZFUlNJT05AX2xhX1NPVQogCVNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1Jlc291cmNlQ2FjaGVNYW5hZ2VyLmggXAogCVNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1Jlc291cmNlQ2FjaGVNYW5hZ2VyLmNwcCBc
CiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9jcHAvV0tSZXRhaW5QdHIuaCBcCisJU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuaCBcCisJU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuY3BwIFwKIAlTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5oIFwKIAlTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAgXAogCVNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZVByb3h5LmNwcCBcCkBAIC0zODAsOCArMzgyLDYgQEAgbGlid2Via2l0Mmd0a19AV0VCS0lUR1RL
X0FQSV9NQUpPUl9WRVJTSU9OQF9AV0VCS0lUR1RLX0FQSV9NSU5PUl9WRVJTSU9OQF9sYV9TT1UK
IAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYkluc3BlY3Rvckd0ay5jcHAgXAogCVNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViUGFnZVByb3h5R3RrLmNwcCBcCiAJU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJQcmVmZXJlbmNlc0d0ay5jcHAgXAotCVNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViVmlldy5jcHAgXAotCVNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9ndGsvV2ViVmlldy5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIv
Z3RrL1Byb2Nlc3NMYXVuY2hlckd0ay5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9M
YXVuY2hlci9ndGsvVGhyZWFkTGF1bmNoZXJHdGsuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvTGF1bmNoZXIvUHJvY2Vzc0xhdW5jaGVyLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvZ3RrL1dLVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0MvZ3RrL1dLVmlldy5jcHAKaW5kZXggMDc5Mzg1Yy4uNmVlM2NlZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2d0ay9XS1ZpZXcuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9ndGsvV0tWaWV3LmNwcApAQCAtMzAs
NyArMzAsNiBAQAogCiAjaW5jbHVkZSAiV0tBUElDYXN0LmgiCiAjaW5jbHVkZSAiV2ViS2l0V2Vi
Vmlld0Jhc2UuaCIKLSNpbmNsdWRlICJXZWJWaWV3LmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQ
dHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5n
SW1wbC5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvUGFn
ZUNsaWVudEltcGwuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNs
aWVudEltcGwuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVjNzM4NDMK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9QYWdl
Q2xpZW50SW1wbC5jcHAKQEAgLTAsMCArMSw1MDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogUG9ydGlvbnMgQ29weXJpZ2h0
IChjKSAyMDEwIE1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDExIElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJQYWdlQ2xpZW50SW1wbC5oIgorCisjaW5jbHVkZSAiQ2h1bmtl
ZFVwZGF0ZURyYXdpbmdBcmVhUHJveHkuaCIKKyNpbmNsdWRlICJOYXRpdmVXZWJLZXlib2FyZEV2
ZW50LmgiCisjaW5jbHVkZSAiTmF0aXZlV2ViTW91c2VFdmVudC5oIgorI2luY2x1ZGUgIk5vdElt
cGxlbWVudGVkLmgiCisjaW5jbHVkZSAiV2ViQ29udGV4dC5oIgorI2luY2x1ZGUgIldlYkNvbnRl
eHRNZW51UHJveHkuaCIKKyNpbmNsdWRlICJXZWJFdmVudEZhY3RvcnkuaCIKKyNpbmNsdWRlICJX
ZWJLaXRXZWJWaWV3QmFzZS5oIgorI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgorI2luY2x1ZGUg
PHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCit0eXBlZGVmIEhhc2hNYXA8aW50LCBjb25zdCBjaGFy
Kj4gSW50Q29uc3RDaGFySGFzaE1hcDsKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25h
bWVzcGFjZSBXZWJLaXQgeworCitzdGF0aWMgdm9pZCBiYWNrc3BhY2VDYWxsYmFjayhHdGtXaWRn
ZXQqIHdpZGdldCwgUGFnZUNsaWVudEltcGwqIGNsaWVudCkKK3sKKyAgICBnX3NpZ25hbF9zdG9w
X2VtaXNzaW9uX2J5X25hbWUod2lkZ2V0LCAiYmFja3NwYWNlIik7CisgICAgY2xpZW50LT5hZGRQ
ZW5kaW5nRWRpdG9yQ29tbWFuZCgiRGVsZXRlQmFja3dhcmQiKTsKK30KKworc3RhdGljIHZvaWQg
c2VsZWN0QWxsQ2FsbGJhY2soR3RrV2lkZ2V0KiB3aWRnZXQsIGdib29sZWFuIHNlbGVjdCwgUGFn
ZUNsaWVudEltcGwqIGNsaWVudCkKK3sKKyAgICBnX3NpZ25hbF9zdG9wX2VtaXNzaW9uX2J5X25h
bWUod2lkZ2V0LCAic2VsZWN0LWFsbCIpOworICAgIGNsaWVudC0+YWRkUGVuZGluZ0VkaXRvckNv
bW1hbmQoc2VsZWN0ID8gIlNlbGVjdEFsbCIgOiAiVW5zZWxlY3QiKTsKK30KKworc3RhdGljIHZv
aWQgY3V0Q2xpcGJvYXJkQ2FsbGJhY2soR3RrV2lkZ2V0KiB3aWRnZXQsIFBhZ2VDbGllbnRJbXBs
KiBjbGllbnQpCit7CisgICAgZ19zaWduYWxfc3RvcF9lbWlzc2lvbl9ieV9uYW1lKHdpZGdldCwg
ImN1dC1jbGlwYm9hcmQiKTsKKyAgICBjbGllbnQtPmFkZFBlbmRpbmdFZGl0b3JDb21tYW5kKCJD
dXQiKTsKK30KKworc3RhdGljIHZvaWQgY29weUNsaXBib2FyZENhbGxiYWNrKEd0a1dpZGdldCog
d2lkZ2V0LCBQYWdlQ2xpZW50SW1wbCogY2xpZW50KQoreworICAgIGdfc2lnbmFsX3N0b3BfZW1p
c3Npb25fYnlfbmFtZSh3aWRnZXQsICJjb3B5LWNsaXBib2FyZCIpOworICAgIGNsaWVudC0+YWRk
UGVuZGluZ0VkaXRvckNvbW1hbmQoIkNvcHkiKTsKK30KKworc3RhdGljIHZvaWQgcGFzdGVDbGlw
Ym9hcmRDYWxsYmFjayhHdGtXaWRnZXQqIHdpZGdldCwgUGFnZUNsaWVudEltcGwqIGNsaWVudCkK
K3sKKyAgICBnX3NpZ25hbF9zdG9wX2VtaXNzaW9uX2J5X25hbWUod2lkZ2V0LCAicGFzdGUtY2xp
cGJvYXJkIik7CisgICAgY2xpZW50LT5hZGRQZW5kaW5nRWRpdG9yQ29tbWFuZCgiUGFzdGUiKTsK
K30KKworc3RhdGljIHZvaWQgdG9nZ2xlT3ZlcndyaXRlQ2FsbGJhY2soR3RrV2lkZ2V0KiB3aWRn
ZXQsIEVkaXRvckNsaWVudCopCit7CisgICAgLy8gV2UgZG9uJ3Qgc3VwcG9ydCB0b2dnbGluZyB0
aGUgb3ZlcndyaXRlIG1vZGUsIGJ1dCB0aGUgZGVmYXVsdCBjYWxsYmFjayBleHBlY3RzCisgICAg
Ly8gdGhlIEd0a1RleHRWaWV3IHRvIGhhdmUgYSBsYXlvdXQsIHNvIHdlIGhhbmRsZSB0aGlzIHNp
Z25hbCBqdXN0IHRvIHN0b3AgaXQuCisgICAgZ19zaWduYWxfc3RvcF9lbWlzc2lvbl9ieV9uYW1l
KHdpZGdldCwgInRvZ2dsZS1vdmVyd3JpdGUiKTsKK30KKworLy8gR1RLKyB3aWxsIHN0aWxsIHNl
bmQgdGhlc2Ugc2lnbmFscyB0byB0aGUgd2ViIHZpZXcuIFNvIHdlIGNhbiBzYWZlbHkgc3RvcCBz
aWduYWwKKy8vIGVtaXNzaW9uIHdpdGhvdXQgYnJlYWtpbmcgYWNjZXNzaWJpbGl0eS4KK3N0YXRp
YyB2b2lkIHBvcHVwTWVudUNhbGxiYWNrKEd0a1dpZGdldCogd2lkZ2V0LCBFZGl0b3JDbGllbnQq
KQoreworICAgIGdfc2lnbmFsX3N0b3BfZW1pc3Npb25fYnlfbmFtZSh3aWRnZXQsICJwb3B1cC1t
ZW51Iik7Cit9CisKK3N0YXRpYyB2b2lkIHNob3dIZWxwQ2FsbGJhY2soR3RrV2lkZ2V0KiB3aWRn
ZXQsIEVkaXRvckNsaWVudCopCit7CisgICAgZ19zaWduYWxfc3RvcF9lbWlzc2lvbl9ieV9uYW1l
KHdpZGdldCwgInNob3ctaGVscCIpOworfQorCitzdGF0aWMgY29uc3QgY2hhciogY29uc3QgZ3Rr
RGVsZXRlQ29tbWFuZHNbXVsyXSA9IHsKKyAgICB7ICJEZWxldGVCYWNrd2FyZCIsICAgICAgICAg
ICAgICAgIkRlbGV0ZUZvcndhcmQiICAgICAgICAgICAgICAgICAgICAgICAgfSwgLy8gQ2hhcmFj
dGVycworICAgIHsgIkRlbGV0ZVdvcmRCYWNrd2FyZCIsICAgICAgICAgICAiRGVsZXRlV29yZEZv
cndhcmQiICAgICAgICAgICAgICAgICAgICB9LCAvLyBXb3JkIGVuZHMKKyAgICB7ICJEZWxldGVX
b3JkQmFja3dhcmQiLCAgICAgICAgICAgIkRlbGV0ZVdvcmRGb3J3YXJkIiAgICAgICAgICAgICAg
ICAgICAgfSwgLy8gV29yZHMKKyAgICB7ICJEZWxldGVUb0JlZ2lubmluZ09mTGluZSIsICAgICAg
IkRlbGV0ZVRvRW5kT2ZMaW5lIiAgICAgICAgICAgICAgICAgICAgfSwgLy8gTGluZXMKKyAgICB7
ICJEZWxldGVUb0JlZ2lubmluZ09mTGluZSIsICAgICAgIkRlbGV0ZVRvRW5kT2ZMaW5lIiAgICAg
ICAgICAgICAgICAgICAgfSwgLy8gTGluZSBlbmRzCisgICAgeyAiRGVsZXRlVG9CZWdpbm5pbmdP
ZlBhcmFncmFwaCIsICJEZWxldGVUb0VuZE9mUGFyYWdyYXBoIiAgICAgICAgICAgICAgIH0sIC8v
IFBhcmFncmFwaCBlbmRzCisgICAgeyAiRGVsZXRlVG9CZWdpbm5pbmdPZlBhcmFncmFwaCIsICJE
ZWxldGVUb0VuZE9mUGFyYWdyYXBoIiAgICAgICAgICAgICAgIH0sIC8vIFBhcmFncmFwaHMKKyAg
ICB7IDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfSAvLyBXaGl0ZXNwYWNlIChNLVwgaW4gRW1hY3MpCit9OworCitz
dGF0aWMgdm9pZCBkZWxldGVGcm9tQ3Vyc29yQ2FsbGJhY2soR3RrV2lkZ2V0KiB3aWRnZXQsIEd0
a0RlbGV0ZVR5cGUgZGVsZXRlVHlwZSwgZ2ludCBjb3VudCwgUGFnZUNsaWVudEltcGwqIGNsaWVu
dCkKK3sKKyAgICBnX3NpZ25hbF9zdG9wX2VtaXNzaW9uX2J5X25hbWUod2lkZ2V0LCAiZGVsZXRl
LWZyb20tY3Vyc29yIik7CisgICAgaW50IGRpcmVjdGlvbiA9IGNvdW50ID4gMCA/IDEgOiAwOwor
CisgICAgLy8gRW5zdXJpbmcgdGhhdCBkZWxldGVUeXBlIDw9IEdfTl9FTEVNRU5UUyBoZXJlIHJl
c3VsdHMgaW4gYSBjb21waWxlciB3YXJuaW5nCisgICAgLy8gdGhhdCB0aGUgY29uZGl0aW9uIGlz
IGFsd2F5cyB0cnVlLgorCisgICAgaWYgKGRlbGV0ZVR5cGUgPT0gR1RLX0RFTEVURV9XT1JEUykg
eworICAgICAgICBpZiAoIWRpcmVjdGlvbikgeworICAgICAgICAgICAgY2xpZW50LT5hZGRQZW5k
aW5nRWRpdG9yQ29tbWFuZCgiTW92ZVdvcmRGb3J3YXJkIik7CisgICAgICAgICAgICBjbGllbnQt
PmFkZFBlbmRpbmdFZGl0b3JDb21tYW5kKCJNb3ZlV29yZEJhY2t3YXJkIik7CisgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICBjbGllbnQtPmFkZFBlbmRpbmdFZGl0b3JDb21tYW5kKCJNb3Zl
V29yZEJhY2t3YXJkIik7CisgICAgICAgICAgICBjbGllbnQtPmFkZFBlbmRpbmdFZGl0b3JDb21t
YW5kKCJNb3ZlV29yZEZvcndhcmQiKTsKKyAgICAgICAgfQorICAgIH0gZWxzZSBpZiAoZGVsZXRl
VHlwZSA9PSBHVEtfREVMRVRFX0RJU1BMQVlfTElORVMpIHsKKyAgICAgICAgaWYgKCFkaXJlY3Rp
b24pCisgICAgICAgICAgICBjbGllbnQtPmFkZFBlbmRpbmdFZGl0b3JDb21tYW5kKCJNb3ZlVG9C
ZWdpbm5pbmdPZkxpbmUiKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgY2xpZW50LT5hZGRQ
ZW5kaW5nRWRpdG9yQ29tbWFuZCgiTW92ZVRvRW5kT2ZMaW5lIik7CisgICAgfSBlbHNlIGlmIChk
ZWxldGVUeXBlID09IEdUS19ERUxFVEVfUEFSQUdSQVBIUykgeworICAgICAgICBpZiAoIWRpcmVj
dGlvbikKKyAgICAgICAgICAgIGNsaWVudC0+YWRkUGVuZGluZ0VkaXRvckNvbW1hbmQoIk1vdmVU
b0JlZ2lubmluZ09mUGFyYWdyYXBoIik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGNsaWVu
dC0+YWRkUGVuZGluZ0VkaXRvckNvbW1hbmQoIk1vdmVUb0VuZE9mUGFyYWdyYXBoIik7CisgICAg
fQorCisgICAgY29uc3QgY2hhciogcmF3Q29tbWFuZCA9IGd0a0RlbGV0ZUNvbW1hbmRzW2RlbGV0
ZVR5cGVdW2RpcmVjdGlvbl07CisgICAgaWYgKCFyYXdDb21tYW5kKQorICAgICAgcmV0dXJuOwor
CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBhYnMoY291bnQpOyBpKyspCisgICAgICAgIGNsaWVu
dC0+YWRkUGVuZGluZ0VkaXRvckNvbW1hbmQocmF3Q29tbWFuZCk7Cit9CisKK3N0YXRpYyBjb25z
dCBjaGFyKiBjb25zdCBndGtNb3ZlQ29tbWFuZHNbXVs0XSA9IHsKKyAgICB7ICJNb3ZlQmFja3dh
cmQiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1vdmVGb3J3YXJkIiwKKyAg
ICAgICJNb3ZlQmFja3dhcmRBbmRNb2RpZnlTZWxlY3Rpb24iLCAgICAgICAgICAgICAgICAgIk1v
dmVGb3J3YXJkQW5kTW9kaWZ5U2VsZWN0aW9uIiAgICAgICAgICAgICB9LCAvLyBGb3J3YXJkL2Jh
Y2t3YXJkIGdyYXBoZW1lCisgICAgeyAiTW92ZUxlZnQiLCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJNb3ZlUmlnaHQiLAorICAgICAgIk1vdmVCYWNrd2FyZEFuZE1vZGlm
eVNlbGVjdGlvbiIsICAgICAgICAgICAgICAgICAiTW92ZUZvcndhcmRBbmRNb2RpZnlTZWxlY3Rp
b24iICAgICAgICAgICAgIH0sIC8vIExlZnQvcmlnaHQgZ3JhcGhlbWUKKyAgICB7ICJNb3ZlV29y
ZEJhY2t3YXJkIiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1vdmVXb3JkRm9yd2Fy
ZCIsCisgICAgICAiTW92ZVdvcmRCYWNrd2FyZEFuZE1vZGlmeVNlbGVjdGlvbiIsICAgICAgICAg
ICAgICJNb3ZlV29yZEZvcndhcmRBbmRNb2RpZnlTZWxlY3Rpb24iICAgICAgICAgfSwgLy8gRm9y
d2FyZC9iYWNrd2FyZCB3b3JkCisgICAgeyAiTW92ZVVwIiwgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJNb3ZlRG93biIsCisgICAgICAiTW92ZVVwQW5kTW9kaWZ5U2Vs
ZWN0aW9uIiwgICAgICAgICAgICAgICAgICAgICAgICJNb3ZlRG93bkFuZE1vZGlmeVNlbGVjdGlv
biIgICAgICAgICAgICAgICAgfSwgLy8gVXAvZG93biBsaW5lCisgICAgeyAiTW92ZVRvQmVnaW5u
aW5nT2ZMaW5lIiwgICAgICAgICAgICAgICAgICAgICAgICAgICJNb3ZlVG9FbmRPZkxpbmUiLAor
ICAgICAgIk1vdmVUb0JlZ2lubmluZ09mTGluZUFuZE1vZGlmeVNlbGVjdGlvbiIsICAgICAgICAi
TW92ZVRvRW5kT2ZMaW5lQW5kTW9kaWZ5U2VsZWN0aW9uIiAgICAgICAgIH0sIC8vIFVwL2Rvd24g
bGluZSBlbmRzCisgICAgeyAiTW92ZVBhcmFncmFwaEZvcndhcmQiLCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJNb3ZlUGFyYWdyYXBoQmFja3dhcmQiLAorICAgICAgIk1vdmVQYXJhZ3JhcGhG
b3J3YXJkQW5kTW9kaWZ5U2VsZWN0aW9uIiwgICAgICAgICAiTW92ZVBhcmFncmFwaEJhY2t3YXJk
QW5kTW9kaWZ5U2VsZWN0aW9uIiAgIH0sIC8vIFVwL2Rvd24gcGFyYWdyYXBocworICAgIHsgIk1v
dmVUb0JlZ2lubmluZ09mUGFyYWdyYXBoIiwgICAgICAgICAgICAgICAgICAgICAiTW92ZVRvRW5k
T2ZQYXJhZ3JhcGgiLAorICAgICAgIk1vdmVUb0JlZ2lubmluZ09mUGFyYWdyYXBoQW5kTW9kaWZ5
U2VsZWN0aW9uIiwgICAiTW92ZVRvRW5kT2ZQYXJhZ3JhcGhBbmRNb2RpZnlTZWxlY3Rpb24iICAg
IH0sIC8vIFVwL2Rvd24gcGFyYWdyYXBoIGVuZHMuCisgICAgeyAiTW92ZVBhZ2VVcCIsICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNb3ZlUGFnZURvd24iLAorICAgICAgIk1v
dmVQYWdlVXBBbmRNb2RpZnlTZWxlY3Rpb24iLCAgICAgICAgICAgICAgICAgICAiTW92ZVBhZ2VE
b3duQW5kTW9kaWZ5U2VsZWN0aW9uIiAgICAgICAgICAgIH0sIC8vIFVwL2Rvd24gcGFnZQorICAg
IHsgIk1vdmVUb0JlZ2lubmluZ09mRG9jdW1lbnQiLCAgICAgICAgICAgICAgICAgICAgICAiTW92
ZVRvRW5kT2ZEb2N1bWVudCIsCisgICAgICAiTW92ZVRvQmVnaW5uaW5nT2ZEb2N1bWVudEFuZE1v
ZGlmeVNlbGVjdGlvbiIsICAgICJNb3ZlVG9FbmRPZkRvY3VtZW50QW5kTW9kaWZ5U2VsZWN0aW9u
IiAgICAgfSwgLy8gQmVnaW4vZW5kIG9mIGJ1ZmZlcgorICAgIHsgMCwgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLAorICAgICAgMCwgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIH0gLy8gSG9yaXpvbnRhbCBwYWdlIG1vdmVtZW50Cit9Owor
CitzdGF0aWMgdm9pZCBtb3ZlQ3Vyc29yQ2FsbGJhY2soR3RrV2lkZ2V0KiB3aWRnZXQsIEd0a01v
dmVtZW50U3RlcCBzdGVwLCBnaW50IGNvdW50LCBnYm9vbGVhbiBleHRlbmRTZWxlY3Rpb24sIFBh
Z2VDbGllbnRJbXBsKiBjbGllbnQpCit7CisgICAgZ19zaWduYWxfc3RvcF9lbWlzc2lvbl9ieV9u
YW1lKHdpZGdldCwgIm1vdmUtY3Vyc29yIik7CisgICAgaW50IGRpcmVjdGlvbiA9IGNvdW50ID4g
MCA/IDEgOiAwOworICAgIGlmIChleHRlbmRTZWxlY3Rpb24pCisgICAgICAgIGRpcmVjdGlvbiAr
PSAyOworCisgICAgaWYgKHN0YXRpY19jYXN0PHVuc2lnbmVkPihzdGVwKSA+PSBHX05fRUxFTUVO
VFMoZ3RrTW92ZUNvbW1hbmRzKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgY29uc3QgY2hhciog
cmF3Q29tbWFuZCA9IGd0a01vdmVDb21tYW5kc1tzdGVwXVtkaXJlY3Rpb25dOworICAgIGlmICgh
cmF3Q29tbWFuZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBh
YnMoY291bnQpOyBpKyspCisgICAgICAgIGNsaWVudC0+YWRkUGVuZGluZ0VkaXRvckNvbW1hbmQo
cmF3Q29tbWFuZCk7Cit9CisKK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBDdHJsS2V5ID0gMSA8PCAw
Oworc3RhdGljIGNvbnN0IHVuc2lnbmVkIEFsdEtleSA9IDEgPDwgMTsKK3N0YXRpYyBjb25zdCB1
bnNpZ25lZCBTaGlmdEtleSA9IDEgPDwgMjsKKworc3RydWN0IEtleURvd25FbnRyeSB7CisgICAg
dW5zaWduZWQgdmlydHVhbEtleTsKKyAgICB1bnNpZ25lZCBtb2RpZmllcnM7CisgICAgY29uc3Qg
Y2hhciogbmFtZTsKK307CisKK3N0cnVjdCBLZXlQcmVzc0VudHJ5IHsKKyAgICB1bnNpZ25lZCBj
aGFyQ29kZTsKKyAgICB1bnNpZ25lZCBtb2RpZmllcnM7CisgICAgY29uc3QgY2hhciogbmFtZTsK
K307CisKK3N0YXRpYyBjb25zdCBLZXlEb3duRW50cnkga2V5RG93bkVudHJpZXNbXSA9IHsKKyAg
ICB7ICdCJywgICAgICAgQ3RybEtleSwgICAgICAgICAgICAiVG9nZ2xlQm9sZCIgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICB7ICdJJywgICAgICAgQ3RybEtleSwgICAg
ICAgICAgICAiVG9nZ2xlSXRhbGljIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwK
KyAgICB7IFZLX0VTQ0FQRSwgMCwgICAgICAgICAgICAgICAgICAiQ2FuY2VsIiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICB7IFZLX09FTV9QRVJJT0QsIEN0cmxL
ZXksICAgICAgICAiQ2FuY2VsIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fSwKKyAgICB7IFZLX1RBQiwgICAgMCwgICAgICAgICAgICAgICAgICAiSW5zZXJ0VGFiIiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICB7IFZLX1RBQiwgICAgU2hpZnRL
ZXksICAgICAgICAgICAiSW5zZXJ0QmFja3RhYiIgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfSwKKyAgICB7IFZLX1JFVFVSTiwgMCwgICAgICAgICAgICAgICAgICAiSW5zZXJ0TmV3bGlu
ZSIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICB7IFZLX1JFVFVSTiwgQ3Ry
bEtleSwgICAgICAgICAgICAiSW5zZXJ0TmV3bGluZSIgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfSwKKyAgICB7IFZLX1JFVFVSTiwgQWx0S2V5LCAgICAgICAgICAgICAiSW5zZXJ0TmV3
bGluZSIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICB7IFZLX1JFVFVSTiwg
QWx0S2V5IHwgU2hpZnRLZXksICAiSW5zZXJ0TmV3bGluZSIgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfSwKK307CisKK3N0YXRpYyBjb25zdCBLZXlQcmVzc0VudHJ5IGtleVByZXNzRW50
cmllc1tdID0geworICAgIHsgJ1x0JywgICAwLCAgICAgICAgICAgICAgICAgICJJbnNlcnRUYWIi
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAorICAgIHsgJ1x0JywgICBTaGlm
dEtleSwgICAgICAgICAgICJJbnNlcnRCYWNrdGFiIiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB9LAorICAgIHsgJ1xyJywgICAwLCAgICAgICAgICAgICAgICAgICJJbnNlcnROZXdsaW5l
IiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAorICAgIHsgJ1xyJywgICBDdHJsS2V5
LCAgICAgICAgICAgICJJbnNlcnROZXdsaW5lIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB9LAorICAgIHsgJ1xyJywgICBBbHRLZXksICAgICAgICAgICAgICJJbnNlcnROZXdsaW5lIiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAorICAgIHsgJ1xyJywgICBBbHRLZXkgfCBT
aGlmdEtleSwgICJJbnNlcnROZXdsaW5lIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9
LAorfTsKKworUGFnZUNsaWVudEltcGw6OlBhZ2VDbGllbnRJbXBsKEd0a1dpZGdldCogdmlld1dp
ZGdldCkKKyAgICA6IG1fdmlld1dpZGdldCh2aWV3V2lkZ2V0KQorICAgICwgbV9uYXRpdmVXaWRn
ZXQoZ3RrX3RleHRfdmlld19uZXcoKSkKK3sKKyAgICBnX3NpZ25hbF9jb25uZWN0KG1fbmF0aXZl
V2lkZ2V0LmdldCgpLCAiYmFja3NwYWNlIiwgR19DQUxMQkFDSyhiYWNrc3BhY2VDYWxsYmFjayks
IHRoaXMpOworICAgIGdfc2lnbmFsX2Nvbm5lY3QobV9uYXRpdmVXaWRnZXQuZ2V0KCksICJjdXQt
Y2xpcGJvYXJkIiwgR19DQUxMQkFDSyhjdXRDbGlwYm9hcmRDYWxsYmFjayksIHRoaXMpOworICAg
IGdfc2lnbmFsX2Nvbm5lY3QobV9uYXRpdmVXaWRnZXQuZ2V0KCksICJjb3B5LWNsaXBib2FyZCIs
IEdfQ0FMTEJBQ0soY29weUNsaXBib2FyZENhbGxiYWNrKSwgdGhpcyk7CisgICAgZ19zaWduYWxf
Y29ubmVjdChtX25hdGl2ZVdpZGdldC5nZXQoKSwgInBhc3RlLWNsaXBib2FyZCIsIEdfQ0FMTEJB
Q0socGFzdGVDbGlwYm9hcmRDYWxsYmFjayksIHRoaXMpOworICAgIGdfc2lnbmFsX2Nvbm5lY3Qo
bV9uYXRpdmVXaWRnZXQuZ2V0KCksICJzZWxlY3QtYWxsIiwgR19DQUxMQkFDSyhzZWxlY3RBbGxD
YWxsYmFjayksIHRoaXMpOworICAgIGdfc2lnbmFsX2Nvbm5lY3QobV9uYXRpdmVXaWRnZXQuZ2V0
KCksICJtb3ZlLWN1cnNvciIsIEdfQ0FMTEJBQ0sobW92ZUN1cnNvckNhbGxiYWNrKSwgdGhpcyk7
CisgICAgZ19zaWduYWxfY29ubmVjdChtX25hdGl2ZVdpZGdldC5nZXQoKSwgImRlbGV0ZS1mcm9t
LWN1cnNvciIsIEdfQ0FMTEJBQ0soZGVsZXRlRnJvbUN1cnNvckNhbGxiYWNrKSwgdGhpcyk7Cisg
ICAgZ19zaWduYWxfY29ubmVjdChtX25hdGl2ZVdpZGdldC5nZXQoKSwgInRvZ2dsZS1vdmVyd3Jp
dGUiLCBHX0NBTExCQUNLKHRvZ2dsZU92ZXJ3cml0ZUNhbGxiYWNrKSwgdGhpcyk7CisgICAgZ19z
aWduYWxfY29ubmVjdChtX25hdGl2ZVdpZGdldC5nZXQoKSwgInBvcHVwLW1lbnUiLCBHX0NBTExC
QUNLKHBvcHVwTWVudUNhbGxiYWNrKSwgdGhpcyk7CisgICAgZ19zaWduYWxfY29ubmVjdChtX25h
dGl2ZVdpZGdldC5nZXQoKSwgInNob3ctaGVscCIsIEdfQ0FMTEJBQ0soc2hvd0hlbHBDYWxsYmFj
ayksIHRoaXMpOworfQorCitQYWdlQ2xpZW50SW1wbDo6flBhZ2VDbGllbnRJbXBsKCkKK3sKK30K
Kwordm9pZCBQYWdlQ2xpZW50SW1wbDo6Z2V0RWRpdG9yQ29tbWFuZHNGb3JLZXlFdmVudChjb25z
dCBOYXRpdmVXZWJLZXlib2FyZEV2ZW50JiBldmVudCwgVmVjdG9yPFdURjo6U3RyaW5nPiYgY29t
bWFuZExpc3QpCit7CisgICAgbV9wZW5kaW5nRWRpdG9yQ29tbWFuZHMuY2xlYXIoKTsKKworI2lm
ZGVmIEdUS19BUElfVkVSU0lPTl8yCisgICAgZ3RrX2JpbmRpbmdzX2FjdGl2YXRlX2V2ZW50KEdU
S19PQkpFQ1QobV9uYXRpdmVXaWRnZXQuZ2V0KCkpLCBjb25zdF9jYXN0PEdka0V2ZW50S2V5Kj4o
JmV2ZW50Lm5hdGl2ZUV2ZW50KCktPmtleSkpOworI2Vsc2UKKyAgICBndGtfYmluZGluZ3NfYWN0
aXZhdGVfZXZlbnQoR19PQkpFQ1QobV9uYXRpdmVXaWRnZXQuZ2V0KCkpLCBjb25zdF9jYXN0PEdk
a0V2ZW50S2V5Kj4oJmV2ZW50Lm5hdGl2ZUV2ZW50KCktPmtleSkpOworI2VuZGlmCisKKyAgICBp
ZiAobV9wZW5kaW5nRWRpdG9yQ29tbWFuZHMuaXNFbXB0eSgpKSB7CisgICAgICAgIGNvbW1hbmRM
aXN0LmFwcGVuZChtX3BlbmRpbmdFZGl0b3JDb21tYW5kcyk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEludENvbnN0Q2hhckhhc2hNYXAsIGtleURv
d25Db21tYW5kc01hcCwgKCkpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoSW50Q29uc3RDaGFy
SGFzaE1hcCwga2V5UHJlc3NDb21tYW5kc01hcCwgKCkpOworCisgICAgaWYgKGtleURvd25Db21t
YW5kc01hcC5pc0VtcHR5KCkpIHsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IEdf
Tl9FTEVNRU5UUyhrZXlEb3duRW50cmllcyk7IGkrKykKKyAgICAgICAgICAgIGtleURvd25Db21t
YW5kc01hcC5zZXQoa2V5RG93bkVudHJpZXNbaV0ubW9kaWZpZXJzIDw8IDE2IHwga2V5RG93bkVu
dHJpZXNbaV0udmlydHVhbEtleSwga2V5RG93bkVudHJpZXNbaV0ubmFtZSk7CisKKyAgICAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IEdfTl9FTEVNRU5UUyhrZXlQcmVzc0VudHJpZXMpOyBp
KyspCisgICAgICAgICAgICBrZXlQcmVzc0NvbW1hbmRzTWFwLnNldChrZXlQcmVzc0VudHJpZXNb
aV0ubW9kaWZpZXJzIDw8IDE2IHwga2V5UHJlc3NFbnRyaWVzW2ldLmNoYXJDb2RlLCBrZXlQcmVz
c0VudHJpZXNbaV0ubmFtZSk7CisgICAgfQorCisgICAgdW5zaWduZWQgbW9kaWZpZXJzID0gMDsK
KyAgICBpZiAoZXZlbnQuc2hpZnRLZXkoKSkKKyAgICAgICAgbW9kaWZpZXJzIHw9IFNoaWZ0S2V5
OworICAgIGlmIChldmVudC5hbHRLZXkoKSkKKyAgICAgICAgbW9kaWZpZXJzIHw9IEFsdEtleTsK
KyAgICBpZiAoZXZlbnQuY29udHJvbEtleSgpKQorICAgICAgICBtb2RpZmllcnMgfD0gQ3RybEtl
eTsKKworICAgIC8vIEZvciBrZXlwcmVzcyBldmVudHMsIHdlIHdhbnQgY2hhckNvZGUoKSwgYnV0
IGtleUNvZGUoKSBkb2VzIHRoYXQuCisgICAgaW50IG1hcEtleSA9IG1vZGlmaWVycyA8PCAxNiB8
IGV2ZW50Lm5hdGl2ZVZpcnR1YWxLZXlDb2RlKCk7CisgICAgaWYgKG1hcEtleSkgeworICAgICAg
ICBIYXNoTWFwPGludCwgY29uc3QgY2hhcio+KiBjb21tYW5kTWFwID0gZXZlbnQudHlwZSgpID09
IFdlYkV2ZW50OjpLZXlEb3duID8KKyAgICAgICAgICAgICZrZXlEb3duQ29tbWFuZHNNYXAgOiAm
a2V5UHJlc3NDb21tYW5kc01hcDsKKyAgICAgICAgaWYgKGNvbnN0IGNoYXIqIGNvbW1hbmRTdHJp
bmcgPSBjb21tYW5kTWFwLT5nZXQobWFwS2V5KSkKKyAgICAgICAgICAgIG1fcGVuZGluZ0VkaXRv
ckNvbW1hbmRzLmFwcGVuZChjb21tYW5kU3RyaW5nKTsKKyAgICB9CisKKyAgICBjb21tYW5kTGlz
dC5hcHBlbmQobV9wZW5kaW5nRWRpdG9yQ29tbWFuZHMpOworfQorCisvLyBQYWdlQ2xpZW50J3Mg
cHVyZSB2aXJ0dWFsIGZ1bmN0aW9ucworUGFzc093blB0cjxEcmF3aW5nQXJlYVByb3h5PiBQYWdl
Q2xpZW50SW1wbDo6Y3JlYXRlRHJhd2luZ0FyZWFQcm94eSgpCit7CisgICAgV2ViS2l0V2ViVmll
d0Jhc2UqIHZpZXcgPSBXRUJLSVRfV0VCX1ZJRVdfQkFTRShtX3ZpZXdXaWRnZXQpOworICAgIHJl
dHVybiBDaHVua2VkVXBkYXRlRHJhd2luZ0FyZWFQcm94eTo6Y3JlYXRlKHZpZXcsIHdlYmtpdFdl
YlZpZXdCYXNlR2V0UGFnZSh2aWV3KSk7Cit9CisKK3ZvaWQgUGFnZUNsaWVudEltcGw6OnNldFZp
ZXdOZWVkc0Rpc3BsYXkoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpCit7CisgICAgbm90SW1wbGVt
ZW50ZWQoKTsKK30KKwordm9pZCBQYWdlQ2xpZW50SW1wbDo6ZGlzcGxheVZpZXcoKQoreworICAg
IG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUGFnZUNsaWVudEltcGw6OnNjcm9sbFZpZXco
Y29uc3QgV2ViQ29yZTo6SW50UmVjdCYgc2Nyb2xsUmVjdCwgY29uc3QgV2ViQ29yZTo6SW50U2l6
ZSYgc2Nyb2xsT2Zmc2V0KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK1dlYkNvcmU6
OkludFNpemUgUGFnZUNsaWVudEltcGw6OnZpZXdTaXplKCkKK3sKKyAgICBHdGtBbGxvY2F0aW9u
IGFsbG9jYXRpb247CisgICAgZ3RrX3dpZGdldF9nZXRfYWxsb2NhdGlvbihtX3ZpZXdXaWRnZXQs
ICZhbGxvY2F0aW9uKTsKKyAgICByZXR1cm4gSW50U2l6ZShhbGxvY2F0aW9uLndpZHRoLCBhbGxv
Y2F0aW9uLmhlaWdodCk7Cit9CisKK2Jvb2wgUGFnZUNsaWVudEltcGw6OmlzVmlld1dpbmRvd0Fj
dGl2ZSgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwor
Ym9vbCBQYWdlQ2xpZW50SW1wbDo6aXNWaWV3Rm9jdXNlZCgpCit7CisgICAgbm90SW1wbGVtZW50
ZWQoKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBQYWdlQ2xpZW50SW1wbDo6aXNWaWV3
VmlzaWJsZSgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30K
KworYm9vbCBQYWdlQ2xpZW50SW1wbDo6aXNWaWV3SW5XaW5kb3coKQoreworICAgIG5vdEltcGxl
bWVudGVkKCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgUGFnZUNsaWVudEltcGw6OlBh
Z2VDbGllbnRJbXBsOjpwcm9jZXNzRGlkQ3Jhc2goKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7
Cit9CisKK3ZvaWQgUGFnZUNsaWVudEltcGw6OmRpZFJlbGF1bmNoUHJvY2VzcygpCit7CisgICAg
bm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBQYWdlQ2xpZW50SW1wbDo6dGFrZUZvY3VzKGJv
b2wpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBQYWdlQ2xpZW50SW1wbDo6
dG9vbFRpcENoYW5nZWQoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJikKK3sKKyAgICBub3RJ
bXBsZW1lbnRlZCgpOworfQorCit2b2lkIFBhZ2VDbGllbnRJbXBsOjpzZXRDdXJzb3IoY29uc3Qg
Q3Vyc29yJiBjdXJzb3IpCit7CisgICAgLy8gW0dUS10gV2lkZ2V0OjpzZXRDdXJzb3IoKSBnZXRz
IGNhbGxlZCBmcmVxdWVudGx5CisgICAgLy8gaHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTYzODgKKyAgICAvLyBTZXR0aW5nIHRoZSBjdXJzb3IgbWF5IGJlIGFuIGV4cGVu
c2l2ZSBvcGVyYXRpb24gaW4gc29tZSBiYWNrZW5kcywKKyAgICAvLyBzbyBkb24ndCByZS1zZXQg
dGhlIGN1cnNvciBpZiBpdCdzIGFscmVhZHkgc2V0IHRvIHRoZSB0YXJnZXQgdmFsdWUuCisgICAg
R2RrV2luZG93KiB3aW5kb3cgPSBndGtfd2lkZ2V0X2dldF93aW5kb3cobV92aWV3V2lkZ2V0KTsK
KyAgICBHZGtDdXJzb3IqIGN1cnJlbnRDdXJzb3IgPSBnZGtfd2luZG93X2dldF9jdXJzb3Iod2lu
ZG93KTsKKyAgICBHZGtDdXJzb3IqIG5ld0N1cnNvciA9IGN1cnNvci5wbGF0Zm9ybUN1cnNvcigp
LmdldCgpOworICAgIGlmIChjdXJyZW50Q3Vyc29yICE9IG5ld0N1cnNvcikKKyAgICAgICAgZ2Rr
X3dpbmRvd19zZXRfY3Vyc29yKHdpbmRvdywgbmV3Q3Vyc29yKTsKK30KKwordm9pZCBQYWdlQ2xp
ZW50SW1wbDo6c2V0Vmlld3BvcnRBcmd1bWVudHMoY29uc3QgV2ViQ29yZTo6Vmlld3BvcnRBcmd1
bWVudHMmKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUGFnZUNsaWVudElt
cGw6OnJlZ2lzdGVyRWRpdENvbW1hbmQoUGFzc1JlZlB0cjxXZWJFZGl0Q29tbWFuZFByb3h5Piwg
V2ViUGFnZVByb3h5OjpVbmRvT3JSZWRvKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisK
K3ZvaWQgUGFnZUNsaWVudEltcGw6OmNsZWFyQWxsRWRpdENvbW1hbmRzKCkKK3sKKyAgICBub3RJ
bXBsZW1lbnRlZCgpOworfQorCitib29sIFBhZ2VDbGllbnRJbXBsOjpjYW5VbmRvUmVkbyhXZWJQ
YWdlUHJveHk6OlVuZG9PclJlZG8pCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1
cm4gZmFsc2U7Cit9CisKK3ZvaWQgUGFnZUNsaWVudEltcGw6OmV4ZWN1dGVVbmRvUmVkbyhXZWJQ
YWdlUHJveHk6OlVuZG9PclJlZG8pCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworRmxv
YXRSZWN0IFBhZ2VDbGllbnRJbXBsOjpjb252ZXJ0VG9EZXZpY2VTcGFjZShjb25zdCBGbG9hdFJl
Y3QmIHZpZXdSZWN0KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIHZpZXdS
ZWN0OworfQorCitGbG9hdFJlY3QgUGFnZUNsaWVudEltcGw6OmNvbnZlcnRUb1VzZXJTcGFjZShj
b25zdCBGbG9hdFJlY3QmIHZpZXdSZWN0KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAg
cmV0dXJuIHZpZXdSZWN0OworfQorCitJbnRSZWN0IFBhZ2VDbGllbnRJbXBsOjp3aW5kb3dUb1Nj
cmVlbihjb25zdCBJbnRSZWN0JiByZWN0KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAg
cmV0dXJuIEludFJlY3QoKTsKK30KKwordm9pZCBQYWdlQ2xpZW50SW1wbDo6ZG9uZVdpdGhLZXlF
dmVudChjb25zdCBOYXRpdmVXZWJLZXlib2FyZEV2ZW50JiwgYm9vbCB3YXNFdmVudEhhbmRsZWQp
Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBQYWdlQ2xpZW50SW1wbDo6ZGlk
Tm90SGFuZGxlS2V5RXZlbnQoY29uc3QgTmF0aXZlV2ViS2V5Ym9hcmRFdmVudCYgZXZlbnQpCit7
CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworUGFzc1JlZlB0cjxXZWJQb3B1cE1lbnVQcm94
eT4gUGFnZUNsaWVudEltcGw6OmNyZWF0ZVBvcHVwTWVudVByb3h5KFdlYlBhZ2VQcm94eSopCit7
CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gMDsKK30KKworUGFzc1JlZlB0cjxX
ZWJDb250ZXh0TWVudVByb3h5PiBQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlQ29udGV4dE1lbnVQcm94
eShXZWJQYWdlUHJveHkqKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIDA7
Cit9CisKK3ZvaWQgUGFnZUNsaWVudEltcGw6OnNldEZpbmRJbmRpY2F0b3IoUGFzc1JlZlB0cjxG
aW5kSW5kaWNhdG9yPiwgYm9vbCBmYWRlT3V0KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9
CisKKyNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCit2b2lkIFBhZ2VDbGllbnRJbXBs
OjpwYWdlRGlkRW50ZXJBY2NlbGVyYXRlZENvbXBvc2l0aW5nKCkKK3sKKyAgICBub3RJbXBsZW1l
bnRlZCgpOworfQorCit2b2lkIFBhZ2VDbGllbnRJbXBsOjpwYWdlRGlkTGVhdmVBY2NlbGVyYXRl
ZENvbXBvc2l0aW5nKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorI2VuZGlmIC8vIFVT
RShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKKwordm9pZCBQYWdlQ2xpZW50SW1wbDo6ZGlkQ29t
bWl0TG9hZEZvck1haW5GcmFtZShib29sIHVzZUN1c3RvbVJlcHJlc2VudGF0aW9uKQoreworfQor
Cit2b2lkIFBhZ2VDbGllbnRJbXBsOjpkaWRGaW5pc2hMb2FkaW5nRGF0YUZvckN1c3RvbVJlcHJl
c2VudGF0aW9uKGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUsIGNvbnN0IENvcmVJUEM6
OkRhdGFSZWZlcmVuY2UmKQoreworfQorCitkb3VibGUgUGFnZUNsaWVudEltcGw6OmN1c3RvbVJl
cHJlc2VudGF0aW9uWm9vbUZhY3RvcigpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBy
ZXR1cm4gMDsKK30KKwordm9pZCBQYWdlQ2xpZW50SW1wbDo6c2V0Q3VzdG9tUmVwcmVzZW50YXRp
b25ab29tRmFjdG9yKGRvdWJsZSkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lk
IFBhZ2VDbGllbnRJbXBsOjpwYWdlQ2xvc2VkKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOwor
fQorCit2b2lkIFBhZ2VDbGllbnRJbXBsOjpkaWRDaGFuZ2VTY3JvbGxiYXJzRm9yTWFpbkZyYW1l
KCkgY29uc3QKK3sKK30KKwordm9pZCBQYWdlQ2xpZW50SW1wbDo6Zmxhc2hCYWNraW5nU3RvcmVV
cGRhdGVzKGNvbnN0IFZlY3RvcjxJbnRSZWN0PiYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsK
K30KKwordm9pZCBQYWdlQ2xpZW50SW1wbDo6ZmluZFN0cmluZ0luQ3VzdG9tUmVwcmVzZW50YXRp
b24oY29uc3QgU3RyaW5nJiwgRmluZE9wdGlvbnMsIHVuc2lnbmVkKQoreworICAgIG5vdEltcGxl
bWVudGVkKCk7Cit9CisKK3ZvaWQgUGFnZUNsaWVudEltcGw6OmNvdW50U3RyaW5nTWF0Y2hlc0lu
Q3VzdG9tUmVwcmVzZW50YXRpb24oY29uc3QgU3RyaW5nJiwgRmluZE9wdGlvbnMsIHVuc2lnbmVk
KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudElt
cGwuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODljMmVlOAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmgK
QEAgLTAsMCArMSwxMDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAyMDEwIE1vdG9y
b2xhIE1vYmlsaXR5LCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDExIElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgUGFnZUNsaWVudEltcGxfaAor
I2RlZmluZSBQYWdlQ2xpZW50SW1wbF9oCisKKyNpbmNsdWRlICJQYWdlQ2xpZW50LmgiCisjaW5j
bHVkZSAiV2ViUGFnZVByb3h5LmgiCisjaW5jbHVkZSAiV2luZG93c0tleWJvYXJkQ29kZXMuaCIK
KyNpbmNsdWRlIDxXZWJDb3JlL0ludFNpemUuaD4KKyNpbmNsdWRlIDxndGsvZ3RrLmg+CisKK25h
bWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBEcmF3aW5nQXJlYVByb3h5OworY2xhc3MgV2ViUGFn
ZU5hbWVzcGFjZTsKKworY2xhc3MgUGFnZUNsaWVudEltcGwgOiBwdWJsaWMgUGFnZUNsaWVudCB7
CitwdWJsaWM6CisgICAgflBhZ2VDbGllbnRJbXBsKCk7CisgICAgc3RhdGljIFBhc3NPd25QdHI8
UGFnZUNsaWVudEltcGw+IGNyZWF0ZShHdGtXaWRnZXQqIHZpZXdXaWRnZXQpCisgICAgeworICAg
ICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFBhZ2VDbGllbnRJbXBsKHZpZXdXaWRnZXQpKTsKKyAg
ICB9CisKKyAgICB2b2lkIGFkZFBlbmRpbmdFZGl0b3JDb21tYW5kKGNvbnN0IGNoYXIqIGNvbW1h
bmQpIHsgbV9wZW5kaW5nRWRpdG9yQ29tbWFuZHMuYXBwZW5kKFdURjo6U3RyaW5nKGNvbW1hbmQp
KTsgfQorCitwcml2YXRlOgorICAgIFBhZ2VDbGllbnRJbXBsKEd0a1dpZGdldCopOworCisgICAg
dmlydHVhbCBQYXNzT3duUHRyPERyYXdpbmdBcmVhUHJveHk+IGNyZWF0ZURyYXdpbmdBcmVhUHJv
eHkoKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Vmlld05lZWRzRGlzcGxheShjb25zdCBXZWJDb3Jl
OjpJbnRSZWN0Jik7CisgICAgdmlydHVhbCB2b2lkIGRpc3BsYXlWaWV3KCk7CisgICAgdmlydHVh
bCB2b2lkIHNjcm9sbFZpZXcoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgc2Nyb2xsUmVjdCwgY29u
c3QgV2ViQ29yZTo6SW50U2l6ZSYgc2Nyb2xsT2Zmc2V0KTsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6
OkludFNpemUgdmlld1NpemUoKTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNWaWV3V2luZG93QWN0aXZl
KCk7CisgICAgdmlydHVhbCBib29sIGlzVmlld0ZvY3VzZWQoKTsKKyAgICB2aXJ0dWFsIGJvb2wg
aXNWaWV3VmlzaWJsZSgpOworICAgIHZpcnR1YWwgYm9vbCBpc1ZpZXdJbldpbmRvdygpOworICAg
IHZpcnR1YWwgdm9pZCBwcm9jZXNzRGlkQ3Jhc2goKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVs
YXVuY2hQcm9jZXNzKCk7CisgICAgdmlydHVhbCB2b2lkIHBhZ2VDbG9zZWQoKTsKKyAgICB2aXJ0
dWFsIHZvaWQgdGFrZUZvY3VzKGJvb2wgZGlyZWN0aW9uKTsKKyAgICB2aXJ0dWFsIHZvaWQgdG9v
bFRpcENoYW5nZWQoY29uc3QgV1RGOjpTdHJpbmcmLCBjb25zdCBXVEY6OlN0cmluZyYpOworICAg
IHZpcnR1YWwgdm9pZCBzZXRDdXJzb3IoY29uc3QgV2ViQ29yZTo6Q3Vyc29yJik7CisgICAgdmly
dHVhbCB2b2lkIHNldFZpZXdwb3J0QXJndW1lbnRzKGNvbnN0IFdlYkNvcmU6OlZpZXdwb3J0QXJn
dW1lbnRzJik7CisgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyRWRpdENvbW1hbmQoUGFzc1JlZlB0
cjxXZWJFZGl0Q29tbWFuZFByb3h5PiwgV2ViUGFnZVByb3h5OjpVbmRvT3JSZWRvKTsKKyAgICB2
aXJ0dWFsIHZvaWQgY2xlYXJBbGxFZGl0Q29tbWFuZHMoKTsKKyAgICB2aXJ0dWFsIGJvb2wgY2Fu
VW5kb1JlZG8oV2ViUGFnZVByb3h5OjpVbmRvT3JSZWRvKTsKKyAgICB2aXJ0dWFsIHZvaWQgZXhl
Y3V0ZVVuZG9SZWRvKFdlYlBhZ2VQcm94eTo6VW5kb09yUmVkbyk7CisgICAgdmlydHVhbCBXZWJD
b3JlOjpGbG9hdFJlY3QgY29udmVydFRvRGV2aWNlU3BhY2UoY29uc3QgV2ViQ29yZTo6RmxvYXRS
ZWN0Jik7CisgICAgdmlydHVhbCBXZWJDb3JlOjpGbG9hdFJlY3QgY29udmVydFRvVXNlclNwYWNl
KGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYpOworICAgIHZpcnR1YWwgV2ViQ29yZTo6SW50UmVj
dCB3aW5kb3dUb1NjcmVlbihjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jik7CisgICAgdmlydHVhbCB2
b2lkIGRvbmVXaXRoS2V5RXZlbnQoY29uc3QgTmF0aXZlV2ViS2V5Ym9hcmRFdmVudCYsIGJvb2wg
d2FzRXZlbnRIYW5kbGVkKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkTm90SGFuZGxlS2V5RXZlbnQo
Y29uc3QgTmF0aXZlV2ViS2V5Ym9hcmRFdmVudCYpOworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxX
ZWJQb3B1cE1lbnVQcm94eT4gY3JlYXRlUG9wdXBNZW51UHJveHkoV2ViUGFnZVByb3h5Kik7Cisg
ICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvbnRleHRNZW51UHJveHk+IGNyZWF0ZUNvbnRleHRN
ZW51UHJveHkoV2ViUGFnZVByb3h5Kik7CisgICAgdmlydHVhbCB2b2lkIHNldEZpbmRJbmRpY2F0
b3IoUGFzc1JlZlB0cjxGaW5kSW5kaWNhdG9yPiwgYm9vbCBmYWRlT3V0KTsKKyAgICB2aXJ0dWFs
IHZvaWQgZGlkQ2hhbmdlU2Nyb2xsYmFyc0Zvck1haW5GcmFtZSgpIGNvbnN0OworICAgIHZpcnR1
YWwgdm9pZCBmbGFzaEJhY2tpbmdTdG9yZVVwZGF0ZXMoY29uc3QgVmVjdG9yPFdlYkNvcmU6Oklu
dFJlY3Q+JiB1cGRhdGVSZWN0cyk7CisgICAgdmlydHVhbCBmbG9hdCB1c2VyU3BhY2VTY2FsZUZh
Y3RvcigpIGNvbnN0IHsgcmV0dXJuIDE7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZ2V0RWRpdG9yQ29t
bWFuZHNGb3JLZXlFdmVudChjb25zdCBOYXRpdmVXZWJLZXlib2FyZEV2ZW50JiwgVmVjdG9yPFdU
Rjo6U3RyaW5nPiYpOworICAgIHZpcnR1YWwgdm9pZCBmaW5kU3RyaW5nSW5DdXN0b21SZXByZXNl
bnRhdGlvbihjb25zdCBTdHJpbmcmLCBGaW5kT3B0aW9ucywgdW5zaWduZWQpOworICAgIHZpcnR1
YWwgdm9pZCBjb3VudFN0cmluZ01hdGNoZXNJbkN1c3RvbVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0
cmluZyYsIEZpbmRPcHRpb25zLCB1bnNpZ25lZCk7CisKKyNpZiBVU0UoQUNDRUxFUkFURURfQ09N
UE9TSVRJTkcpCisgICAgdmlydHVhbCB2b2lkIHBhZ2VEaWRFbnRlckFjY2VsZXJhdGVkQ29tcG9z
aXRpbmcoKTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFnZURpZExlYXZlQWNjZWxlcmF0ZWRDb21wb3Np
dGluZygpOworI2VuZGlmCisKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tbWl0TG9hZEZvck1haW5G
cmFtZShib29sIHVzZUN1c3RvbVJlcHJlc2VudGF0aW9uKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlk
RmluaXNoTG9hZGluZ0RhdGFGb3JDdXN0b21SZXByZXNlbnRhdGlvbihjb25zdCBTdHJpbmcmIHN1
Z2dlc3RlZEZpbGVuYW1lLCBjb25zdCBDb3JlSVBDOjpEYXRhUmVmZXJlbmNlJik7CisgICAgdmly
dHVhbCBkb3VibGUgY3VzdG9tUmVwcmVzZW50YXRpb25ab29tRmFjdG9yKCk7CisgICAgdmlydHVh
bCB2b2lkIHNldEN1c3RvbVJlcHJlc2VudGF0aW9uWm9vbUZhY3Rvcihkb3VibGUpOworCisgICAg
Ly8gTWVtYmVycyBvZiBQYWdlQ2xpZW50SW1wbCBjbGFzcworICAgIEd0a1dpZGdldCogbV92aWV3
V2lkZ2V0OworICAgIFZlY3RvcjxXVEY6OlN0cmluZz4gbV9wZW5kaW5nRWRpdG9yQ29tbWFuZHM7
CisgICAgR1JlZlB0cjxHdGtXaWRnZXQ+IG1fbmF0aXZlV2lkZ2V0OworfTsKKworfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBQYWdlQ2xpZW50SW1wbF9oCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAKaW5k
ZXggMTg5N2MyZi4uNjk2MjA1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcApAQCAtMzMsNiArMzMsNyBAQAogI2lu
Y2x1ZGUgIk5hdGl2ZVdlYktleWJvYXJkRXZlbnQuaCIKICNpbmNsdWRlICJOYXRpdmVXZWJNb3Vz
ZUV2ZW50LmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKyNpbmNsdWRlICJQYWdlQ2xp
ZW50SW1wbC5oIgogI2luY2x1ZGUgIlJlZlB0ckNhaXJvLmgiCiAjaW5jbHVkZSAiV2ViQ29udGV4
dC5oIgogI2luY2x1ZGUgIldlYkV2ZW50RmFjdG9yeS5oIgpAQCAtNDUsNyArNDYsNyBAQCB1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKIHN0YXRpYyBncG9pbnRlciB3ZWJraXRXZWJWaWV3QmFzZVBh
cmVudENsYXNzID0gMDsKIAogc3RydWN0IF9XZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUgewotICAg
IE93blB0cjxXZWJWaWV3PiB3ZWJWaWV3SW5zdGFuY2U7CisgICAgT3duUHRyPFBhZ2VDbGllbnRJ
bXBsPiBwYWdlQ2xpZW50OwogICAgIFJlZlB0cjxXZWJQYWdlUHJveHk+IHBhZ2U7CiAgICAgZ2Jv
b2xlYW4gaXNQYWdlQWN0aXZlOwogICAgIEd0a0lNQ29udGV4dCogaW1Db250ZXh0OwpAQCAtMTQ2
LDcgKzE0Nyw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlSW5pdChXZWJLaXRXZWJW
aWV3QmFzZSogd2Via2l0V2ViVmlld0Jhc2UpCiAgICAgcHJpdi0+cHJldmlvdXNDbGlja0J1dHRv
biA9IDA7CiAgICAgcHJpdi0+cHJldmlvdXNDbGlja1RpbWUgPSAwOwogCi0gICAgcHJpdi0+d2Vi
Vmlld0luc3RhbmNlID0gV2ViVmlldzo6Y3JlYXRlKEdUS19XSURHRVQod2Via2l0V2ViVmlld0Jh
c2UpKTsKKyAgICBwcml2LT5wYWdlQ2xpZW50ID0gUGFnZUNsaWVudEltcGw6OmNyZWF0ZShHVEtf
V0lER0VUKHdlYmtpdFdlYlZpZXdCYXNlKSk7CiB9CiAKICNpZmRlZiBHVEtfQVBJX1ZFUlNJT05f
MgpAQCAtMzk1LDcgKzM5Niw3IEBAIFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJraXRXZWJWaWV3QmFz
ZUNyZWF0ZShXZWJDb250ZXh0KiBjb250ZXh0LCBXZWJQYWdlR3JvdXAqIHBhCiAgICAgV2ViS2l0
V2ViVmlld0Jhc2UqIHdlYmtpdFdlYlZpZXdCYXNlID0gV0VCS0lUX1dFQl9WSUVXX0JBU0UoZ19v
YmplY3RfbmV3KFdFQktJVF9UWVBFX1dFQl9WSUVXX0JBU0UsIE5VTEwpKTsKICAgICBXZWJLaXRX
ZWJWaWV3QmFzZVByaXZhdGUqIHByaXYgPSB3ZWJraXRXZWJWaWV3QmFzZS0+cHJpdjsKIAotICAg
IHByaXYtPnBhZ2UgPSBjb250ZXh0LT5jcmVhdGVXZWJQYWdlKHByaXYtPndlYlZpZXdJbnN0YW5j
ZS5nZXQoKSwgcGFnZUdyb3VwKTsKKyAgICBwcml2LT5wYWdlID0gY29udGV4dC0+Y3JlYXRlV2Vi
UGFnZShwcml2LT5wYWdlQ2xpZW50LmdldCgpLCBwYWdlR3JvdXApOwogICAgIHByaXYtPnBhZ2Ut
PmluaXRpYWxpemVXZWJQYWdlKCk7CiAKICAgICByZXR1cm4gd2Via2l0V2ViVmlld0Jhc2U7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3
QmFzZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jh
c2UuaAppbmRleCAxYTIxZTZmLi4yZTFmMmY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmgKQEAgLTI4LDggKzI4LDcgQEAK
ICNpZm5kZWYgV2ViS2l0V2ViVmlld0Jhc2VfaAogI2RlZmluZSBXZWJLaXRXZWJWaWV3QmFzZV9o
CiAKLSNpbmNsdWRlICJXZWJWaWV3LmgiCi0KKyNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKICNp
bmNsdWRlIDxndGsvZ3RrLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL0NodW5rZWRVcGRhdGVEcmF3aW5nQXJlYVBy
b3h5R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvQ2h1bmtlZFVwZGF0ZURy
YXdpbmdBcmVhUHJveHlHdGsuY3BwCmluZGV4IDE0YWM5MTMuLjk5YTk0MzYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvQ2h1bmtlZFVwZGF0ZURyYXdpbmdBcmVhUHJv
eHlHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvQ2h1bmtlZFVwZGF0
ZURyYXdpbmdBcmVhUHJveHlHdGsuY3BwCkBAIC0zMiw3ICszMiw2IEBACiAjaW5jbHVkZSAiVXBk
YXRlQ2h1bmsuaCIKICNpbmNsdWRlICJXZWJLaXRXZWJWaWV3QmFzZS5oIgogI2luY2x1ZGUgIldl
YlByb2Nlc3NQcm94eS5oIgotI2luY2x1ZGUgIldlYlZpZXcuaCIKICNpbmNsdWRlIDxXZWJDb3Jl
L0d0a1ZlcnNpb25pbmcuaD4KICNpbmNsdWRlIDxnZGsvZ2RrLmg+CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvZ3RrL1dlYlZpZXcuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBh
ZWU3NjA4Li4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViVmll
dy5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw1MDEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBQb3J0aW9ucyBDb3B5
cmlnaHQgKGMpIDIwMTAgTW90b3JvbGEgTW9iaWxpdHksIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgSWdhbGlhIFMuTC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1
ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldlYlZpZXcuaCIKLQotI2luY2x1ZGUgIkNodW5rZWRV
cGRhdGVEcmF3aW5nQXJlYVByb3h5LmgiCi0jaW5jbHVkZSAiTmF0aXZlV2ViS2V5Ym9hcmRFdmVu
dC5oIgotI2luY2x1ZGUgIk5hdGl2ZVdlYk1vdXNlRXZlbnQuaCIKLSNpbmNsdWRlICJOb3RJbXBs
ZW1lbnRlZC5oIgotI2luY2x1ZGUgIldlYkNvbnRleHQuaCIKLSNpbmNsdWRlICJXZWJDb250ZXh0
TWVudVByb3h5LmgiCi0jaW5jbHVkZSAiV2ViRXZlbnRGYWN0b3J5LmgiCi0jaW5jbHVkZSAiV2Vi
S2l0V2ViVmlld0Jhc2UuaCIKLSNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKLSNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotdHlwZWRlZiBIYXNoTWFwPGludCwgY29uc3QgY2hhcio+
IEludENvbnN0Q2hhckhhc2hNYXA7Ci0KLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotCi1uYW1l
c3BhY2UgV2ViS2l0IHsKLQotc3RhdGljIHZvaWQgYmFja3NwYWNlQ2FsbGJhY2soR3RrV2lkZ2V0
KiB3aWRnZXQsIFdlYlZpZXcqIGNsaWVudCkKLXsKLSAgICBnX3NpZ25hbF9zdG9wX2VtaXNzaW9u
X2J5X25hbWUod2lkZ2V0LCAiYmFja3NwYWNlIik7Ci0gICAgY2xpZW50LT5hZGRQZW5kaW5nRWRp
dG9yQ29tbWFuZCgiRGVsZXRlQmFja3dhcmQiKTsKLX0KLQotc3RhdGljIHZvaWQgc2VsZWN0QWxs
Q2FsbGJhY2soR3RrV2lkZ2V0KiB3aWRnZXQsIGdib29sZWFuIHNlbGVjdCwgV2ViVmlldyogY2xp
ZW50KQotewotICAgIGdfc2lnbmFsX3N0b3BfZW1pc3Npb25fYnlfbmFtZSh3aWRnZXQsICJzZWxl
Y3QtYWxsIik7Ci0gICAgY2xpZW50LT5hZGRQZW5kaW5nRWRpdG9yQ29tbWFuZChzZWxlY3QgPyAi
U2VsZWN0QWxsIiA6ICJVbnNlbGVjdCIpOwotfQotCi1zdGF0aWMgdm9pZCBjdXRDbGlwYm9hcmRD
YWxsYmFjayhHdGtXaWRnZXQqIHdpZGdldCwgV2ViVmlldyogY2xpZW50KQotewotICAgIGdfc2ln
bmFsX3N0b3BfZW1pc3Npb25fYnlfbmFtZSh3aWRnZXQsICJjdXQtY2xpcGJvYXJkIik7Ci0gICAg
Y2xpZW50LT5hZGRQZW5kaW5nRWRpdG9yQ29tbWFuZCgiQ3V0Iik7Ci19Ci0KLXN0YXRpYyB2b2lk
IGNvcHlDbGlwYm9hcmRDYWxsYmFjayhHdGtXaWRnZXQqIHdpZGdldCwgV2ViVmlldyogY2xpZW50
KQotewotICAgIGdfc2lnbmFsX3N0b3BfZW1pc3Npb25fYnlfbmFtZSh3aWRnZXQsICJjb3B5LWNs
aXBib2FyZCIpOwotICAgIGNsaWVudC0+YWRkUGVuZGluZ0VkaXRvckNvbW1hbmQoIkNvcHkiKTsK
LX0KLQotc3RhdGljIHZvaWQgcGFzdGVDbGlwYm9hcmRDYWxsYmFjayhHdGtXaWRnZXQqIHdpZGdl
dCwgV2ViVmlldyogY2xpZW50KQotewotICAgIGdfc2lnbmFsX3N0b3BfZW1pc3Npb25fYnlfbmFt
ZSh3aWRnZXQsICJwYXN0ZS1jbGlwYm9hcmQiKTsKLSAgICBjbGllbnQtPmFkZFBlbmRpbmdFZGl0
b3JDb21tYW5kKCJQYXN0ZSIpOwotfQotCi1zdGF0aWMgdm9pZCB0b2dnbGVPdmVyd3JpdGVDYWxs
YmFjayhHdGtXaWRnZXQqIHdpZGdldCwgRWRpdG9yQ2xpZW50KikKLXsKLSAgICAvLyBXZSBkb24n
dCBzdXBwb3J0IHRvZ2dsaW5nIHRoZSBvdmVyd3JpdGUgbW9kZSwgYnV0IHRoZSBkZWZhdWx0IGNh
bGxiYWNrIGV4cGVjdHMKLSAgICAvLyB0aGUgR3RrVGV4dFZpZXcgdG8gaGF2ZSBhIGxheW91dCwg
c28gd2UgaGFuZGxlIHRoaXMgc2lnbmFsIGp1c3QgdG8gc3RvcCBpdC4KLSAgICBnX3NpZ25hbF9z
dG9wX2VtaXNzaW9uX2J5X25hbWUod2lkZ2V0LCAidG9nZ2xlLW92ZXJ3cml0ZSIpOwotfQotCi0v
LyBHVEsrIHdpbGwgc3RpbGwgc2VuZCB0aGVzZSBzaWduYWxzIHRvIHRoZSB3ZWIgdmlldy4gU28g
d2UgY2FuIHNhZmVseSBzdG9wIHNpZ25hbAotLy8gZW1pc3Npb24gd2l0aG91dCBicmVha2luZyBh
Y2Nlc3NpYmlsaXR5Lgotc3RhdGljIHZvaWQgcG9wdXBNZW51Q2FsbGJhY2soR3RrV2lkZ2V0KiB3
aWRnZXQsIEVkaXRvckNsaWVudCopCi17Ci0gICAgZ19zaWduYWxfc3RvcF9lbWlzc2lvbl9ieV9u
YW1lKHdpZGdldCwgInBvcHVwLW1lbnUiKTsKLX0KLQotc3RhdGljIHZvaWQgc2hvd0hlbHBDYWxs
YmFjayhHdGtXaWRnZXQqIHdpZGdldCwgRWRpdG9yQ2xpZW50KikKLXsKLSAgICBnX3NpZ25hbF9z
dG9wX2VtaXNzaW9uX2J5X25hbWUod2lkZ2V0LCAic2hvdy1oZWxwIik7Ci19Ci0KLXN0YXRpYyBj
b25zdCBjaGFyKiBjb25zdCBndGtEZWxldGVDb21tYW5kc1tdWzJdID0gewotICAgIHsgIkRlbGV0
ZUJhY2t3YXJkIiwgICAgICAgICAgICAgICAiRGVsZXRlRm9yd2FyZCIgICAgICAgICAgICAgICAg
ICAgICAgICB9LCAvLyBDaGFyYWN0ZXJzCi0gICAgeyAiRGVsZXRlV29yZEJhY2t3YXJkIiwgICAg
ICAgICAgICJEZWxldGVXb3JkRm9yd2FyZCIgICAgICAgICAgICAgICAgICAgIH0sIC8vIFdvcmQg
ZW5kcwotICAgIHsgIkRlbGV0ZVdvcmRCYWNrd2FyZCIsICAgICAgICAgICAiRGVsZXRlV29yZEZv
cndhcmQiICAgICAgICAgICAgICAgICAgICB9LCAvLyBXb3JkcwotICAgIHsgIkRlbGV0ZVRvQmVn
aW5uaW5nT2ZMaW5lIiwgICAgICAiRGVsZXRlVG9FbmRPZkxpbmUiICAgICAgICAgICAgICAgICAg
ICB9LCAvLyBMaW5lcwotICAgIHsgIkRlbGV0ZVRvQmVnaW5uaW5nT2ZMaW5lIiwgICAgICAiRGVs
ZXRlVG9FbmRPZkxpbmUiICAgICAgICAgICAgICAgICAgICB9LCAvLyBMaW5lIGVuZHMKLSAgICB7
ICJEZWxldGVUb0JlZ2lubmluZ09mUGFyYWdyYXBoIiwgIkRlbGV0ZVRvRW5kT2ZQYXJhZ3JhcGgi
ICAgICAgICAgICAgICAgfSwgLy8gUGFyYWdyYXBoIGVuZHMKLSAgICB7ICJEZWxldGVUb0JlZ2lu
bmluZ09mUGFyYWdyYXBoIiwgIkRlbGV0ZVRvRW5kT2ZQYXJhZ3JhcGgiICAgICAgICAgICAgICAg
fSwgLy8gUGFyYWdyYXBocwotICAgIHsgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAw
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IC8vIFdoaXRlc3BhY2UgKE0t
XCBpbiBFbWFjcykKLX07Ci0KLXN0YXRpYyB2b2lkIGRlbGV0ZUZyb21DdXJzb3JDYWxsYmFjayhH
dGtXaWRnZXQqIHdpZGdldCwgR3RrRGVsZXRlVHlwZSBkZWxldGVUeXBlLCBnaW50IGNvdW50LCBX
ZWJWaWV3KiBjbGllbnQpCi17Ci0gICAgZ19zaWduYWxfc3RvcF9lbWlzc2lvbl9ieV9uYW1lKHdp
ZGdldCwgImRlbGV0ZS1mcm9tLWN1cnNvciIpOwotICAgIGludCBkaXJlY3Rpb24gPSBjb3VudCA+
IDAgPyAxIDogMDsKLQotICAgIC8vIEVuc3VyaW5nIHRoYXQgZGVsZXRlVHlwZSA8PSBHX05fRUxF
TUVOVFMgaGVyZSByZXN1bHRzIGluIGEgY29tcGlsZXIgd2FybmluZwotICAgIC8vIHRoYXQgdGhl
IGNvbmRpdGlvbiBpcyBhbHdheXMgdHJ1ZS4KLQotICAgIGlmIChkZWxldGVUeXBlID09IEdUS19E
RUxFVEVfV09SRFMpIHsKLSAgICAgICAgaWYgKCFkaXJlY3Rpb24pIHsKLSAgICAgICAgICAgIGNs
aWVudC0+YWRkUGVuZGluZ0VkaXRvckNvbW1hbmQoIk1vdmVXb3JkRm9yd2FyZCIpOwotICAgICAg
ICAgICAgY2xpZW50LT5hZGRQZW5kaW5nRWRpdG9yQ29tbWFuZCgiTW92ZVdvcmRCYWNrd2FyZCIp
OwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgY2xpZW50LT5hZGRQZW5kaW5nRWRpdG9y
Q29tbWFuZCgiTW92ZVdvcmRCYWNrd2FyZCIpOwotICAgICAgICAgICAgY2xpZW50LT5hZGRQZW5k
aW5nRWRpdG9yQ29tbWFuZCgiTW92ZVdvcmRGb3J3YXJkIik7Ci0gICAgICAgIH0KLSAgICB9IGVs
c2UgaWYgKGRlbGV0ZVR5cGUgPT0gR1RLX0RFTEVURV9ESVNQTEFZX0xJTkVTKSB7Ci0gICAgICAg
IGlmICghZGlyZWN0aW9uKQotICAgICAgICAgICAgY2xpZW50LT5hZGRQZW5kaW5nRWRpdG9yQ29t
bWFuZCgiTW92ZVRvQmVnaW5uaW5nT2ZMaW5lIik7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAg
IGNsaWVudC0+YWRkUGVuZGluZ0VkaXRvckNvbW1hbmQoIk1vdmVUb0VuZE9mTGluZSIpOwotICAg
IH0gZWxzZSBpZiAoZGVsZXRlVHlwZSA9PSBHVEtfREVMRVRFX1BBUkFHUkFQSFMpIHsKLSAgICAg
ICAgaWYgKCFkaXJlY3Rpb24pCi0gICAgICAgICAgICBjbGllbnQtPmFkZFBlbmRpbmdFZGl0b3JD
b21tYW5kKCJNb3ZlVG9CZWdpbm5pbmdPZlBhcmFncmFwaCIpOwotICAgICAgICBlbHNlCi0gICAg
ICAgICAgICBjbGllbnQtPmFkZFBlbmRpbmdFZGl0b3JDb21tYW5kKCJNb3ZlVG9FbmRPZlBhcmFn
cmFwaCIpOwotICAgIH0KLQotICAgIGNvbnN0IGNoYXIqIHJhd0NvbW1hbmQgPSBndGtEZWxldGVD
b21tYW5kc1tkZWxldGVUeXBlXVtkaXJlY3Rpb25dOwotICAgIGlmICghcmF3Q29tbWFuZCkKLSAg
ICAgIHJldHVybjsKLQotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgYWJzKGNvdW50KTsgaSsrKQot
ICAgICAgICBjbGllbnQtPmFkZFBlbmRpbmdFZGl0b3JDb21tYW5kKHJhd0NvbW1hbmQpOwotfQot
Ci1zdGF0aWMgY29uc3QgY2hhciogY29uc3QgZ3RrTW92ZUNvbW1hbmRzW11bNF0gPSB7Ci0gICAg
eyAiTW92ZUJhY2t3YXJkIiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNb3Zl
Rm9yd2FyZCIsCi0gICAgICAiTW92ZUJhY2t3YXJkQW5kTW9kaWZ5U2VsZWN0aW9uIiwgICAgICAg
ICAgICAgICAgICJNb3ZlRm9yd2FyZEFuZE1vZGlmeVNlbGVjdGlvbiIgICAgICAgICAgICAgfSwg
Ly8gRm9yd2FyZC9iYWNrd2FyZCBncmFwaGVtZQotICAgIHsgIk1vdmVMZWZ0IiwgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTW92ZVJpZ2h0IiwKLSAgICAgICJNb3ZlQmFj
a3dhcmRBbmRNb2RpZnlTZWxlY3Rpb24iLCAgICAgICAgICAgICAgICAgIk1vdmVGb3J3YXJkQW5k
TW9kaWZ5U2VsZWN0aW9uIiAgICAgICAgICAgICB9LCAvLyBMZWZ0L3JpZ2h0IGdyYXBoZW1lCi0g
ICAgeyAiTW92ZVdvcmRCYWNrd2FyZCIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJN
b3ZlV29yZEZvcndhcmQiLAotICAgICAgIk1vdmVXb3JkQmFja3dhcmRBbmRNb2RpZnlTZWxlY3Rp
b24iLCAgICAgICAgICAgICAiTW92ZVdvcmRGb3J3YXJkQW5kTW9kaWZ5U2VsZWN0aW9uIiAgICAg
ICAgIH0sIC8vIEZvcndhcmQvYmFja3dhcmQgd29yZAotICAgIHsgIk1vdmVVcCIsICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTW92ZURvd24iLAotICAgICAgIk1vdmVV
cEFuZE1vZGlmeVNlbGVjdGlvbiIsICAgICAgICAgICAgICAgICAgICAgICAiTW92ZURvd25BbmRN
b2RpZnlTZWxlY3Rpb24iICAgICAgICAgICAgICAgIH0sIC8vIFVwL2Rvd24gbGluZQotICAgIHsg
Ik1vdmVUb0JlZ2lubmluZ09mTGluZSIsICAgICAgICAgICAgICAgICAgICAgICAgICAiTW92ZVRv
RW5kT2ZMaW5lIiwKLSAgICAgICJNb3ZlVG9CZWdpbm5pbmdPZkxpbmVBbmRNb2RpZnlTZWxlY3Rp
b24iLCAgICAgICAgIk1vdmVUb0VuZE9mTGluZUFuZE1vZGlmeVNlbGVjdGlvbiIgICAgICAgICB9
LCAvLyBVcC9kb3duIGxpbmUgZW5kcwotICAgIHsgIk1vdmVQYXJhZ3JhcGhGb3J3YXJkIiwgICAg
ICAgICAgICAgICAgICAgICAgICAgICAiTW92ZVBhcmFncmFwaEJhY2t3YXJkIiwKLSAgICAgICJN
b3ZlUGFyYWdyYXBoRm9yd2FyZEFuZE1vZGlmeVNlbGVjdGlvbiIsICAgICAgICAgIk1vdmVQYXJh
Z3JhcGhCYWNrd2FyZEFuZE1vZGlmeVNlbGVjdGlvbiIgICB9LCAvLyBVcC9kb3duIHBhcmFncmFw
aHMKLSAgICB7ICJNb3ZlVG9CZWdpbm5pbmdPZlBhcmFncmFwaCIsICAgICAgICAgICAgICAgICAg
ICAgIk1vdmVUb0VuZE9mUGFyYWdyYXBoIiwKLSAgICAgICJNb3ZlVG9CZWdpbm5pbmdPZlBhcmFn
cmFwaEFuZE1vZGlmeVNlbGVjdGlvbiIsICAgIk1vdmVUb0VuZE9mUGFyYWdyYXBoQW5kTW9kaWZ5
U2VsZWN0aW9uIiAgICB9LCAvLyBVcC9kb3duIHBhcmFncmFwaCBlbmRzLgotICAgIHsgIk1vdmVQ
YWdlVXAiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTW92ZVBhZ2VEb3du
IiwKLSAgICAgICJNb3ZlUGFnZVVwQW5kTW9kaWZ5U2VsZWN0aW9uIiwgICAgICAgICAgICAgICAg
ICAgIk1vdmVQYWdlRG93bkFuZE1vZGlmeVNlbGVjdGlvbiIgICAgICAgICAgICB9LCAvLyBVcC9k
b3duIHBhZ2UKLSAgICB7ICJNb3ZlVG9CZWdpbm5pbmdPZkRvY3VtZW50IiwgICAgICAgICAgICAg
ICAgICAgICAgIk1vdmVUb0VuZE9mRG9jdW1lbnQiLAotICAgICAgIk1vdmVUb0JlZ2lubmluZ09m
RG9jdW1lbnRBbmRNb2RpZnlTZWxlY3Rpb24iLCAgICAiTW92ZVRvRW5kT2ZEb2N1bWVudEFuZE1v
ZGlmeVNlbGVjdGlvbiIgICAgIH0sIC8vIEJlZ2luL2VuZCBvZiBidWZmZXIKLSAgICB7IDAsICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwKLSAgICAgIDAs
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IC8vIEhvcml6b250YWwgcGFnZSBt
b3ZlbWVudAotfTsKLQotc3RhdGljIHZvaWQgbW92ZUN1cnNvckNhbGxiYWNrKEd0a1dpZGdldCog
d2lkZ2V0LCBHdGtNb3ZlbWVudFN0ZXAgc3RlcCwgZ2ludCBjb3VudCwgZ2Jvb2xlYW4gZXh0ZW5k
U2VsZWN0aW9uLCBXZWJWaWV3KiBjbGllbnQpCi17Ci0gICAgZ19zaWduYWxfc3RvcF9lbWlzc2lv
bl9ieV9uYW1lKHdpZGdldCwgIm1vdmUtY3Vyc29yIik7Ci0gICAgaW50IGRpcmVjdGlvbiA9IGNv
dW50ID4gMCA/IDEgOiAwOwotICAgIGlmIChleHRlbmRTZWxlY3Rpb24pCi0gICAgICAgIGRpcmVj
dGlvbiArPSAyOwotCi0gICAgaWYgKHN0YXRpY19jYXN0PHVuc2lnbmVkPihzdGVwKSA+PSBHX05f
RUxFTUVOVFMoZ3RrTW92ZUNvbW1hbmRzKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgY29uc3Qg
Y2hhciogcmF3Q29tbWFuZCA9IGd0a01vdmVDb21tYW5kc1tzdGVwXVtkaXJlY3Rpb25dOwotICAg
IGlmICghcmF3Q29tbWFuZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZm9yIChpbnQgaSA9IDA7
IGkgPCBhYnMoY291bnQpOyBpKyspCi0gICAgICAgIGNsaWVudC0+YWRkUGVuZGluZ0VkaXRvckNv
bW1hbmQocmF3Q29tbWFuZCk7Ci19Ci0KLXN0YXRpYyBjb25zdCB1bnNpZ25lZCBDdHJsS2V5ID0g
MSA8PCAwOwotc3RhdGljIGNvbnN0IHVuc2lnbmVkIEFsdEtleSA9IDEgPDwgMTsKLXN0YXRpYyBj
b25zdCB1bnNpZ25lZCBTaGlmdEtleSA9IDEgPDwgMjsKLQotc3RydWN0IEtleURvd25FbnRyeSB7
Ci0gICAgdW5zaWduZWQgdmlydHVhbEtleTsKLSAgICB1bnNpZ25lZCBtb2RpZmllcnM7Ci0gICAg
Y29uc3QgY2hhciogbmFtZTsKLX07Ci0KLXN0cnVjdCBLZXlQcmVzc0VudHJ5IHsKLSAgICB1bnNp
Z25lZCBjaGFyQ29kZTsKLSAgICB1bnNpZ25lZCBtb2RpZmllcnM7Ci0gICAgY29uc3QgY2hhciog
bmFtZTsKLX07Ci0KLXN0YXRpYyBjb25zdCBLZXlEb3duRW50cnkga2V5RG93bkVudHJpZXNbXSA9
IHsKLSAgICB7ICdCJywgICAgICAgQ3RybEtleSwgICAgICAgICAgICAiVG9nZ2xlQm9sZCIgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICB7ICdJJywgICAgICAgQ3RybEtl
eSwgICAgICAgICAgICAiVG9nZ2xlSXRhbGljIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfSwKLSAgICB7IFZLX0VTQ0FQRSwgMCwgICAgICAgICAgICAgICAgICAiQ2FuY2VsIiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICB7IFZLX09FTV9QRVJJT0Qs
IEN0cmxLZXksICAgICAgICAiQ2FuY2VsIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfSwKLSAgICB7IFZLX1RBQiwgICAgMCwgICAgICAgICAgICAgICAgICAiSW5zZXJ0VGFi
IiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICB7IFZLX1RBQiwgICAg
U2hpZnRLZXksICAgICAgICAgICAiSW5zZXJ0QmFja3RhYiIgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfSwKLSAgICB7IFZLX1JFVFVSTiwgMCwgICAgICAgICAgICAgICAgICAiSW5zZXJ0
TmV3bGluZSIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICB7IFZLX1JFVFVS
TiwgQ3RybEtleSwgICAgICAgICAgICAiSW5zZXJ0TmV3bGluZSIgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfSwKLSAgICB7IFZLX1JFVFVSTiwgQWx0S2V5LCAgICAgICAgICAgICAiSW5z
ZXJ0TmV3bGluZSIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICB7IFZLX1JF
VFVSTiwgQWx0S2V5IHwgU2hpZnRLZXksICAiSW5zZXJ0TmV3bGluZSIgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfSwKLX07Ci0KLXN0YXRpYyBjb25zdCBLZXlQcmVzc0VudHJ5IGtleVBy
ZXNzRW50cmllc1tdID0gewotICAgIHsgJ1x0JywgICAwLCAgICAgICAgICAgICAgICAgICJJbnNl
cnRUYWIiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgIHsgJ1x0Jywg
ICBTaGlmdEtleSwgICAgICAgICAgICJJbnNlcnRCYWNrdGFiIiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB9LAotICAgIHsgJ1xyJywgICAwLCAgICAgICAgICAgICAgICAgICJJbnNlcnRO
ZXdsaW5lIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgIHsgJ1xyJywgICBD
dHJsS2V5LCAgICAgICAgICAgICJJbnNlcnROZXdsaW5lIiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB9LAotICAgIHsgJ1xyJywgICBBbHRLZXksICAgICAgICAgICAgICJJbnNlcnROZXds
aW5lIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgIHsgJ1xyJywgICBBbHRL
ZXkgfCBTaGlmdEtleSwgICJJbnNlcnROZXdsaW5lIiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB9LAotfTsKLQotV2ViVmlldzo6V2ViVmlldyhHdGtXaWRnZXQqIHZpZXdXaWRnZXQpCi0g
ICAgOiBtX3ZpZXdXaWRnZXQodmlld1dpZGdldCkKLSAgICAsIG1fbmF0aXZlV2lkZ2V0KGd0a190
ZXh0X3ZpZXdfbmV3KCkpCi17Ci0gICAgZ19zaWduYWxfY29ubmVjdChtX25hdGl2ZVdpZGdldC5n
ZXQoKSwgImJhY2tzcGFjZSIsIEdfQ0FMTEJBQ0soYmFja3NwYWNlQ2FsbGJhY2spLCB0aGlzKTsK
LSAgICBnX3NpZ25hbF9jb25uZWN0KG1fbmF0aXZlV2lkZ2V0LmdldCgpLCAiY3V0LWNsaXBib2Fy
ZCIsIEdfQ0FMTEJBQ0soY3V0Q2xpcGJvYXJkQ2FsbGJhY2spLCB0aGlzKTsKLSAgICBnX3NpZ25h
bF9jb25uZWN0KG1fbmF0aXZlV2lkZ2V0LmdldCgpLCAiY29weS1jbGlwYm9hcmQiLCBHX0NBTExC
QUNLKGNvcHlDbGlwYm9hcmRDYWxsYmFjayksIHRoaXMpOwotICAgIGdfc2lnbmFsX2Nvbm5lY3Qo
bV9uYXRpdmVXaWRnZXQuZ2V0KCksICJwYXN0ZS1jbGlwYm9hcmQiLCBHX0NBTExCQUNLKHBhc3Rl
Q2xpcGJvYXJkQ2FsbGJhY2spLCB0aGlzKTsKLSAgICBnX3NpZ25hbF9jb25uZWN0KG1fbmF0aXZl
V2lkZ2V0LmdldCgpLCAic2VsZWN0LWFsbCIsIEdfQ0FMTEJBQ0soc2VsZWN0QWxsQ2FsbGJhY2sp
LCB0aGlzKTsKLSAgICBnX3NpZ25hbF9jb25uZWN0KG1fbmF0aXZlV2lkZ2V0LmdldCgpLCAibW92
ZS1jdXJzb3IiLCBHX0NBTExCQUNLKG1vdmVDdXJzb3JDYWxsYmFjayksIHRoaXMpOwotICAgIGdf
c2lnbmFsX2Nvbm5lY3QobV9uYXRpdmVXaWRnZXQuZ2V0KCksICJkZWxldGUtZnJvbS1jdXJzb3Ii
LCBHX0NBTExCQUNLKGRlbGV0ZUZyb21DdXJzb3JDYWxsYmFjayksIHRoaXMpOwotICAgIGdfc2ln
bmFsX2Nvbm5lY3QobV9uYXRpdmVXaWRnZXQuZ2V0KCksICJ0b2dnbGUtb3ZlcndyaXRlIiwgR19D
QUxMQkFDSyh0b2dnbGVPdmVyd3JpdGVDYWxsYmFjayksIHRoaXMpOwotICAgIGdfc2lnbmFsX2Nv
bm5lY3QobV9uYXRpdmVXaWRnZXQuZ2V0KCksICJwb3B1cC1tZW51IiwgR19DQUxMQkFDSyhwb3B1
cE1lbnVDYWxsYmFjayksIHRoaXMpOwotICAgIGdfc2lnbmFsX2Nvbm5lY3QobV9uYXRpdmVXaWRn
ZXQuZ2V0KCksICJzaG93LWhlbHAiLCBHX0NBTExCQUNLKHNob3dIZWxwQ2FsbGJhY2spLCB0aGlz
KTsKLX0KLQotV2ViVmlldzo6fldlYlZpZXcoKQotewotfQotCi12b2lkIFdlYlZpZXc6OmdldEVk
aXRvckNvbW1hbmRzRm9yS2V5RXZlbnQoY29uc3QgTmF0aXZlV2ViS2V5Ym9hcmRFdmVudCYgZXZl
bnQsIFZlY3RvcjxXVEY6OlN0cmluZz4mIGNvbW1hbmRMaXN0KQotewotICAgIG1fcGVuZGluZ0Vk
aXRvckNvbW1hbmRzLmNsZWFyKCk7Ci0KLSNpZmRlZiBHVEtfQVBJX1ZFUlNJT05fMgotICAgIGd0
a19iaW5kaW5nc19hY3RpdmF0ZV9ldmVudChHVEtfT0JKRUNUKG1fbmF0aXZlV2lkZ2V0LmdldCgp
KSwgY29uc3RfY2FzdDxHZGtFdmVudEtleSo+KCZldmVudC5uYXRpdmVFdmVudCgpLT5rZXkpKTsK
LSNlbHNlCi0gICAgZ3RrX2JpbmRpbmdzX2FjdGl2YXRlX2V2ZW50KEdfT0JKRUNUKG1fbmF0aXZl
V2lkZ2V0LmdldCgpKSwgY29uc3RfY2FzdDxHZGtFdmVudEtleSo+KCZldmVudC5uYXRpdmVFdmVu
dCgpLT5rZXkpKTsKLSNlbmRpZgotCi0gICAgaWYgKG1fcGVuZGluZ0VkaXRvckNvbW1hbmRzLmlz
RW1wdHkoKSkgewotICAgICAgICBjb21tYW5kTGlzdC5hcHBlbmQobV9wZW5kaW5nRWRpdG9yQ29t
bWFuZHMpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgREVGSU5FX1NUQVRJQ19MT0NB
TChJbnRDb25zdENoYXJIYXNoTWFwLCBrZXlEb3duQ29tbWFuZHNNYXAsICgpKTsKLSAgICBERUZJ
TkVfU1RBVElDX0xPQ0FMKEludENvbnN0Q2hhckhhc2hNYXAsIGtleVByZXNzQ29tbWFuZHNNYXAs
ICgpKTsKLQotICAgIGlmIChrZXlEb3duQ29tbWFuZHNNYXAuaXNFbXB0eSgpKSB7Ci0gICAgICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBHX05fRUxFTUVOVFMoa2V5RG93bkVudHJpZXMpOyBp
KyspCi0gICAgICAgICAgICBrZXlEb3duQ29tbWFuZHNNYXAuc2V0KGtleURvd25FbnRyaWVzW2ld
Lm1vZGlmaWVycyA8PCAxNiB8IGtleURvd25FbnRyaWVzW2ldLnZpcnR1YWxLZXksIGtleURvd25F
bnRyaWVzW2ldLm5hbWUpOwotCi0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBHX05f
RUxFTUVOVFMoa2V5UHJlc3NFbnRyaWVzKTsgaSsrKQotICAgICAgICAgICAga2V5UHJlc3NDb21t
YW5kc01hcC5zZXQoa2V5UHJlc3NFbnRyaWVzW2ldLm1vZGlmaWVycyA8PCAxNiB8IGtleVByZXNz
RW50cmllc1tpXS5jaGFyQ29kZSwga2V5UHJlc3NFbnRyaWVzW2ldLm5hbWUpOwotICAgIH0KLQot
ICAgIHVuc2lnbmVkIG1vZGlmaWVycyA9IDA7Ci0gICAgaWYgKGV2ZW50LnNoaWZ0S2V5KCkpCi0g
ICAgICAgIG1vZGlmaWVycyB8PSBTaGlmdEtleTsKLSAgICBpZiAoZXZlbnQuYWx0S2V5KCkpCi0g
ICAgICAgIG1vZGlmaWVycyB8PSBBbHRLZXk7Ci0gICAgaWYgKGV2ZW50LmNvbnRyb2xLZXkoKSkK
LSAgICAgICAgbW9kaWZpZXJzIHw9IEN0cmxLZXk7Ci0KLSAgICAvLyBGb3Iga2V5cHJlc3MgZXZl
bnRzLCB3ZSB3YW50IGNoYXJDb2RlKCksIGJ1dCBrZXlDb2RlKCkgZG9lcyB0aGF0LgotICAgIGlu
dCBtYXBLZXkgPSBtb2RpZmllcnMgPDwgMTYgfCBldmVudC5uYXRpdmVWaXJ0dWFsS2V5Q29kZSgp
OwotICAgIGlmIChtYXBLZXkpIHsKLSAgICAgICAgSGFzaE1hcDxpbnQsIGNvbnN0IGNoYXIqPiog
Y29tbWFuZE1hcCA9IGV2ZW50LnR5cGUoKSA9PSBXZWJFdmVudDo6S2V5RG93biA/Ci0gICAgICAg
ICAgICAma2V5RG93bkNvbW1hbmRzTWFwIDogJmtleVByZXNzQ29tbWFuZHNNYXA7Ci0gICAgICAg
IGlmIChjb25zdCBjaGFyKiBjb21tYW5kU3RyaW5nID0gY29tbWFuZE1hcC0+Z2V0KG1hcEtleSkp
Ci0gICAgICAgICAgICBtX3BlbmRpbmdFZGl0b3JDb21tYW5kcy5hcHBlbmQoY29tbWFuZFN0cmlu
Zyk7Ci0gICAgfQotCi0gICAgY29tbWFuZExpc3QuYXBwZW5kKG1fcGVuZGluZ0VkaXRvckNvbW1h
bmRzKTsKLX0KLQotLy8gUGFnZUNsaWVudCdzIHB1cmUgdmlydHVhbCBmdW5jdGlvbnMKLVBhc3NP
d25QdHI8RHJhd2luZ0FyZWFQcm94eT4gV2ViVmlldzo6Y3JlYXRlRHJhd2luZ0FyZWFQcm94eSgp
Ci17Ci0gICAgV2ViS2l0V2ViVmlld0Jhc2UqIHZpZXcgPSBXRUJLSVRfV0VCX1ZJRVdfQkFTRSht
X3ZpZXdXaWRnZXQpOwotICAgIHJldHVybiBDaHVua2VkVXBkYXRlRHJhd2luZ0FyZWFQcm94eTo6
Y3JlYXRlKHZpZXcsIHdlYmtpdFdlYlZpZXdCYXNlR2V0UGFnZSh2aWV3KSk7Ci19Ci0KLXZvaWQg
V2ViVmlldzo6c2V0Vmlld05lZWRzRGlzcGxheShjb25zdCBXZWJDb3JlOjpJbnRSZWN0JikKLXsK
LSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIFdlYlZpZXc6OmRpc3BsYXlWaWV3KCkK
LXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIFdlYlZpZXc6OnNjcm9sbFZpZXco
Y29uc3QgV2ViQ29yZTo6SW50UmVjdCYgc2Nyb2xsUmVjdCwgY29uc3QgV2ViQ29yZTo6SW50U2l6
ZSYgc2Nyb2xsT2Zmc2V0KQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLVdlYkNvcmU6
OkludFNpemUgV2ViVmlldzo6dmlld1NpemUoKQotewotICAgIEd0a0FsbG9jYXRpb24gYWxsb2Nh
dGlvbjsKLSAgICBndGtfd2lkZ2V0X2dldF9hbGxvY2F0aW9uKG1fdmlld1dpZGdldCwgJmFsbG9j
YXRpb24pOwotICAgIHJldHVybiBJbnRTaXplKGFsbG9jYXRpb24ud2lkdGgsIGFsbG9jYXRpb24u
aGVpZ2h0KTsKLX0KLQotYm9vbCBXZWJWaWV3Ojppc1ZpZXdXaW5kb3dBY3RpdmUoKQotewotICAg
IG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgV2ViVmlldzo6
aXNWaWV3Rm9jdXNlZCgpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gdHJ1
ZTsKLX0KLQotYm9vbCBXZWJWaWV3Ojppc1ZpZXdWaXNpYmxlKCkKLXsKLSAgICBub3RJbXBsZW1l
bnRlZCgpOwotICAgIHJldHVybiB0cnVlOwotfQotCi1ib29sIFdlYlZpZXc6OmlzVmlld0luV2lu
ZG93KCkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiB0cnVlOwotfQotCi12
b2lkIFdlYlZpZXc6OldlYlZpZXc6OnByb2Nlc3NEaWRDcmFzaCgpCi17Ci0gICAgbm90SW1wbGVt
ZW50ZWQoKTsKLX0KLQotdm9pZCBXZWJWaWV3OjpkaWRSZWxhdW5jaFByb2Nlc3MoKQotewotICAg
IG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgV2ViVmlldzo6dGFrZUZvY3VzKGJvb2wpCi17
Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBXZWJWaWV3Ojp0b29sVGlwQ2hhbmdl
ZChjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7
Ci19Ci0KLXZvaWQgV2ViVmlldzo6c2V0Q3Vyc29yKGNvbnN0IEN1cnNvciYgY3Vyc29yKQotewot
ICAgIC8vIFtHVEtdIFdpZGdldDo6c2V0Q3Vyc29yKCkgZ2V0cyBjYWxsZWQgZnJlcXVlbnRseQot
ICAgIC8vIGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2Mzg4Ci0gICAg
Ly8gU2V0dGluZyB0aGUgY3Vyc29yIG1heSBiZSBhbiBleHBlbnNpdmUgb3BlcmF0aW9uIGluIHNv
bWUgYmFja2VuZHMsCi0gICAgLy8gc28gZG9uJ3QgcmUtc2V0IHRoZSBjdXJzb3IgaWYgaXQncyBh
bHJlYWR5IHNldCB0byB0aGUgdGFyZ2V0IHZhbHVlLgotICAgIEdka1dpbmRvdyogd2luZG93ID0g
Z3RrX3dpZGdldF9nZXRfd2luZG93KG1fdmlld1dpZGdldCk7Ci0gICAgR2RrQ3Vyc29yKiBjdXJy
ZW50Q3Vyc29yID0gZ2RrX3dpbmRvd19nZXRfY3Vyc29yKHdpbmRvdyk7Ci0gICAgR2RrQ3Vyc29y
KiBuZXdDdXJzb3IgPSBjdXJzb3IucGxhdGZvcm1DdXJzb3IoKS5nZXQoKTsKLSAgICBpZiAoY3Vy
cmVudEN1cnNvciAhPSBuZXdDdXJzb3IpCi0gICAgICAgIGdka193aW5kb3dfc2V0X2N1cnNvcih3
aW5kb3csIG5ld0N1cnNvcik7Ci19Ci0KLXZvaWQgV2ViVmlldzo6c2V0Vmlld3BvcnRBcmd1bWVu
dHMoY29uc3QgV2ViQ29yZTo6Vmlld3BvcnRBcmd1bWVudHMmKQotewotICAgIG5vdEltcGxlbWVu
dGVkKCk7Ci19Ci0KLXZvaWQgV2ViVmlldzo6cmVnaXN0ZXJFZGl0Q29tbWFuZChQYXNzUmVmUHRy
PFdlYkVkaXRDb21tYW5kUHJveHk+LCBXZWJQYWdlUHJveHk6OlVuZG9PclJlZG8pCi17Ci0gICAg
bm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBXZWJWaWV3OjpjbGVhckFsbEVkaXRDb21tYW5k
cygpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotYm9vbCBXZWJWaWV3OjpjYW5VbmRv
UmVkbyhXZWJQYWdlUHJveHk6OlVuZG9PclJlZG8pCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsK
LSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLXZvaWQgV2ViVmlldzo6ZXhlY3V0ZVVuZG9SZWRvKFdl
YlBhZ2VQcm94eTo6VW5kb09yUmVkbykKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi1G
bG9hdFJlY3QgV2ViVmlldzo6Y29udmVydFRvRGV2aWNlU3BhY2UoY29uc3QgRmxvYXRSZWN0JiB2
aWV3UmVjdCkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiB2aWV3UmVjdDsK
LX0KLQotRmxvYXRSZWN0IFdlYlZpZXc6OmNvbnZlcnRUb1VzZXJTcGFjZShjb25zdCBGbG9hdFJl
Y3QmIHZpZXdSZWN0KQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIHZpZXdS
ZWN0OwotfQotCi1JbnRSZWN0IFdlYlZpZXc6OndpbmRvd1RvU2NyZWVuKGNvbnN0IEludFJlY3Qm
IHJlY3QpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gSW50UmVjdCgpOwot
fQotCi12b2lkIFdlYlZpZXc6OmRvbmVXaXRoS2V5RXZlbnQoY29uc3QgTmF0aXZlV2ViS2V5Ym9h
cmRFdmVudCYsIGJvb2wgd2FzRXZlbnRIYW5kbGVkKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7
Ci19Ci0KLXZvaWQgV2ViVmlldzo6ZGlkTm90SGFuZGxlS2V5RXZlbnQoY29uc3QgTmF0aXZlV2Vi
S2V5Ym9hcmRFdmVudCYgZXZlbnQpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotUGFz
c1JlZlB0cjxXZWJQb3B1cE1lbnVQcm94eT4gV2ViVmlldzo6Y3JlYXRlUG9wdXBNZW51UHJveHko
V2ViUGFnZVByb3h5KikKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiAwOwot
fQotCi1QYXNzUmVmUHRyPFdlYkNvbnRleHRNZW51UHJveHk+IFdlYlZpZXc6OmNyZWF0ZUNvbnRl
eHRNZW51UHJveHkoV2ViUGFnZVByb3h5KikKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAg
IHJldHVybiAwOwotfQotCi12b2lkIFdlYlZpZXc6OnNldEZpbmRJbmRpY2F0b3IoUGFzc1JlZlB0
cjxGaW5kSW5kaWNhdG9yPiwgYm9vbCBmYWRlT3V0KQotewotICAgIG5vdEltcGxlbWVudGVkKCk7
Ci19Ci0KLSNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCi12b2lkIFdlYlZpZXc6OnBh
Z2VEaWRFbnRlckFjY2VsZXJhdGVkQ29tcG9zaXRpbmcoKQotewotICAgIG5vdEltcGxlbWVudGVk
KCk7Ci19Ci0KLXZvaWQgV2ViVmlldzo6cGFnZURpZExlYXZlQWNjZWxlcmF0ZWRDb21wb3NpdGlu
ZygpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLSNlbmRpZiAvLyBVU0UoQUNDRUxFUkFU
RURfQ09NUE9TSVRJTkcpCi0KLXZvaWQgV2ViVmlldzo6ZGlkQ29tbWl0TG9hZEZvck1haW5GcmFt
ZShib29sIHVzZUN1c3RvbVJlcHJlc2VudGF0aW9uKQotewotfQotCi12b2lkIFdlYlZpZXc6OmRp
ZEZpbmlzaExvYWRpbmdEYXRhRm9yQ3VzdG9tUmVwcmVzZW50YXRpb24oY29uc3QgU3RyaW5nJiBz
dWdnZXN0ZWRGaWxlbmFtZSwgY29uc3QgQ29yZUlQQzo6RGF0YVJlZmVyZW5jZSYpCi17Ci19Ci0K
LWRvdWJsZSBXZWJWaWV3OjpjdXN0b21SZXByZXNlbnRhdGlvblpvb21GYWN0b3IoKQotewotICAg
IG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLXZvaWQgV2ViVmlldzo6c2V0
Q3VzdG9tUmVwcmVzZW50YXRpb25ab29tRmFjdG9yKGRvdWJsZSkKLXsKLSAgICBub3RJbXBsZW1l
bnRlZCgpOwotfQotCi12b2lkIFdlYlZpZXc6OnBhZ2VDbG9zZWQoKQotewotICAgIG5vdEltcGxl
bWVudGVkKCk7Ci19Ci0KLXZvaWQgV2ViVmlldzo6ZGlkQ2hhbmdlU2Nyb2xsYmFyc0Zvck1haW5G
cmFtZSgpIGNvbnN0Ci17Ci19Ci0KLXZvaWQgV2ViVmlldzo6Zmxhc2hCYWNraW5nU3RvcmVVcGRh
dGVzKGNvbnN0IFZlY3RvcjxJbnRSZWN0PiYpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0K
LQotdm9pZCBXZWJWaWV3OjpmaW5kU3RyaW5nSW5DdXN0b21SZXByZXNlbnRhdGlvbihjb25zdCBT
dHJpbmcmLCBGaW5kT3B0aW9ucywgdW5zaWduZWQpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsK
LX0KLQotdm9pZCBXZWJWaWV3Ojpjb3VudFN0cmluZ01hdGNoZXNJbkN1c3RvbVJlcHJlc2VudGF0
aW9uKGNvbnN0IFN0cmluZyYsIEZpbmRPcHRpb25zLCB1bnNpZ25lZCkKLXsKLSAgICBub3RJbXBs
ZW1lbnRlZCgpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViVmlldy5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL2d0ay9XZWJWaWV3LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM4OTI2ZjAu
LjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJWaWV3LmgKKysr
IC9kZXYvbnVsbApAQCAtMSwxMDkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMp
IDIwMTAgTW90b3JvbGEgTW9iaWxpdHksIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTEgSWdhbGlhIFMuTC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwot
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0g
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBXZWJWaWV3
X2gKLSNkZWZpbmUgV2ViVmlld19oCi0KLSNpbmNsdWRlICJQYWdlQ2xpZW50LmgiCi0jaW5jbHVk
ZSAiV2ViUGFnZVByb3h5LmgiCi0jaW5jbHVkZSAiV2luZG93c0tleWJvYXJkQ29kZXMuaCIKLSNp
bmNsdWRlIDxXZWJDb3JlL0ludFNpemUuaD4KLSNpbmNsdWRlIDxndGsvZ3RrLmg+Ci0KLW5hbWVz
cGFjZSBXZWJLaXQgewotCi1jbGFzcyBEcmF3aW5nQXJlYVByb3h5OwotY2xhc3MgV2ViUGFnZU5h
bWVzcGFjZTsKLQotY2xhc3MgV2ViVmlldyA6IHB1YmxpYyBQYWdlQ2xpZW50IHsKLXB1YmxpYzoK
LSAgICB+V2ViVmlldygpOwotICAgIHN0YXRpYyBQYXNzT3duUHRyPFdlYlZpZXc+IGNyZWF0ZShH
dGtXaWRnZXQqIHZpZXdXaWRnZXQpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3
IFdlYlZpZXcodmlld1dpZGdldCkpOwotICAgIH0KLQotICAgIHZvaWQgYWRkUGVuZGluZ0VkaXRv
ckNvbW1hbmQoY29uc3QgY2hhciogY29tbWFuZCkgeyBtX3BlbmRpbmdFZGl0b3JDb21tYW5kcy5h
cHBlbmQoV1RGOjpTdHJpbmcoY29tbWFuZCkpOyB9Ci0KLXByaXZhdGU6Ci0gICAgV2ViVmlldyhH
dGtXaWRnZXQqKTsKLQotICAgIC8vIFBhZ2VDbGllbnQKLSAgICB2aXJ0dWFsIFBhc3NPd25QdHI8
RHJhd2luZ0FyZWFQcm94eT4gY3JlYXRlRHJhd2luZ0FyZWFQcm94eSgpOwotICAgIHZpcnR1YWwg
dm9pZCBzZXRWaWV3TmVlZHNEaXNwbGF5KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKTsKLSAgICB2
aXJ0dWFsIHZvaWQgZGlzcGxheVZpZXcoKTsKLSAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsVmlldyhj
b25zdCBXZWJDb3JlOjpJbnRSZWN0JiBzY3JvbGxSZWN0LCBjb25zdCBXZWJDb3JlOjpJbnRTaXpl
JiBzY3JvbGxPZmZzZXQpOwotICAgIHZpcnR1YWwgV2ViQ29yZTo6SW50U2l6ZSB2aWV3U2l6ZSgp
OwotICAgIHZpcnR1YWwgYm9vbCBpc1ZpZXdXaW5kb3dBY3RpdmUoKTsKLSAgICB2aXJ0dWFsIGJv
b2wgaXNWaWV3Rm9jdXNlZCgpOwotICAgIHZpcnR1YWwgYm9vbCBpc1ZpZXdWaXNpYmxlKCk7Ci0g
ICAgdmlydHVhbCBib29sIGlzVmlld0luV2luZG93KCk7Ci0gICAgdmlydHVhbCB2b2lkIHByb2Nl
c3NEaWRDcmFzaCgpOwotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWxhdW5jaFByb2Nlc3MoKTsKLSAg
ICB2aXJ0dWFsIHZvaWQgcGFnZUNsb3NlZCgpOwotICAgIHZpcnR1YWwgdm9pZCB0YWtlRm9jdXMo
Ym9vbCBkaXJlY3Rpb24pOwotICAgIHZpcnR1YWwgdm9pZCB0b29sVGlwQ2hhbmdlZChjb25zdCBX
VEY6OlN0cmluZyYsIGNvbnN0IFdURjo6U3RyaW5nJik7Ci0gICAgdmlydHVhbCB2b2lkIHNldEN1
cnNvcihjb25zdCBXZWJDb3JlOjpDdXJzb3ImKTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0Vmlld3Bv
cnRBcmd1bWVudHMoY29uc3QgV2ViQ29yZTo6Vmlld3BvcnRBcmd1bWVudHMmKTsKLSAgICB2aXJ0
dWFsIHZvaWQgcmVnaXN0ZXJFZGl0Q29tbWFuZChQYXNzUmVmUHRyPFdlYkVkaXRDb21tYW5kUHJv
eHk+LCBXZWJQYWdlUHJveHk6OlVuZG9PclJlZG8pOwotICAgIHZpcnR1YWwgdm9pZCBjbGVhckFs
bEVkaXRDb21tYW5kcygpOwotICAgIHZpcnR1YWwgYm9vbCBjYW5VbmRvUmVkbyhXZWJQYWdlUHJv
eHk6OlVuZG9PclJlZG8pOwotICAgIHZpcnR1YWwgdm9pZCBleGVjdXRlVW5kb1JlZG8oV2ViUGFn
ZVByb3h5OjpVbmRvT3JSZWRvKTsKLSAgICB2aXJ0dWFsIFdlYkNvcmU6OkZsb2F0UmVjdCBjb252
ZXJ0VG9EZXZpY2VTcGFjZShjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmKTsKLSAgICB2aXJ0dWFs
IFdlYkNvcmU6OkZsb2F0UmVjdCBjb252ZXJ0VG9Vc2VyU3BhY2UoY29uc3QgV2ViQ29yZTo6Rmxv
YXRSZWN0Jik7Ci0gICAgdmlydHVhbCBXZWJDb3JlOjpJbnRSZWN0IHdpbmRvd1RvU2NyZWVuKGNv
bnN0IFdlYkNvcmU6OkludFJlY3QmKTsKLSAgICB2aXJ0dWFsIHZvaWQgZG9uZVdpdGhLZXlFdmVu
dChjb25zdCBOYXRpdmVXZWJLZXlib2FyZEV2ZW50JiwgYm9vbCB3YXNFdmVudEhhbmRsZWQpOwot
ICAgIHZpcnR1YWwgdm9pZCBkaWROb3RIYW5kbGVLZXlFdmVudChjb25zdCBOYXRpdmVXZWJLZXli
b2FyZEV2ZW50Jik7Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYlBvcHVwTWVudVByb3h5PiBj
cmVhdGVQb3B1cE1lbnVQcm94eShXZWJQYWdlUHJveHkqKTsKLSAgICB2aXJ0dWFsIFBhc3NSZWZQ
dHI8V2ViQ29udGV4dE1lbnVQcm94eT4gY3JlYXRlQ29udGV4dE1lbnVQcm94eShXZWJQYWdlUHJv
eHkqKTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0RmluZEluZGljYXRvcihQYXNzUmVmUHRyPEZpbmRJ
bmRpY2F0b3I+LCBib29sIGZhZGVPdXQpOwotICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VTY3Jv
bGxiYXJzRm9yTWFpbkZyYW1lKCkgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIGZsYXNoQmFja2lu
Z1N0b3JlVXBkYXRlcyhjb25zdCBWZWN0b3I8V2ViQ29yZTo6SW50UmVjdD4mIHVwZGF0ZVJlY3Rz
KTsKLSAgICB2aXJ0dWFsIGZsb2F0IHVzZXJTcGFjZVNjYWxlRmFjdG9yKCkgY29uc3QgeyByZXR1
cm4gMTsgfQotICAgIHZpcnR1YWwgdm9pZCBnZXRFZGl0b3JDb21tYW5kc0ZvcktleUV2ZW50KGNv
bnN0IE5hdGl2ZVdlYktleWJvYXJkRXZlbnQmLCBWZWN0b3I8V1RGOjpTdHJpbmc+Jik7Ci0gICAg
dmlydHVhbCB2b2lkIGZpbmRTdHJpbmdJbkN1c3RvbVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0cmlu
ZyYsIEZpbmRPcHRpb25zLCB1bnNpZ25lZCk7Ci0gICAgdmlydHVhbCB2b2lkIGNvdW50U3RyaW5n
TWF0Y2hlc0luQ3VzdG9tUmVwcmVzZW50YXRpb24oY29uc3QgU3RyaW5nJiwgRmluZE9wdGlvbnMs
IHVuc2lnbmVkKTsKLQotI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKLSAgICB2aXJ0
dWFsIHZvaWQgcGFnZURpZEVudGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZygpOwotICAgIHZpcnR1
YWwgdm9pZCBwYWdlRGlkTGVhdmVBY2NlbGVyYXRlZENvbXBvc2l0aW5nKCk7Ci0jZW5kaWYKLQot
ICAgIHZpcnR1YWwgdm9pZCBkaWRDb21taXRMb2FkRm9yTWFpbkZyYW1lKGJvb2wgdXNlQ3VzdG9t
UmVwcmVzZW50YXRpb24pOwotICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5nRGF0YUZv
ckN1c3RvbVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUsIGNv
bnN0IENvcmVJUEM6OkRhdGFSZWZlcmVuY2UmKTsKLSAgICB2aXJ0dWFsIGRvdWJsZSBjdXN0b21S
ZXByZXNlbnRhdGlvblpvb21GYWN0b3IoKTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0Q3VzdG9tUmVw
cmVzZW50YXRpb25ab29tRmFjdG9yKGRvdWJsZSk7Ci0KLSAgICAvLyBNZW1iZXJzIG9mIFdlYlZp
ZXcgY2xhc3MKLSAgICBHdGtXaWRnZXQqIG1fdmlld1dpZGdldDsKLSAgICBWZWN0b3I8V1RGOjpT
dHJpbmc+IG1fcGVuZGluZ0VkaXRvckNvbW1hbmRzOwotICAgIEdSZWZQdHI8R3RrV2lkZ2V0PiBt
X25hdGl2ZVdpZGdldDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8g
V2ViVmlld19oCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>