From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: dalanicolai Newsgroups: gmane.emacs.devel Subject: Question about scrolling behavior (succesfully continuous scroll in doc-view) Date: Fri, 29 Apr 2022 12:47:36 +0200 Message-ID: Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="000000000000efbb0a05ddc8c527" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="29635"; mail-complaints-to="usenet@ciao.gmane.io" To: Emacs Devel Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Fri Apr 29 13:24:38 2022 Return-path: Envelope-to: ged-emacs-devel@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1nkOjl-0007VN-Ep for ged-emacs-devel@m.gmane-mx.org; Fri, 29 Apr 2022 13:24:37 +0200 Original-Received: from localhost ([::1]:43216 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nkOjk-0000sM-Hw for ged-emacs-devel@m.gmane-mx.org; Fri, 29 Apr 2022 07:24:36 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:37552) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nkOAG-0002YT-Iz for emacs-devel@gnu.org; Fri, 29 Apr 2022 06:47:58 -0400 Original-Received: from mail-yw1-x1130.google.com ([2607:f8b0:4864:20::1130]:34613) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nkOA9-0000Q5-3c for emacs-devel@gnu.org; Fri, 29 Apr 2022 06:47:54 -0400 Original-Received: by mail-yw1-x1130.google.com with SMTP id 00721157ae682-2f7c424c66cso81235157b3.1 for ; Fri, 29 Apr 2022 03:47:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=mime-version:from:date:message-id:subject:to; bh=VHZGb55DGgoprtr1DOJNMoGar2ASafT8CNV7Gk+h0uw=; b=PjpJvQl5wVlet6/l0I5Y1W9k/7g7/L0FFc0wkpfkMD9Ue0VBlqq+OL+gJ0p3DR5G1Z smuCbu1qzwlOvvvP41TfdXU+h3JGOvo61bN0e5w/zeL62N1KWuFg4W7afDy7ELg9P0Gn GBkZZs7bcU+optIrQ6cpZaE3RRtEII0zXozpCOQ0FvU7O9PlH0arZE3SIqPA3lojN8WB dsmu4rklpjuyOV8X/0IDvAFCMTZH0KoZjx64yiOyyVKYgdgt0G2BymPTlAciYfwVrEnS KTLpm5/mzI5jLs8H6Px93G54WJC9gC4ZnEnzHLNlaALqCqOqKl9cjzgzllwmLBnxwhyB rukw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=VHZGb55DGgoprtr1DOJNMoGar2ASafT8CNV7Gk+h0uw=; b=6cAp0yfLHPavD43E0Pfl2UxTCAa5ZcBIejGvsNfn5qrcB49XhwpU/q1JT6vzBXTjB7 oPMmdWcnntUt/schjhTLQphLKApW6DdtVtmOwAEjPgiXlxz5htgNyPrkL5QnGIiKK32C CNJBI7eLprwaEXOECskojz7WYb5HgQFLHAXbFhFXQhz0C7aOAGRcUP0XyIi+3u33Yv22 xXlWGHXt6GYGJwZxmGRbyiRsYtHJCCQRQxYeHgibc9rxqXsSi/dEJW8pQpmdA4J32eBw 3mRWzsP3jB7UOC/X1v33b+zCsE83hvPV9QFqJK8VpjAPhqKNjyoXVkXJJgAdhUhMmDP1 9AWg== X-Gm-Message-State: AOAM532PmVzKN/+8rx4m4MDHavIXkGHUbz593vHMUVRVHTmraEOBifXy qQRDKne1XUKG4IEs9jWmeGZSdiiu/JwhejbgpwDYnvOneeYTEg== X-Google-Smtp-Source: ABdhPJy0ibtzAhhSVjl7S/+aqemrTdYfQBMdPsFbLYSTLDs5dNS8FttU6rEHzkx08/fwG4hAKsloTTSIhZmwIW7kXPQ= X-Received: by 2002:a0d:d80b:0:b0:2f7:c74f:7ca5 with SMTP id a11-20020a0dd80b000000b002f7c74f7ca5mr31139390ywe.489.1651229267558; Fri, 29 Apr 2022 03:47:47 -0700 (PDT) Received-SPF: pass client-ip=2607:f8b0:4864:20::1130; envelope-from=dalanicolai@gmail.com; helo=mail-yw1-x1130.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Original-Sender: "Emacs-devel" Xref: news.gmane.io gmane.emacs.devel:288975 Archived-At: --000000000000efbb0a05ddc8c527 Content-Type: multipart/alternative; boundary="000000000000efbb0805ddc8c525" --000000000000efbb0805ddc8c525 Content-Type: text/plain; charset="UTF-8" As I realized that implementing continuous scrolling in doc-view, with the condition that it is only available after all pages have been converted, would not be much work, I have implemented it in doc-view now. However, I have two questions: 1. The scrolling works perfectly fine on Spacemacs, but when using `emacs -Q`, then scrolling forward does not go smoothly, but it makes 'larger' jumps instead. Scrolling up works perfectly fine though. So as it works alright on Spacemacs, I am quite sure this is due to some simple scrolling configuration setting. I am hoping that you might have an idea what configuration variable is responsible. On Spacemacs scrolling forward looks as smooth as scrolling backward. 2. The second question I have asked already yesterday. It can be found here . You can simply test the continuous scrolling by first loading `image-roll.el` and then load `doc-view.el` (both attached here). Then open some document (pdf or djvu; epub works fine also, but for some reason it does not scroll smoothly and makes jumps instead). Now wait until ALL pages have been converted (you can see the counter in the mode line), and when done, then activate `doc-view-continuous-scroll-minor-mode`. Use the arrows to scroll down (not smooth) and up (smooth). My question is if you know why starting form emacs -Q, scroling down does not go smoothly (while it does on Spacemacs). I have not yet implemented the required logic for 'deactivation' of the minor mode. Also, I have not yet taken care of the edge cases (scrolling to first and last page). --000000000000efbb0805ddc8c525 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
As I realized that implementing continuous scrolling = in doc-view, with the condition that it is only
available after a= ll pages have been converted, would not be much work, I have implemented it= in
doc-view now.

However, I have two qu= estions:

1. The scrolling works perfectly fine on = Spacemacs, but when using `emacs -Q`,
then scrolling forward does= not go smoothly, but it makes 'larger' jumps instead.
Sc= rolling up works perfectly fine though.

So as it w= orks alright on Spacemacs, I am quite sure this is due to some simple scrol= ling configuration setting. I am hoping that you might have an idea what co= nfiguration variable is
responsible. On Spacemacs scrolling forwa= rd looks as smooth as scrolling backward.

2. The s= econd question I have asked already yesterday. It can be found here.

You can simply test the continuous scrolling b= y first loading `image-roll.el` and then load `doc-view.el` (both attached = here). Then open some document (pdf or djvu; epub works fine also, but
for some reason it does not scroll smoothly and makes jumps instead).=
Now wait until ALL pages have been converted (you can see the co= unter in the mode line), and
when done, then activate `doc-view-c= ontinuous-scroll-minor-mode`.

Use the arrows to sc= roll down (not smooth) and up (smooth). My question is if you know why
starting form emacs -Q, scroling down does not go smoothly (while it = does on Spacemacs).

I have not yet implemented the= required logic for 'deactivation' of the minor mode.
Als= o, I have not yet taken care of the edge cases (scrolling to first and last= page).
--000000000000efbb0805ddc8c525-- --000000000000efbb0a05ddc8c527 Content-Type: text/x-emacs-lisp; charset="US-ASCII"; name="image-roll.el" Content-Disposition: attachment; filename="image-roll.el" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_l2kb8so50 OzsgLSotIGxleGljYWwtYmluZGluZzogdDsgLSotCgoocmVxdWlyZSAnaW1hZ2UtbW9kZSkKKHJl cXVpcmUgJ3N2ZykKCihkZWZncm91cCBpbWFnZS1yb2xsIG5pbAogICJJbWFnZSByb2xsIGNvbmZp Z3VyYXRpb25zLiIpCgooZGVmY3VzdG9tIGltYWdlLXJvbGwtdmVydGljYWwtbWFyZ2luIDIKICAi UGFnZSBnYXAgaGVpZ2h0LiIKICA6dHlwZSAnaW50ZWdlcikKCihkZWZjdXN0b20gaW1hZ2Utcm9s bC1zdGVwLXNpemUKICA1MAogIDs7IChsYW1iZGEgKCkKICA7OyAgIChsZXQqICgobyAoaW1hZ2Ut cm9sbC1wYWdlLW92ZXJsYXkpKQogIDs7ICAgICAgICAgIChzIChvdmVybGF5LWdldCBvICdkaXNw bGF5KSkKICA7OyAgICAgICAgICAodyAoaW1hZ2UtcHJvcGVydHkgcyA6d2lkdGgpKSkKICA7OyAg ICAgKGlmIHcKICA7OyAgICAgICAgICgqIDUwCiAgOzsgICAgICAgICAgICAoLyAgKGZsb2F0IChp ZiAoY29uc3AgdykgKGNhciB3KSB3KSkKICA7OyAgICAgICAgICAgICAgICAod2luZG93LXBpeGVs LWhlaWdodCkpKQogIDs7ICAgICAgIDUwKSkpCiAgIlNjcm9sbCBzdGVwIHNpemUuClRoZSB2YWx1 ZSBjYW4gYmUgZWl0aGVyIGEgbnVtYmVyIG9yIGEgZnVuY3Rpb24gdGhhdCB0YWtlcyBubwphcmd1 bWVudHMgYW5kIHJldHVybnMgYSBwb3NpdGl2ZSBudW1iZXIuIElmIHRoZSBudW1iZXIgaXMgZXF1 YWwKdG8gb3IgbGFyZ2VyIHRoYW4gMSwgaXQgcmVwcmVzZW50cyBwaXhlbCB1bml0cy4gT3RoZXJ3 aXNlLCBpZiB0aGUKdmFsdWUgaXMgYmV0d2VlbiAwIGFuZCAxLCBpdCByZXByZXNlbnRzIGEgZnJh Y3Rpb24gb2YgdGhlIGN1cnJlbnQKcGFnZSBoZWlnaHQuIgogIDp0eXBlICcoY2hvaWNlIGZ1bmN0 aW9uIGludGVnZXIgZmxvYXQpKQoKKGRlZmN1c3RvbSBpbWFnZS1yb2xsLWNlbnRlciBuaWwKICAi V2hlbiBub24tbmlsLCBjZW50ZXIgdGhlIHJvbGwgaG9yaXpvbnRhbGx5IGluIHRoZSB3aW5kb3cu IgogIDp0eXBlICdib29sZWFuKQoKKGRlZnZhci1sb2NhbCBpbWFnZS1yb2xsLW51bWJlci1vZi1w YWdlcy1mdW5jdGlvbiBuaWwKICAiRnVuY3Rpb24gdGhhdCBzaG91bGQgcmV0dXJuIHRoZSB0b3Rh bCBudW1iZXIgb2YgcGFnZXMuClRoZSBmdW5jdGlvbiBzaG91bGQgcmV0dXJuIGFuIGludGVnZXIg d2l0aCB0aGUgdG90YWwgbnVtYmVyIG9mCnBhZ2VzIGluIHRoZSBkb2N1bWVudC4iKQoKKGRlZnZh ci1sb2NhbCBpbWFnZS1yb2xsLXBhZ2Utc2l6ZXMtZnVuY3Rpb24gbmlsCiAgIkZ1bmN0aW9uIHRo YXQgc2hvdWxkIHJldHVybiBwYWdlLXNpemVzIG9mIGRvY3VtZW50LgpUaGUgZnVuY3Rpb24gc2hv dWxkIHJldHVybiBhIGxpc3Qgb2YgY29uc2VzIG9mIHRoZSBmb3JtIChXSURUSCAuCkhFSUdIVCks IGJvdGggbnVtYmVycy4iKQoKKGRlZnZhci1sb2NhbCBpbWFnZS1yb2xsLXNldC1yZWRpc3BsYXkt ZmxhZy1mdW5jdGlvbiBuaWwpCgooZGVmdmFyLWxvY2FsIGltYWdlLXJvbGwtZGlzcGxheS1wYWdl ICdpbWFnZS1yb2xsLWRlbW8tZGlzcGxheS1wYWdlCiAgIkZ1bmN0aW9uIHRoYXQgc2V0cyB0aGUg b3ZlcmxheSdzIGRpc3BsYXkgcHJvcGVydHkuClRoZSBmdW5jdGlvbiByZWNlaXZlcyB0aGUgcGFn ZSBudW1iZXIgYXMgYSBzaW5nbGUKYXJndW1lbnQgKFBBR0UpLiBUaGUgZnVuY3Rpb24gc2hvdWxk IHVzZSBgKGltYWdlLXJvbGwtcGFnZS1vdmVybGF5ClBBR0UpJyB0byBhZGQgdGhlIGltYWdlIG9m IHRoZSBwYWdlIGFzIHRoZSBvdmVybGF5J3MKZGlzcGxheS1wcm9wZXJ0eS4iKQoKKGRlZm1hY3Jv IGltYWdlLXJvbGwtZGVidWcgKG9iamVjdCkKICBgKHByb2duIChwcmludCAoZm9ybWF0ICIlcyA9 ICVzIiAsb2JqZWN0IChldmFsICxvYmplY3QpKQogICAgICAgICAgICAgICAgICMnZXh0ZXJuYWwt ZGVidWdnaW5nLW91dHB1dCkKICAgICAgICAgIChldmFsICxvYmplY3QpKSkKCjs7IGRlZmluZSBh cyBtYWNybydzIGZvciBzZXRmLWFiaWxpdHkKCjs7IFRPRE8gdXBkYXRlIGRvY3N0cmluZwooZGVm bWFjcm8gaW1hZ2Utcm9sbC1vdmVybGF5cyAoJm9wdGlvbmFsIHdpbmRvdykKICAiTGlzdCBvZiBv dmVybGF5cyB0aGF0IG1ha2UgdXAgYSBzY3JvbGwuCk92ZXJsYXlzIHdpdGggYW4gZXZlbiBpbmRl eCBob2xkIHRoZSBwYWdlLW92ZXJsYXlzLCB3aGVyZSB0aGUKb3ZlcmxheSBhdCBpbmRleCAwIGhv bGRzIHBhZ2UgbnVtYmVyIDEuIEZvciBlYWNoIHBhZ2UsIGV4Y2VwdCBmb3IKdGhlIGxhc3QgcGFn ZSwgdGhlIHN1YnNlcXVlbnQgZWxlbWVudCBob2xkcyB0aGUgZ2FwLW92ZXJsYXkuIgogIGAoaW1h Z2UtbW9kZS13aW5kb3ctZ2V0ICdvdmVybGF5cyAsd2luZG93KSkKCihkZWZtYWNybyBpbWFnZS1y b2xsLXBhZ2Utb3ZlcmxheSAoJm9wdGlvbmFsIHBhZ2UpCiAgIlJldHVybiB0aGUgb3ZlcmxheSB0 aGF0IGhvbGQgcGFnZSBudW1iZXIgUEFHRS4KSW1wbGVtZW50ZWQgYXMgbWFjcm8gdG8gbWFrZSBp dCBzZXRmJ2FibGUuIgogIGAobnRoICgxLSAob3IgLHBhZ2UgKGltYWdlLXJvbGwtY3VycmVudC1w YWdlKSkpCiAgICAgICAgKGltYWdlLXJvbGwtb3ZlcmxheXMpKSkKCihkZWZtYWNybyBpbWFnZS1y b2xsLXBhZ2Utb3ZlcmxheS1nZXQgKHBhZ2UgcHJvcCkKICAiR2V0IG92ZXJsYXktcHJvcGVydHkg UFJPUCBvZiBvdmVybGF5IGhvbGRpbmcgcGFnZSBudW1iZXIgUEFHRS4KSW1wbGVtZW50ZWQgYXMg bWFjcm8gdG8gbWFrZSBpdCBzZXRmJ2FibGUuIgogIGAob3ZlcmxheS1nZXQgKG50aCAoMS0gLHBh Z2UpIChpbWFnZS1yb2xsLW92ZXJsYXlzKSkKICAgICAgICAgICAgICAgICxwcm9wKSkKCihkZWZt YWNybyBpbWFnZS1yb2xsLWN1cnJlbnQtcGFnZSAoJm9wdGlvbmFsIHdpbmRvdykKICAiUmV0dXJu IHRoZSBwYWdlIG51bWJlciBvZiB0aGUgY3VycmVudGx5IGRpc3BsYXllZCBwYWdlLgpUaGUgY3Vy cmVudCBwYWdlIGlzIHRoZSBwYWdlIHRoYXQgb3ZlcmxhcHMgd2l0aCB0aGUgd2luZG93CnN0YXJ0 ICh0aGlzIGNob2ljZSB3YXMgbWFkZSBpbiBvcmRlciB0byBzaW1wbGlmeSB0aGUgc2Nyb2xsaW5n CmxvZ2ljKSIKICBgKGltYWdlLW1vZGUtd2luZG93LWdldCAncGFnZSAsd2luZG93KSkKCihkZWZ1 biBpbWFnZS1yb2xsLW92ZXJsYXktaGVpZ2h0IChwYWdlKQogICgrIChjZHIgKGltYWdlLXJvbGwt cGFnZS1vdmVybGF5LWdldCBwYWdlICdwYWdlLXNpemUpKQogICAgICgqIDIgaW1hZ2Utcm9sbC12 ZXJ0aWNhbC1tYXJnaW4pKSkKCihkZWZ1biBpbWFnZS1yb2xsLXZpc2libGUtb3ZlcmxheXMgKCkK ICAiUGFnZSBudW1iZXJzIGNvcnJlc3BvbmRpbmcgb2YgY3VycmVudGx5IHZpc2libGUgb3Zlcmxh eXMuClRoZSBudW1iZXJzIGFyZSByZXR1cm5lZCBpbiBhIGxpc3QuIE92ZXJsYXlzIHRoYXQgYXJl IG9ubHkKcGFydGlhbGx5IHZpc2libGUgYXJlIGluY2x1ZGVkLiIKICAobGV0KiAodmlzaWJsZQog ICAgICAgICAocGFnZSAoaW1hZ2Utcm9sbC1jdXJyZW50LXBhZ2UpKQogICAgICAgICAoYXZhaWxh YmxlLWhlaWdodCAod2luZG93LXBpeGVsLWhlaWdodCkpKQoKICAgIChwdXNoIHBhZ2UgdmlzaWJs ZSkKICAgIChjbC1kZWNmIGF2YWlsYWJsZS1oZWlnaHQgKC0gKGltYWdlLXJvbGwtb3ZlcmxheS1o ZWlnaHQgcGFnZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHdpbmRvdy12c2Ny b2xsIG5pbCB0KSkpCiAgICAoY2wtaW5jZiBwYWdlKQoKICAgICh3aGlsZSAoPiBhdmFpbGFibGUt aGVpZ2h0IDApCiAgICAgIChwdXNoIHBhZ2UgdmlzaWJsZSkKICAgICAgKGNsLWRlY2YgYXZhaWxh YmxlLWhlaWdodCAoaW1hZ2Utcm9sbC1vdmVybGF5LWhlaWdodCBwYWdlKSkKICAgICAgKGNsLWlu Y2YgcGFnZSkpCiAgICB2aXNpYmxlKSkKCihkZWZ1biBpbWFnZS1yb2xsLXVuZGlzcGxheS1wYWdl IChwYWdlKQogICJVbmRpc3BsYXkgUEFHRS4KVGhlIGZ1bmN0aW9uIHJlcGxhY2VzIHRoZSBpbWFn ZSBkaXNwbGF5IHByb3BlcnR5IG9mIHRoZSBvdmVybGF5CmhvbGRpbmcgUEFHRSB3aXRoIGEgc3Bh Y2UuIEl0IHNpemUgaXMgZGV0ZXJtaW5lZCBmcm9tIHRoZSBpbWFnZQppdHMgYGltYWdlLXNpemUn LiIKICAoZGlzcGxheS13YXJuaW5nICcoaW1hZ2Utcm9sbCkgKGZvcm1hdCAidW5kaXNwbGF5ICVz IiBwYWdlKQogICAgICAgICAgICAgICAgICAgOmRlYnVnICIqaW1hZ2Utcm9sbC1kZWJ1Zy1sb2cq IikKICAobGV0KiAoKG8gKGltYWdlLXJvbGwtcGFnZS1vdmVybGF5IHBhZ2UpKQogICAgICAgICAo aW0gKG92ZXJsYXktZ2V0IG8gJ2Rpc3BsYXkpKQogICAgICAgICAocyAoaW1hZ2Utc2l6ZSBpbSB0 KSkKICAgICAgICAgKHcgKGNhciBzKSkKICAgICAgICAgKGggKGNkciBzKSkpCiAgICAob3Zlcmxh eS1wdXQgbyAnZGlzcGxheSBgKHNwYWNlIC4gKDp3aWR0aCAoLHcpIDpoZWlnaHQgKCxoKSkpKQog ICAgKG92ZXJsYXktcHV0IG8gJ2ZhY2UgYCg6YmFja2dyb3VuZCAiZ3JheSIpKSkpCgooZGVmdW4g aW1hZ2Utcm9sbC0tbmV3LXdpbmRvdy1mdW5jdGlvbiAod2lucHJvcHMpCiAgIkZ1bmN0aW9uIGNh bGxlZCBmaXJzdCBhZnRlciBkaXNwbGF5aW5nIGJ1ZmZlciBpbiBhIG5ldyB3aW5kb3cuCklmIHRo ZSBidWZmZXIgaXMgbmV3bHkgY3JlYXRlZCwgdGhlbiBpdCBkb2VzIG5vdCBjb250YWluIGFueQpv dmVybGF5IGFuZCB0aGlzIGZ1bmN0aW9uIGNyZWF0ZXMgZXJhc2VzIHRoZSBidWZmZXIgY29udGVu dHMKYWZ0ZXIgd2hpY2ggaXQgaW5zZXJ0cyBlbXB0eSBzcGFjZXMgdGhhdCBlYWNoIGhvbGRzIGEg cGFnZSBvciBnYXAKb3ZlcmxheS4gSWYgdGhlIGJ1ZmZlciBhbHJlYWR5IGhhcyBvdmVybGF5cyAo aS5lLiBhIHNlY29uZCBvcgpzdWJzZXF1ZW50IHdpbmRvdyBpcyBjcmVhdGVkKSwgdGhlIGZ1bmN0 aW9uIHNpbXBseSBjb3BpZXMgdGhlCm92ZXJsYXlzIGFuZCBhZGRzIHRoZSBuZXcgd2luZG93IGFz IHdpbmRvdyBvdmVybGF5LXByb3BlcnR5IHRvCmVhY2ggb3ZlcmxheS4iCiAgOzsgKGlmICg9IChi dWZmZXItc2l6ZSkgMCkKICAoaWYgKG5vdCAob3ZlcmxheXMtYXQgMSkpCiAgICAgIChsZXQgKG92 ZXJsYXlzCiAgICAgICAgICAgIChwYWdlcyAoaWYgaW1hZ2Utcm9sbC1udW1iZXItb2YtcGFnZXMt ZnVuY3Rpb24KICAgICAgICAgICAgICAgICAgICAgICAoZnVuY2FsbCBpbWFnZS1yb2xsLW51bWJl ci1vZi1wYWdlcy1mdW5jdGlvbikKICAgICAgICAgICAgICAgICAgICAgaW1hZ2Utcm9sbC1kZW1v LW51bWJlci1vZi1wYWdlcykpCiAgICAgICAgICAgICh3aW4gKGNhciB3aW5wcm9wcykpCiAgICAg ICAgICAgIChpbmhpYml0LXJlYWQtb25seSB0KSkKCiAgICAgICAgKGVyYXNlLWJ1ZmZlcikKCiAg ICAgICAgOzsgaGVyZSB3ZSBvbmx5IGFkZCB0aGUgJ3BhZ2UnIGFuZCAnd2luZG93JyBvdmVybGF5 LXByb3BlcnRpZXMsIHdlIGFkZAogICAgICAgIDs7IG1vcmUgcHJvcGVydGllcy9pbmZvcm1hdGlv biBhcyBzb29uIGFzIGl0IGJlY29tZXMgYXZhaWxhYmxlIGluIHRoZQogICAgICAgIDs7ICdpbWFn ZS1yb2xsLWRpc3BsYXknIGZ1bmN0aW9uCiAgICAgICAgKGRvdGltZXMgKGkgcGFnZXMpCiAgICAg ICAgICAobGV0ICgoaSAoMSsgaSkpKQogICAgICAgICAgICAoaW5zZXJ0ICIgIikKICAgICAgICAg ICAgKGxldCAoKHBvIChtYWtlLW92ZXJsYXkgKDEtIChwb2ludCkpIChwb2ludCkpKSkKICAgICAg ICAgICAgICAob3ZlcmxheS1wdXQgcG8gJ3BhZ2UgIGkpCiAgICAgICAgICAgICAgKG92ZXJsYXkt cHV0IHBvICd3aW5kb3cgd2luKQogICAgICAgICAgICAgIChwdXNoIHBvIG92ZXJsYXlzKSkKICAg ICAgICAgICAgKGluc2VydCAiXG4iKSkpCiAgICAgICAgKGRlbGV0ZS1jaGFyIC0xKQogICAgICAg IChpbWFnZS1tb2RlLXdpbmRvdy1wdXQgJ292ZXJsYXlzIChucmV2ZXJzZSBvdmVybGF5cykpCiAg ICAgICAgKHNldC1idWZmZXItbW9kaWZpZWQtcCBuaWwpCgogICAgICAgIDs7IHdlIG11c3QgcHV0 IHRoZSBjdXJzb3IgYXQgdGhlIGBwb2ludC1taW4nIGZvciB0aGUgdnNjcm9sbAogICAgICAgIDs7 IGZ1bmN0aW9uYWxpdHkgdG8gd29yay4gSXQgaXMgb25seSByZXF1aXJlZCBoZXJlIGJlY2F1c2Ug d2Ugd2lsbCBuZXZlcgogICAgICAgIDs7IG1vdmUgdGhlIGN1cnNvciAod2Ugd2lsbCBtZXJlbHkg dXBkYXRlIG92ZXJsYXkgcHJvcGVydGllcyBhbmQgdnNjcm9sbCkKICAgICAgICA7OyAoZ290by1j aGFyIChwb2ludC1taW4pKQoKICAgICAgICA7OyByZXF1aXJlZCB0byBtYWtlIGBwZGYtdmlldy1y ZWRpc3BsYXktc29tZS13aW5kb3dzJyBjYWxsIGBwZGYtdmlldy1yZWRpc3BsYXknCiAgICAgICAg KHdoZW4tbGV0IChmdW4gaW1hZ2Utcm9sbC1zZXQtcmVkaXNwbGF5LWZsYWctZnVuY3Rpb24pCiAg ICAgICAgICAoZnVuY2FsbCBmdW4pKSkKICAgIChsZXQgKChvbHMgKG1hcGNhciAobGFtYmRhIChv KQogICAgICAgICAgICAgICAgICAgICAgICAgKGxldCAoKG9jIChjb3B5LW92ZXJsYXkgbykpKQog ICAgICAgICAgICAgICAgICAgICAgICAgICAob3ZlcmxheS1wdXQgb2MgJ3dpbmRvdyAoY2FyIHdp bnByb3BzKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgb2MpKQogICAgICAgICAgICAgICAg ICAgICAgIChpbWFnZS1yb2xsLW92ZXJsYXlzKSkpKQogICAgICAoaW1hZ2UtbW9kZS13aW5kb3ct cHV0ICdvdmVybGF5cyBvbHMgd2lucHJvcHMpKSkKICAoaW1hZ2Utcm9sbC1nb3RvLXBhZ2UgMSkp CgooZGVmdW4gaW1hZ2Utcm9sbC0tcmVkaXNwbGF5ICgmb3B0aW9uYWwgd2luZG93IG5vLXJlbGF0 aXZlLXZzY3JvbGwpCiAgIlJlZGlzcGxheSB0aGUgc2Nyb2xsLgpCZXNpZGVzIHRoYXQgdGhpcyBm dW5jdGlvbiBjYW4gYmUgY2FsbGVkIGRpcmVjdGx5LCBpdCBzaG91bGQgYWxzbwpiZSBhZGRlZCB0 byB0aGUgYHdpbmRvdy1jb25maWd1cmF0aW9uLWNoYW5nZS1ob29rJy4KClRoZSBhcmd1bWVudCBX SU5ET1cgaXMgbm90IHVzZSBpbiB0aGUgYm9keSwgYnV0IGl0IGV4aXN0cyB0byBtYWtlCnRoZSBm dW5jdGlvbiBjb21wYXRpYmxlIHdpdGggYHBkZi10b29scycgKGluIHdoaWNoIGNhc2UgaXMgYQpz dWJzdGl0dXRlIGZvciBgcGRmLXZpZXctcmVkaXNwbGF5JykuCgpXaGVuIE5PLVJFTEFUSVZFLVND Uk9MTCBpcyBub24tbmlsLCB0aGVuIHRoZSByZWxhdGl2ZS1zY3JvbGwgaXMKbm90IGluY2x1ZGVk IHdoZW4gc2V0dGluZyB0ZWggdnNjcm9sbCBwb3NpdGlvbi4gRm9yIGV4YW1wbGUgdGhpcwppcyB1 c2VkIGluIGBwZGYtdmlldy1nb3RvLXBhZ2UnIChpbiB0aGUgYHBkZi1zY3JvbGwuZWwnCmV4dGVu c2lvbikgdG8gbWFrZSBpdCBzY3JvbGwgdG8gdGhlIHN0YXJ0IG9mIHRoZSBwYWdlLiIKICAoZGlz cGxheS13YXJuaW5nICcoaW1hZ2Utcm9sbCkKICAgICAgICAgICAgICAgICAgIChmb3JtYXQgInJl ZGlzcGxheSAlcyIgKGNhciAoaW1hZ2UtbW9kZS13aW5wcm9wcykpKQogICAgICAgICAgICAgICAg ICAgOmRlYnVnICIqaW1hZ2Utcm9sbC1kZWJ1Zy1sb2cqIikKCiAgOzsgTk9URSB0aGUgYCh3aGVu IChsaXN0cCBpbWFnZS1tb2RlLXdpbnByb3BzLWFsaXN0KScgZnJvbQogIDs7IGBpbWFnZS1tb2Rl LXJlYXBwbHktd2lucHJvcHMnIHdhcyByZW1vdmVkIGhlcmUgKGJ1dCBpbiB0aGUgZW5kIG1pZ2h0 IHR1cm4KICA7OyBvdXQgdG8gYmUgcmVxdWlyZWQpCgogIDs7IEJld2FyZTogdGhpcyBjYWxsIHRv IGltYWdlLW1vZGUtd2lucHJvcHMgY2FuJ3QgYmUgb3B0aW1pemVkIGF3YXksIGJlY2F1c2UKICA7 OyBpdCBub3Qgb25seSBnZXRzIHRoZSB3aW5wcm9wcyBkYXRhIGJ1dCBzZXRzIGl0IHVwIGlmIG5l ZWRlZCAoZS5nLiBpdCdzIHVzZWQKICA7OyBieSBkb2MtdmlldyB0byBkaXNwbGF5IHRoZSBpbWFn ZSBpbiBhIG5ldyB3aW5kb3cpLgogIChpbWFnZS1tb2RlLXdpbnByb3BzIG5pbCB0KQoKICA7OyAo bGV0KiAoKHBhZ2VzIGltYWdlLXJvbGwtZGVtby1udW1iZXItb2YtcGFnZXMpCiAgOzsgKGxldCog KChwYWdlcyAocGRmLWNhY2hlLW51bWJlci1vZi1wYWdlcykpCiAgKGxldCogKChwYWdlcyAoZnVu Y2FsbCBpbWFnZS1yb2xsLW51bWJlci1vZi1wYWdlcy1mdW5jdGlvbikpCgogICAgICAgICA7OyAo cGFnZS1zaXplcyAobWFrZS1saXN0IHBhZ2VzIChjb25zICgtICh3aW5kb3ctdGV4dC13aWR0aCBu aWwgdCkgMjAwKQogICAgICAgICA7OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICgqIDEuNCAod2luZG93LXRleHQtd2lkdGggbmlsIHQpKSkpKQogICAgICAgICAocGFnZS1zaXpl cyAoaWYgaW1hZ2Utcm9sbC1wYWdlLXNpemVzLWZ1bmN0aW9uCiAgICAgICAgICAgICAgICAgICAg ICAgICAoZnVuY2FsbCBpbWFnZS1yb2xsLXBhZ2Utc2l6ZXMtZnVuY3Rpb24pCiAgICAgICAgICAg ICAgICAgICAgICAgKG1ha2UtbGlzdCBwYWdlcyAoaWYgKGZ1bmN0aW9ucCBpbWFnZS1yb2xsLWRl bW8tcGFnZS1zaXplKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IChmdW5jYWxsIGltYWdlLXJvbGwtZGVtby1wYWdlLXNpemUpCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGltYWdlLXJvbGwtZGVtby1wYWdlLXNpemUpKSkpCiAgICAg ICAgIDs7IChsZXQgKCh3ICh3aW5kb3ctcGl4ZWwtd2lkdGgpKSkKICAgICAgICAgOzsgICAobWFr ZS1saXN0IHBhZ2VzIChjb25zIHcgKCogMS40IHcpKSkpKSkKCiAgICAgICAgIChuIDApKQogICAg ICAgICA7OyAodnBvcyAwKSkKCiAgICAoZG9saXN0IChwYWdlLXNpemUgcGFnZS1zaXplcykKICAg ICAgKGxldCogKChwYWdlLXdpZHRoIChjYXIgcGFnZS1zaXplKSkKICAgICAgICAgICAgIChvdmVy bGV5LWhlaWd0aCAoKyAoY2RyIHBhZ2Utc2l6ZSkgKCogMiBpbWFnZS1yb2xsLXZlcnRpY2FsLW1h cmdpbikpKQogICAgICAgICAgICAgKG8gKG50aCBuIChpbWFnZS1yb2xsLW92ZXJsYXlzKSkpKQog ICAgICAgICh3aGVuIGltYWdlLXJvbGwtY2VudGVyCiAgICAgICAgICAob3ZlcmxheS1wdXQgbyAn YmVmb3JlLXN0cmluZwogICAgICAgICAgICAgICAgICAgICAgICh3aGVuICg+ICh3aW5kb3ctcGl4 ZWwtd2lkdGgpIHBhZ2Utd2lkdGgpCiAgICAgICAgICAgICAgICAgICAgICAgICAocHJvcGVydGl6 ZSAiICIgJ2Rpc3BsYXkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGAoc3Bh Y2UgOmFsaWduLXRvCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICgsKGZsb29yICgvICgtICh3aW5kb3ctcGl4ZWwtd2lkdGgpIHBhZ2Utd2lkdGgpIDIpKSkpKSkp KQogICAgICAgIChvdmVybGF5LXB1dCBvICdkaXNwbGF5IGAoc3BhY2UgLiAoOndpZHRoICgscGFn ZS13aWR0aCkgOmhlaWdodCAoLG92ZXJsZXktaGVpZ3RoKSkpKQogICAgICAgIChvdmVybGF5LXB1 dCBvICdmYWNlIGAoOmJhY2tncm91bmQgImdyYXkiKSkKICAgICAgICAob3ZlcmxheS1wdXQgbyAn cGFnZS1zaXplIHBhZ2Utc2l6ZSkKICAgICAgICAoc2V0cSBuICgrIG4gMSkpKSkpCiAgOzsgKGxl dCAoKGN1cnJlbnQtcGFnZSAoY2FyIChpbWFnZS1tb2RlLXdpbmRvdy1nZXQgJ2Rpc3BsYXllZC1w YWdlcykpKSkKICAobGV0IChkaXNwbGF5ZWQpCiAgICAoZG9saXN0IChwIChpbWFnZS1yb2xsLXZp c2libGUtb3ZlcmxheXMpKQogICAgICAoZnVuY2FsbCBpbWFnZS1yb2xsLWRpc3BsYXktcGFnZSBw KQogICAgICAocHVzaCBwIGRpc3BsYXllZCkpCiAgOzsgKGltYWdlLW1vZGUtd2luZG93LXB1dCAn cGFnZSAoY2FyIChsYXN0IGRpc3BsYXllZCkpKSA7IFRPRE8gY2hlY2sgaWYgcG9zc2libGUgdG8g dXNlICdkaXNwbGF5ZWQtcGFnZXMKICAoaW1hZ2UtbW9kZS13aW5kb3ctcHV0ICdkaXNwbGF5ZWQt cGFnZXMgKHJldmVyc2UgZGlzcGxheWVkKSkKICAoaW1hZ2UtbW9kZS13aW5kb3ctcHV0ICd2aXNp YmxlLXBhZ2VzLXZzY3JvbGwtbGltaXQKICAgICAgICAgICAgICAgICAgICAgICAgICgtIChhcHBs eSAjJysgKG1hcGNhciAjJ2ltYWdlLXJvbGwtb3ZlcmxheS1oZWlnaHQgZGlzcGxheWVkKSkKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICh3aW5kb3ctdGV4dC1oZWlnaHQgbmlsIHQpKSkpCiAg KHdoZW4tbGV0IChwIChpbWFnZS1yb2xsLWN1cnJlbnQtcGFnZSkpCiAgICAoZ290by1saW5lIHAp CiAgICA7OyAocmVkaXNwbGF5KQogICAgKGltYWdlLXNldC13aW5kb3ctdnNjcm9sbCAob3IgKGlt YWdlLW1vZGUtd2luZG93LWdldCAndnNjcm9sbCkgMTApKSkpCgooZGVmdW4gaW1hZ2Utcm9sbC1n b3RvLXBhZ2UgKHBhZ2UgJm9wdGlvbmFsIHdpbmRvdykKICAiR28gdG8gUEFHRSBpbiBQREYuCgpJ ZiBvcHRpb25hbCBwYXJhbWV0ZXIgV0lORE9XLCBnbyB0byBQQUdFIGluIGFsbCBgcGRmLXZpZXcn CndpbmRvd3MuIgogIChpbnRlcmFjdGl2ZQogICAobGlzdCAoaWYgY3VycmVudC1wcmVmaXgtYXJn CiAgICAgICAgICAgICAocHJlZml4LW51bWVyaWMtdmFsdWUgY3VycmVudC1wcmVmaXgtYXJnKQog ICAgICAgICAgIChyZWFkLW51bWJlciAiUGFnZTogIikpKSkKICAodW5sZXNzIChhbmQgKD49IHBh Z2UgMSkKICAgICAgICAgICAgICAgKDw9IHBhZ2UgKGNvdW50LWxpbmVzIChwb2ludC1taW4pIChw b2ludC1tYXgpKSkpCiAgICAoZXJyb3IgIk5vIHN1Y2ggcGFnZTogJWQiIHBhZ2UpKQogIDs7ICh1 bmxlc3Mgd2luZG93CiAgOzsgICAoc2V0cSB3aW5kb3cKICA7OyAgICAgICAgIChpZiAocGRmLXV0 aWwtcGRmLXdpbmRvdy1wKQogIDs7ICAgICAgICAgICAgIChzZWxlY3RlZC13aW5kb3cpCiAgOzsg ICAgICAgICAgIHQpKSkKICAoc2F2ZS1zZWxlY3RlZC13aW5kb3cKICAgIDs7IFNlbGVjdCB0aGUg d2luZG93IGZvciB0aGUgaG9va3MgYmVsb3cuCiAgICAod2hlbiAod2luZG93LWxpdmUtcCB3aW5k b3cpCiAgICAgIChzZWxlY3Qtd2luZG93IHdpbmRvdyAnbm9yZWNvcmQpKQogICAgKGxldCAoKGNo YW5naW5nLXAKICAgICAgICAgICAobm90IChlcSBwYWdlIChpbWFnZS1yb2xsLWN1cnJlbnQtcGFn ZSB3aW5kb3cpKSkpKQogICAgICAod2hlbiBjaGFuZ2luZy1wCiAgICAgICAgOzsgKHJ1bi1ob29r cyAncGRmLXZpZXctYmVmb3JlLWNoYW5nZS1wYWdlLWhvb2spCiAgICAgICAgKHNldGYgKGltYWdl LXJvbGwtY3VycmVudC1wYWdlIHdpbmRvdykgcGFnZSkKICAgICAgICA7OyAocnVuLWhvb2tzICdw ZGYtdmlldy1jaGFuZ2UtcGFnZS1ob29rKSkKICAgICAgKHdoZW4gKHdpbmRvdy1saXZlLXAgd2lu ZG93KQogICAgICAgIChpbWFnZS1yb2xsLS1yZWRpc3BsYXkgd2luZG93KSkKICAgICAgOzsgKHdo ZW4gY2hhbmdpbmctcAogICAgICA7OyAgIChwZGYtdmlldy1kZWFjdGl2YXRlLXJlZ2lvbikKICAg ICAgOzsgICAoZm9yY2UtbW9kZS1saW5lLXVwZGF0ZSkKICAgICAgOzsgICAocnVuLWhvb2tzICdw ZGYtdmlldy1hZnRlci1jaGFuZ2UtcGFnZS1ob29rKSkpKQogIG5pbCkpKSkKCihkZWZ1biBpbWFn ZS1yb2xsLXVwZGF0ZS1kaXNwbGF5ZWQtcGFnZXMgKCkKICAobGV0ICgob2xkIChwcmludCAoaW1h Z2UtbW9kZS13aW5kb3ctZ2V0ICdkaXNwbGF5ZWQtcGFnZXMpICMnZXh0ZXJuYWwtZGVidWdnaW5n LW91dHB1dCkpCiAgICAgICAgKG5ldyAocHJpbnQgKGltYWdlLXJvbGwtdmlzaWJsZS1vdmVybGF5 cykgIydleHRlcm5hbC1kZWJ1Z2dpbmctb3V0cHV0KSkpCiAgICA7OyBkb2xpc3QgYmVjYXVzZSBp ZiBpbWFnZXMvcGFnZXMgYXJlIHNtYWxsIGVub3VnaCwgdGhlcmUgbWlnaHQgYmUKICAgIDs7IG11 bHRpcGxlIGltYWdlIHRoYXQgbmVlZCB0byBnZXQgdXBkYXRlZAogICAgKGRvbGlzdCAocCAoY2wt c2V0LWRpZmZlcmVuY2Ugb2xkIG5ldykpCiAgICAgIChpbWFnZS1yb2xsLXVuZGlzcGxheS1wYWdl IHApCiAgICAgIChpbWFnZS1tb2RlLXdpbmRvdy1wdXQgJ2Rpc3BsYXllZC1wYWdlcwogICAgICAg ICAgICAgICAgICAgICAgICAgICAgIChzZXRxIG9sZCAoZGVsZXRlIHAgb2xkKSkpKSA7IGltcG9y dGFudCB0byB1cGRhdGUvc2V0cSBvbGQgYmVmb3JlCiAgICA7OyBzZXR0aW5nL2FwcGVuZGluZyBu ZXcgYmVsb3cKICAgIChkb2xpc3QgKHAgKGNsLXNldC1kaWZmZXJlbmNlIG5ldyBvbGQpKQogICAg ICAoZnVuY2FsbCBpbWFnZS1yb2xsLWRpc3BsYXktcGFnZSBwKQogICAgICAoaW1hZ2UtbW9kZS13 aW5kb3ctcHV0ICdkaXNwbGF5ZWQtcGFnZXMgKHNldHEgb2xkIChhcHBlbmQgb2xkIChsaXN0IHAp KSkpKQogICAgOzsgdXBkYXRlIGFsc28gdmlzaWJsZS1yYW5nZQogICAgKGltYWdlLW1vZGUtd2lu ZG93LXB1dCAndmlzaWJsZS1wYWdlcy12c2Nyb2xsLWxpbWl0CiAgICAgICAgICAgICAgICAgICAg ICAgICAgICgtIChhcHBseSAjJysgKG1hcGNhciAjJ2ltYWdlLXJvbGwtb3ZlcmxheS1oZWlnaHQg bmV3KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHdpbmRvdy10ZXh0LWhlaWdodCBu aWwgdCkpKSkpCgooZGVmdW4gaW1hZ2Utcm9sbC1uZXh0LXBhZ2UgKCZvcHRpb25hbCBuKQogIChp bnRlcmFjdGl2ZSkKICAoY2wtaW5jZiAoaW1hZ2Utcm9sbC1jdXJyZW50LXBhZ2UpIChvciBuIDEp KQogIDs7IChzZXQtd2luZG93LXN0YXJ0IG5pbCAoKyAocG9pbnQpIDIpKQogIChpbWFnZS1yb2xs LS1yZWRpc3BsYXkpKQoKKGRlZnVuIGltYWdlLXJvbGwtcHJldmlvdXMtcGFnZSAoKQogIChpbnRl cmFjdGl2ZSkKICAoaW1hZ2Utcm9sbC1uZXh0LXBhZ2UgLTEpKQoKKGRlZnVuIGltYWdlLXJvbGwt c2Nyb2xsLWZvcndhcmQgKCZvcHRpb25hbCBiYWNrd2FyZCBzY3JlZW4pCiAgKGludGVyYWN0aXZl KQogIChsZXQqICgoY3VycmVudC1wYWdlIChpbWFnZS1yb2xsLWN1cnJlbnQtcGFnZSkpCiAgICAg ICAgIChjdXJyZW50LW92ZXJsYXktaGVpZ2h0IChpbWFnZS1yb2xsLW92ZXJsYXktaGVpZ2h0IGN1 cnJlbnQtcGFnZSkpCiAgICAgICAgICh2aXNpYmxlLXBhZ2VzLXZzY3JvbGwtbGltaXQgKGltYWdl LW1vZGUtd2luZG93LWdldCAndmlzaWJsZS1wYWdlcy12c2Nyb2xsLWxpbWl0KSkKICAgICAgICAg KHN0ZXAtc2l6ZSAoaWYgc2NyZWVuCiAgICAgICAgICAgICAgICAgICAgICAgICh3aW5kb3ctdGV4 dC1oZWlnaHQgbmlsIHQpCiAgICAgICAgICAgICAgICAgICAgICBpbWFnZS1yb2xsLXN0ZXAtc2l6 ZSkpCgogICAgICAgICA7OyBkZXRlcm1pbmUgbnVtYmVyIG9mIHBhZ2VzIHRvIGZvcndhcmQvYmFj a3dhcmQKICAgICAgICAgOzsgKHJlcXVpcmVkIGlmIHBhZ2VzIGFyZSBzbWFsbCkKICAgICAgICAg KG4gMCkKICAgICAgICAgKGF2YWlsYWJsZS1oZWlnaHQgc3RlcC1zaXplKQogICAgICAgICAocmVt YWluaW5nLWhlaWdodCBhdmFpbGFibGUtaGVpZ2h0KQogICAgICAgICBuZXctdnNjcm9sbCkKICAg IChjb25kIChiYWNrd2FyZAogICAgICAgICAgIChjbC1kZWNmIGF2YWlsYWJsZS1oZWlnaHQgKHdp bmRvdy12c2Nyb2xsIG5pbCB0KSkKICAgICAgICAgICAod2hpbGUgKD4gYXZhaWxhYmxlLWhlaWdo dCAwKQogICAgICAgICAgICAgKHNldHEgcmVtYWluaW5nLWhlaWdodCBhdmFpbGFibGUtaGVpZ2h0 KQogICAgICAgICAgICAgKHNldHEgbiAoMSsgbikpCiAgICAgICAgICAgICAoY2wtZGVjZiBhdmFp bGFibGUtaGVpZ2h0IChpbWFnZS1yb2xsLW92ZXJsYXktaGVpZ2h0ICgtIGN1cnJlbnQtcGFnZSBu KSkpKQogICAgICAgICAgIChzZXRxIG4gKC0gbikpKQogICAgICAgICAgKHQKICAgICAgICAgICA7 OyAoY2wtZGVjZiBhdmFpbGFibGUtaGVpZ2h0ICgtIChpbWFnZS1yb2xsLW92ZXJsYXktaGVpZ2h0 IGN1cnJlbnQtcGFnZSkKICAgICAgICAgICA7OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICh3aW5kb3ctdnNjcm9sbCBuaWwgdCkpKQogICAgICAgICAgIChzZXRxIGF2YWlsYWJsZS1oZWln aHQgKCsgYXZhaWxhYmxlLWhlaWdodCAoLSAoaW1hZ2Utcm9sbC1vdmVybGF5LWhlaWdodCBjdXJy ZW50LXBhZ2UpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICh3aW5kb3ctdnNjcm9sbCBuaWwgdCkpKSkKICAgICAgICAgICAod2hpbGUgKD4g YXZhaWxhYmxlLWhlaWdodCAwKQogICAgICAgICAgICAgKHNldHEgcmVtYWluaW5nLWhlaWdodCBh dmFpbGFibGUtaGVpZ2h0KQogICAgICAgICAgICAgKHNldHEgbiAoMSsgbikpCiAgICAgICAgICAg ICAoY2wtZGVjZiBhdmFpbGFibGUtaGVpZ2h0IChpbWFnZS1yb2xsLW92ZXJsYXktaGVpZ2h0ICgr IGN1cnJlbnQtcGFnZSBuKSkpKSkpCgogICAgKHdoZW4gYmFja3dhcmQKICAgICAgKHNldHEgc3Rl cC1zaXplICgtIHN0ZXAtc2l6ZSkpKQoKICAgIChpZiAoPSBuIDApCiAgICAgICAgKHNldHEgbmV3 LXZzY3JvbGwgKCsgKHdpbmRvdy12c2Nyb2xsIG5pbCB0KSBzdGVwLXNpemUpKQogICAgICAoc2V0 cSBuZXctdnNjcm9sbCAoKyAod2luZG93LXZzY3JvbGwgbmlsIHQpIHJlbWFpbmluZy1oZWlnaHQp KSkKCgogICAgKGlmIChjb25kICgoPCBuIDApCiAgICAgICAgICAgICAgIChmb3J3YXJkLWxpbmUg bikKICAgICAgICAgICAgICAgKGNsLWRlY2YgKGltYWdlLXJvbGwtY3VycmVudC1wYWdlKSkKICAg ICAgICAgICAgICAgKGltYWdlLXNldC13aW5kb3ctdnNjcm9sbAogICAgICAgICAgICAgICAgKC0g KGltYWdlLXJvbGwtb3ZlcmxheS1oZWlnaHQgKGltYWdlLXJvbGwtY3VycmVudC1wYWdlKSkKICAg ICAgICAgICAgICAgICAgIHJlbWFpbmluZy1oZWlnaHQpKSkKICAgICAgICAgICAgICAoKD4gbiAw KQogICAgICAgICAgICAgICAoZm9yd2FyZC1saW5lIG4pCiAgICAgICAgICAgICAgIChjbC1pbmNm IChpbWFnZS1yb2xsLWN1cnJlbnQtcGFnZSkgbikKICAgICAgICAgICAgICAgKGltYWdlLXNldC13 aW5kb3ctdnNjcm9sbAogICAgICAgICAgICAgICAgcmVtYWluaW5nLWhlaWdodCkpCiAgICAgICAg ICAgICAgKCg+IG5ldy12c2Nyb2xsCiAgICAgICAgICAgICAgICAgIHZpc2libGUtcGFnZXMtdnNj cm9sbC1saW1pdCkKICAgICAgICAgICAgICAgKGltYWdlLXNldC13aW5kb3ctdnNjcm9sbCBuZXct dnNjcm9sbCkpKQogICAgICAgIChpbWFnZS1yb2xsLXVwZGF0ZS1kaXNwbGF5ZWQtcGFnZXMpCiAg ICAgIChpbWFnZS1zZXQtd2luZG93LXZzY3JvbGwgbmV3LXZzY3JvbGwpKSkpCgooZGVmdW4gaW1h Z2Utcm9sbC1zY3JvbGwtYmFja3dhcmQgKCkKICAoaW50ZXJhY3RpdmUpCiAgKGltYWdlLXJvbGwt c2Nyb2xsLWZvcndhcmQgdCkpCgooZGVmdW4gaW1hZ2Utcm9sbC1zY3JvbGwtc2NyZWVuLWZvcndh cmQgKCkKICAoaW50ZXJhY3RpdmUpCiAgKGltYWdlLXJvbGwtc2Nyb2xsLWZvcndhcmQgbmlsIHQp KQoKKGRlZnVuIGltYWdlLXJvbGwtc2Nyb2xsLXNjcmVlbi1iYWNrd2FyZCAoKQogIChpbnRlcmFj dGl2ZSkKICAoaW1hZ2Utcm9sbC1zY3JvbGwtZm9yd2FyZCB0IHQpKQoKKGRlZnVuIGltYWdlLXJv bGwtZGVtby1kaXNwbGF5LXBhZ2UgKHBhZ2UpCiAgIlJldHVybiBkZW1vIGltYWdlIG9mIHBhZ2Uu ClRoaXMgZnVuY3Rpb24gaXMgdXNlZCBmb3IgdGhlIGltYWdlLXJvbGwtZGVtby4iCiAgKGxldCog KChvIChpbWFnZS1yb2xsLXBhZ2Utb3ZlcmxheSBwYWdlKSkKICAgICAgICAgKHMgKGNkciAob3Zl cmxheS1nZXQgbyAnZGlzcGxheSkpKQogICAgICAgICAodyAoY2FyIChwbGlzdC1nZXQgcyA6d2lk dGgpKSkKICAgICAgICAgKGggKGNhciAocGxpc3QtZ2V0IHMgOmhlaWdodCkpKQogICAgICAgICAo c3ZnIChzdmctY3JlYXRlIHcgaCkpKQogICAgKHVubGVzcyB3IChwcmludCAiTk8gVyIgIydleHRl cm5hbC1kZWJ1Z2dpbmctb3V0cHV0KSkKICAgIChzdmctcmVjdGFuZ2xlIHN2ZyAwIDAgdyBoIDpm aWxsLWNvbG9yICJ3aGl0ZSIpCiAgICAoc3ZnLXRleHQgc3ZnCiAgICAgICAgICAgICAgKG51bWJl ci10by1zdHJpbmcgcGFnZSkKICAgICAgICAgICAgICA6Zm9udC1zaXplICI0MCIKICAgICAgICAg ICAgICA6ZmlsbCAiYmxhY2siCiAgICAgICAgICAgICAgOnggMjAKICAgICAgICAgICAgICA6eSA1 MCkKICAgICh3aGVuIGltYWdlLXJvbGwtY2VudGVyCiAgICAgIChvdmVybGF5LXB1dCBvICdiZWZv cmUtc3RyaW5nCiAgICAgICAgICAgICAgICAgICAod2hlbiAoPiAod2luZG93LXBpeGVsLXdpZHRo KSB3KQogICAgICAgICAgICAgICAgICAgICAocHJvcGVydGl6ZSAiICIgJ2Rpc3BsYXkKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgYChzcGFjZSA6YWxpZ24tdG8KICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoLChmbG9vciAoLyAoLSAod2luZG93LXBpeGVs LXdpZHRoKSB3KSAyKSkpKSkpKSkKICAgIChvdmVybGF5LXB1dCBvICdkaXNwbGF5IChzdmctaW1h Z2Ugc3ZnIDptYXJnaW4gYCgwIC4gLGltYWdlLXJvbGwtdmVydGljYWwtbWFyZ2luKSkpKSkKCihk ZWZpbmUtZGVyaXZlZC1tb2RlIGltYWdlLXJvbGwtbW9kZSBzcGVjaWFsLW1vZGUgIkltYWdlIFJv bGwiCiAgOzsgd2UgZG9uJ3QgdXNlIGAoaW1hZ2UtbW9kZS1zZXR1cC13aW5wcm9wcyknIGJlY2F1 c2UgaXQgd291bGQgYWRkaXRpb25hbGx5CiAgOzsgYWRkIGBpbWFnZS1tb2RlLXJlYXBwbHktd2lu cHJvcHMnIHRvIHRoZQogIDs7IGB3aW5kb3ctY29uZmlndXJhdGlvbi1jaGFuZ2UtaG9vaycsIGJ1 dCBgaW1hZ2Utcm9sbC0tcmVkaXNwbGF5JyBhbHJlYWR5CiAgOzsgcmVhcHBsaWVzIHRoZSB2c2Ny b2xsLCBzbyB3ZSBzaW1wbHkgaW5pdGlhbGl6ZSB0aGUKICA7OyBgaW1hZ2UtbW9kZS13aW5wcm9w cy1hbGlzdCcgaGVyZSwgYW5kIGFkZCBsaW5lcyBmcm9tCiAgOzsgYGltYWdlLW1vZGUtcmVhcHBs eS13aW5wcm9wcycgYXQgdGhlIHN0YXJ0IG9mIGBpbWFnZS1yb2xsLS1yZWRpc3BsYXknLgogIChh ZGQtaG9vayAnd2luZG93LWNvbmZpZ3VyYXRpb24tY2hhbmdlLWhvb2sgJ2ltYWdlLXJvbGwtLXJl ZGlzcGxheSBuaWwgdCkKICAoYWRkLWhvb2sgJ2ltYWdlLW1vZGUtbmV3LXdpbmRvdy1mdW5jdGlv bnMgJ2ltYWdlLXJvbGwtLW5ldy13aW5kb3ctZnVuY3Rpb24gbmlsIHQpCiAgKHVubGVzcyAobGlz dHAgaW1hZ2UtbW9kZS13aW5wcm9wcy1hbGlzdCkKICAgIChzZXRxIGltYWdlLW1vZGUtd2lucHJv cHMtYWxpc3QgbmlsKSkpCjs7IChhZGQtaG9vayAnd2luZG93LWNvbmZpZ3VyYXRpb24tY2hhbmdl LWhvb2sKOzsgICAgICAgICAgICMnaW1hZ2UtbW9kZS1yZWFwcGx5LXdpbnByb3BzIG5pbCB0KSkK OzsgKGltYWdlLW1vZGUtc2V0dXAtd2lucHJvcHMpKQoKKHNldHEgaW1hZ2Utcm9sbC1tb2RlLW1h cAogICAgICAobGV0ICgobWFwIChtYWtlLXNwYXJzZS1rZXltYXApKSkKICAgICAgICAoZGVmaW5l LWtleSBtYXAgKGtiZCAiPGRvd24+IikgJ2ltYWdlLXJvbGwtc2Nyb2xsLWZvcndhcmQpCiAgICAg ICAgKGRlZmluZS1rZXkgbWFwIChrYmQgIjx1cD4iKSAnaW1hZ2Utcm9sbC1zY3JvbGwtYmFja3dh cmQpCiAgICAgICAgKGRlZmluZS1rZXkgbWFwIChrYmQgIjxuZXh0PiIpICdpbWFnZS1yb2xsLW5l eHQtcGFnZSkKICAgICAgICAoZGVmaW5lLWtleSBtYXAgKGtiZCAiPHByaW9yPiIpICdpbWFnZS1y b2xsLXByZXZpb3VzLXBhZ2UpCiAgICAgICAgKGRlZmluZS1rZXkgbWFwIChrYmQgIlMtPG5leHQ+ IikgJ2ltYWdlLXJvbGwtc2Nyb2xsLXNjcmVlbi1mb3J3YXJkKQogICAgICAgIChkZWZpbmUta2V5 IG1hcCAoa2JkICJTLTxwcmlvcj4iKSAnaW1hZ2Utcm9sbC1zY3JvbGwtc2NyZWVuLWJhY2t3YXJk KQogICAgICAgIG1hcCkpCgood2hlbiAoZmVhdHVyZXAgJ2V2aWwpCiAgKGV2aWwtZGVmaW5lLWtl eSAnbW90aW9uIGltYWdlLXJvbGwtbW9kZS1tYXAKICAgICJqIiAnaW1hZ2Utcm9sbC1zY3JvbGwt Zm9yd2FyZAogICAgImsiICdpbWFnZS1yb2xsLXNjcm9sbC1iYWNrd2FyZAogICAgIkoiICdpbWFn ZS1yb2xsLW5leHQtcGFnZQogICAgIksiICdpbWFnZS1yb2xsLXByZXZpb3VzLXBhZ2UKICAgIChr YmQgIkMtaiIpICdpbWFnZS1yb2xsLXNjcm9sbC1zY3JlZW4tZm9yd2FyZAogICAgKGtiZCAiQy1r IikgJ2ltYWdlLXJvbGwtc2Nyb2xsLXNjcmVlbi1iYWNrd2FyZCkpCgooZGVmdW4gaW1hZ2Utcm9s bC1kZW1vICgmb3B0aW9uYWwgcGFnZS1zaXplIHBhZ2VzKQogIChpbnRlcmFjdGl2ZSkKICAod2l0 aC1jdXJyZW50LWJ1ZmZlciAoZ2V0LWJ1ZmZlci1jcmVhdGUgIippbWFnZS1yb2xsLWRlbW8qIikK ICAgIChlcmFzZS1idWZmZXIpCiAgICAoaW1hZ2Utcm9sbC1tb2RlKQogICAgKHNldHEgY3Vyc29y LXR5cGUgbmlsKQogICAgKHNldHEgaW1hZ2Utcm9sbC1zdGVwLXNpemUgNTApCiAgICAoc2V0cS1s b2NhbCBpbWFnZS1yb2xsLWRlbW8tcGFnZS1zaXplIChvciBwYWdlLXNpemUKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsYW1iZGEgKCkKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCAoKHcgKHdpbmRvdy1waXhl bC13aWR0aCkpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIChjb25zIHcgKCogMS40IHcpKSkpKSkKICAgIChzZXRxLWxvY2FsIGltYWdlLXJvbGwtZGVt by1udW1iZXItb2YtcGFnZXMgKG9yIHBhZ2VzIDEwMDApKQogICAgKHNldHEgaW1hZ2Utcm9sbC1j ZW50ZXIgdCkKICAgIChzd2l0Y2gtdG8tYnVmZmVyIChjdXJyZW50LWJ1ZmZlcikpKSkK --000000000000efbb0a05ddc8c527 Content-Type: text/x-emacs-lisp; charset="US-ASCII"; name="doc-view.el" Content-Disposition: attachment; filename="doc-view.el" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_l2kb9d9r1 O2RvYy12aWV3LmVsIC0tLSBEb2N1bWVudCB2aWV3ZXIgZm9yIEVtYWNzIC0qLSBsZXhpY2FsLWJp bmRpbmc6IHQgLSotCgo7OyBDb3B5cmlnaHQgKEMpIDIwMDctMjAyMiBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb24sIEluYy4KOzsKOzsgQXV0aG9yOiBUYXNzaWxvIEhvcm4gPHRzZGhAZ251Lm9yZz4K OzsgS2V5d29yZHM6IGZpbGVzLCBwZGYsIHBzLCBkdmksIGRqdnUsIGVwdWIsIGNieiwgZmIyLCB4 cHMsIG9wZW54cHMKCjs7IFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdOVSBFbWFjcy4KCjs7IEdOVSBF bWFjcyBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9k aWZ5Cjs7IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgYXMgcHVibGlzaGVkIGJ5Cjs7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhl ciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCjs7IChhdCB5b3VyIG9wdGlvbikgYW55IGxh dGVyIHZlcnNpb24uCgo7OyBHTlUgRW1hY3MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh dCBpdCB3aWxsIGJlIHVzZWZ1bCwKOzsgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0 IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKOzsgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQo7OyBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgoKOzsgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk IGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKOzsgYWxvbmcgd2l0aCBH TlUgRW1hY3MuICBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgoK Ozs7IFJlcXVpcmVtZW50czoKCjs7IFZpZXdpbmcgUFMvUERGL0RWSSBmaWxlcyByZXF1aXJlcyBH aG9zdHNjcmlwdCwgYGR2aXBkZicgKGNvbWVzIHdpdGgKOzsgR2hvc3RzY3JpcHQpIG9yIGBkdmlw ZGZtJyAoY29tZXMgd2l0aCB0ZVRlWCBvciBUZVhMaXZlKSBhbmQKOzsgYHBkZnRvdGV4dCcsIHdo aWNoIGNvbWVzIHdpdGggeHBkZiAoaHR0cHM6Ly93d3cuZm9vbGFicy5jb20veHBkZi8pCjs7IG9y IHBvcHBsZXIgKGh0dHBzOi8vcG9wcGxlci5mcmVlZGVza3RvcC5vcmcvKS4gRVBVQiwgQ0JaLCBG QjIsIFhQUwo7OyBhbmQgT1hQUyBkb2N1bWVudHMgcmVxdWlyZSBgbXV0b29sJyB3aGljaCBjb21l cyB3aXRoIG11cGRmCjs7IChodHRwczovL211cGRmLmNvbS9pbmRleC5odG1sKS4gRGp2dSBkb2N1 bWVudHMgcmVxdWlyZSBgZGRqdnUnCjs7IChmcm9tIERqVnVMaWJyZSkuICBPREYgZmlsZXMgcmVx dWlyZSBgc29mZmljZScgKGZyb20gTGlicmVPZmZpY2UpLgoKOzs7IENvbW1lbnRhcnk6Cgo7OyBE b2NWaWV3IGlzIGEgZG9jdW1lbnQgdmlld2VyIGZvciBFbWFjcy4gIEl0IGNvbnZlcnRzIGEgbnVt YmVyIG9mCjs7IGRvY3VtZW50IGZvcm1hdHMgKGluY2x1ZGluZyBQREYsIFBTLCBEVkksIERqdnUs IE9ERiwgRVBVQiwgQ0JaLAo7OyBGQjIsIFhQUyBhbmQgT1hQUyBmaWxlcykgdG8gYSBzZXQgb2Yg UE5HIChvciBUSUZGIGZvciBkanZ1KSBmaWxlcywKOzsgb25lIGltYWdlIGZvciBlYWNoIHBhZ2Us IGFuZCBkaXNwbGF5cyB0aGUgaW1hZ2VzIGluc2lkZSBhbiBFbWFjcwo7OyBidWZmZXIuICBUaGlz IGJ1ZmZlciB1c2VzIGBkb2Mtdmlldy1tb2RlJyB3aGljaCBwcm92aWRlcyBjb252ZW5pZW50Cjs7 IGtleSBiaW5kaW5ncyBmb3IgYnJvd3NpbmcgdGhlIGRvY3VtZW50Lgo7Owo7OyBUbyB1c2UgaXQg c2ltcGx5IG9wZW4gYSBkb2N1bWVudCBmaWxlIHdpdGgKOzsKOzsgICAgIEMteCBDLWYgfi9wYXRo L3RvL2RvY3VtZW50IFJFVAo7Owo7OyBhbmQgdGhlIGRvY3VtZW50IHdpbGwgYmUgY29udmVydGVk IGFuZCBkaXNwbGF5ZWQsIGlmIHlvdXIgRW1hY3Mgc3VwcG9ydHMgUE5HCjs7IGltYWdlcy4gIFdp dGggYEMtYyBDLWMnIHlvdSBjYW4gdG9nZ2xlIGJldHdlZW4gdGhlIHJlbmRlcmVkIGltYWdlcwo7 OyByZXByZXNlbnRhdGlvbiBhbmQgdGhlIHNvdXJjZSB0ZXh0IHJlcHJlc2VudGF0aW9uIG9mIHRo ZSBkb2N1bWVudC4KOzsKOzsgU2luY2UgY29udmVyc2lvbiBtYXkgdGFrZSBzb21lIHRpbWUgYWxs IHRoZSBQTkcgaW1hZ2VzIGFyZSBjYWNoZWQgaW4gYQo7OyBzdWJkaXJlY3Rvcnkgb2YgYGRvYy12 aWV3LWNhY2hlLWRpcmVjdG9yeScgYW5kIHJldXNlZCB3aGVuIHlvdSB3YW50IHRvIHZpZXcKOzsg dGhhdCBmaWxlIGFnYWluLiAgVG8gcmVjb252ZXJ0IGEgZG9jdW1lbnQgaGl0IGBnJyAoYGRvYy12 aWV3LXJlY29udmVydC1kb2MnKQo7OyB3aGVuIGRpc3BsYXlpbmcgdGhlIGRvY3VtZW50LiAgVG8g ZGVsZXRlIGFsbCBjYWNoZWQgZmlsZXMgdXNlCjs7IGBkb2Mtdmlldy1jbGVhci1jYWNoZScuICBU byBvcGVuIHRoZSBjYWNoZSB3aXRoIGRpcmVkLCBzbyB0aGF0IHlvdSBjYW4gdGlkeQo7OyBpdCBv dXQgdXNlIGBkb2Mtdmlldy1kaXJlZC1jYWNoZScuCjs7Cjs7IFdoZW4gY29udmVyc2lvbiBpcyB1 bmRlcndheSB0aGUgZmlyc3QgcGFnZSB3aWxsIGJlIGRpc3BsYXllZCBhcyBzb29uIGFzIGl0Cjs7 IGlzIGF2YWlsYWJsZSBhbmQgdGhlIGF2YWlsYWJsZSBwYWdlcyBhcmUgcmVmcmVzaGVkIGV2ZXJ5 Cjs7IGBkb2Mtdmlldy1jb252ZXJzaW9uLXJlZnJlc2gtaW50ZXJ2YWwnIHNlY29uZHMuICBJZiB0 aGF0IHZhcmlhYmxlIGlzIG5pbCB0aGUKOzsgcGFnZXMgd29uJ3QgYmUgZGlzcGxheWVkIGJlZm9y ZSBjb252ZXJzaW9uIG9mIHRoZSBkb2N1bWVudCBmaW5pc2hlZAo7OyBjb21wbGV0ZWx5Lgo7Owo7 OyBEb2NWaWV3IGxldHMgeW91IHNlbGVjdCBhIHNsaWNlIG9mIHRoZSBkaXNwbGF5ZWQgcGFnZXMu ICBUaGlzIHNsaWNlCjs7IHdpbGwgYmUgcmVtZW1iZXJlZCBhbmQgYXBwbGllZCB0byBhbGwgcGFn ZXMgb2YgdGhlIGN1cnJlbnQKOzsgZG9jdW1lbnQuICBUaGlzIGVuYWJsZXMgeW91IHRvIGN1dCBh d2F5IHRoZSBtYXJnaW5zIG9mIGEgZG9jdW1lbnQKOzsgdG8gc2F2ZSBzb21lIHNwYWNlLiAgVG8g c2VsZWN0IGEgc2xpY2UgeW91IGNhbiB1c2UKOzsgYGRvYy12aWV3LXNldC1zbGljZScgKGJvdW5k IHRvIGBjIHMnKSB3aGljaCB3aWxsIHF1ZXJ5IHlvdSBmb3IgdGhlCjs7IGNvb3JkaW5hdGVzIG9m IHRoZSBzbGljZSdzIHRvcC1sZWZ0IGNvcm5lciBhbmQgaXRzIHdpZHRoIGFuZAo7OyBoZWlnaHQu ICBBIG11Y2ggbW9yZSBjb252ZW5pZW50IHdheSB0byBkbyB0aGUgc2FtZSBpcyBvZmZlcmVkIGJ5 Cjs7IHRoZSBjb21tYW5kIGBkb2Mtdmlldy1zZXQtc2xpY2UtdXNpbmctbW91c2UnIChib3VuZCB0 byBgYyBtJykuCjs7IEFmdGVyIGludm9jYXRpb24geW91IG9ubHkgaGF2ZSB0byBwcmVzcyBtb3Vz ZS0xIGF0IHRoZSB0b3AtbGVmdAo7OyBjb3JuZXIgYW5kIGRyYWcgaXQgdG8gdGhlIGJvdHRvbS1y aWdodCBjb3JuZXIgb2YgdGhlIGRlc2lyZWQgc2xpY2UuCjs7IEV2ZW4gbW9yZSBhY2N1cmF0ZSBh bmQgY29udmVuaWVudCBpcyB0byB1c2UKOzsgYGRvYy12aWV3LXNldC1zbGljZS1mcm9tLWJvdW5k aW5nLWJveCcgKGJvdW5kIHRvIGBjIGInKSB3aGljaCB1c2VzCjs7IHRoZSBCb3VuZGluZ0JveCBp bmZvcm1hdGlvbiBvZiB0aGUgY3VycmVudCBwYWdlIHRvIHNldCBhbiBvcHRpbWFsCjs7IHNsaWNl LiAgVG8gcmVzZXQgdGhlIHNsaWNlIHVzZSBgZG9jLXZpZXctcmVzZXQtc2xpY2UnIChib3VuZCB0 byBgYwo7OyByJykuCjs7Cjs7IFlvdSBjYW4gYWxzbyBzZWFyY2ggd2l0aGluIHRoZSBkb2N1bWVu dC4gIFRoZSBjb21tYW5kIGBkb2Mtdmlldy1zZWFyY2gnCjs7IChib3VuZCB0byBgQy1zJykgcXVl cmllcyBmb3IgYSBzZWFyY2ggcmVnZXhwIGFuZCBpbml0aWFsaXplcyBhIGxpc3Qgb2YgYWxsCjs7 IG1hdGNoaW5nIHBhZ2VzIGFuZCBtZXNzYWdlcyBob3cgbWFueSBtYXRjaC1wYWdlcyB3ZXJlIGZv dW5kLiAgQWZ0ZXIgdGhhdCB5b3UKOzsgY2FuIGp1bXAgdG8gdGhlIG5leHQgcGFnZSBjb250YWlu aW5nIGEgbWF0Y2ggd2l0aCBhbiBhZGRpdGlvbmFsIGBDLXMnLiAgV2l0aAo7OyBgQy1yJyB5b3Ug Y2FuIGRvIHRoZSBzYW1lLCBidXQgYmFja3dhcmRzLiAgVG8gc2VhcmNoIGZvciBhIG5ldyByZWdl eHAgZ2l2ZSBhCjs7IHByZWZpeCBhcmcgdG8gb25lIG9mIHRoZSBzZWFyY2ggZnVuY3Rpb25zLCBl LmcuIGJ5IHR5cGluZyBgQy11IEMtcycuICBUaGUKOzsgc2VhcmNoaW5nIHdvcmtzIGJ5IHVzaW5n IGEgcGxhaW4gdGV4dCByZXByZXNlbnRhdGlvbiBvZiB0aGUgZG9jdW1lbnQuICBJZgo7OyB0aGF0 IGRvZXNuJ3QgYWxyZWFkeSBleGlzdCB0aGUgZmlyc3QgaW52b2NhdGlvbiBvZiBgZG9jLXZpZXct c2VhcmNoJyAob3IKOzsgYGRvYy12aWV3LXNlYXJjaC1iYWNrd2FyZCcpIHN0YXJ0cyB0aGUgY29u dmVyc2lvbi4gIFdoZW4gdGhhdCBmaW5pc2hlcyBhbmQKOzsgeW91J3JlIHN0aWxsIHZpZXdpbmcg dGhlIGRvY3VtZW50IChpLmUuIHlvdSBkaWRuJ3Qgc3dpdGNoIHRvIGFub3RoZXIgYnVmZmVyKQo7 OyB5b3UncmUgcXVlcmllZCBmb3IgdGhlIHJlZ2V4cCB0aGVuLgo7Owo7OyBEaXJlZCB1c2VycyBj YW4gc2ltcGx5IGhpdCBgdicgb24gYSBkb2N1bWVudCBmaWxlLiAgSWYgaXQncyBhIFBTLCBQREYg b3IgRFZJCjs7IGl0IHdpbGwgYmUgb3BlbmVkIHVzaW5nIGBkb2Mtdmlldy1tb2RlJy4KOzsKCjs7 OyBDb25maWd1cmF0aW9uOgoKOzsgSWYgdGhlIGltYWdlcyBhcmUgdG9vIHNtYWxsIG9yIHRvbyBi aWcgeW91IHNob3VsZCBzZXQgdGhlICItclhYWCIgb3B0aW9uIGluCjs7IGBkb2Mtdmlldy1naG9z dHNjcmlwdC1vcHRpb25zJyB0byBhbm90aGVyIHZhbHVlLiAgKFRoZSBiaWdnZXIgeW91ciBzY3Jl ZW4sCjs7IHRoZSBoaWdoZXIgdGhlIHZhbHVlLikKOzsKOzsgVGhpcyBhbmQgYWxsIG90aGVyIG9w dGlvbnMgY2FuIGJlIHNldCB3aXRoIHRoZSBjdXN0b21pemF0aW9uIGludGVyZmFjZS4KOzsgU2lt cGx5IGRvCjs7Cjs7ICAgICBNLXggY3VzdG9taXplLWdyb3VwIFJFVCBkb2MtdmlldyBSRVQKOzsK OzsgYW5kIG1vZGlmeSB0aGVtIHRvIHlvdXIgbmVlZHMuCgo7OzsgVG9kbzoKCjs7IC0gYWRkIHBy aW50IGNvbW1hbmQuCjs7IC0gc2hhcmUgbW9yZSBjb2RlIHdpdGggaW1hZ2UtbW9kZS4KOzsgLSBi ZXR0ZXIgbWVudS4KOzsgLSBCaW5kIHNsaWNpbmcgdG8gYSBkcmFnIGV2ZW50Lgo7OyAtIHpvb20g dGhlIHJlZ2lvbiBhcm91bmQgdGhlIGN1cnNvciAobGlrZSB4ZHZpKS4KOzsgLSBnZXQgcmlkIG9m IHRoZSBzaWxseSBhcnJvdyBpbiB0aGUgZnJpbmdlLgo7OyAtIGltcHJvdmUgYW50aS1hbGlhc2lu ZyAocGRmLXV0aWxzIGdldHMgaXQgYmV0dGVyKS4KCjs7OzsgQWJvdXQgaXNlYXJjaCBzdXBwb3J0 Cgo7OyBJIHRyaWVkIGltcGxlbWVudGluZyBpc2VhcmNoIGJ5IHNldHRpbmcKOzsgYGlzZWFyY2gt c2VhcmNoLWZ1bi1mdW5jdGlvbicgYnVmZmVyLWxvY2FsbHksIGJ1dCB0aGF0IGRpZG4ndAo7OyB3 b3JrIHRvbyBnb29kLiAgVGhlIGZ1bmN0aW9uIGRvaW5nIHRoZSByZWFsIHNlYXJjaCB3YXMgY2Fs bGVkCjs7IGVuZGxlc3NseSBzb21laG93LiAgQnV0IGV2ZW4gaWYgd2UnZCBnZXQgdGhhdCB3b3Jr aW5nIG5vIHJlYWwKOzsgaXNlYXJjaCBmZWVsaW5nIGNvbWVzIHVwIGR1ZSB0byB0aGUgbWlzc2lu ZyBtYXRjaCBoaWdobGlnaHRpbmcuCjs7IEN1cnJlbnRseSBJIGRpc3BsYXkgYWxsIGxpbmVzIGNv bnRhaW5pbmcgYSBtYXRjaCBpbiBhIHRvb2x0aXAgYW5kCjs7IGVhY2ggQy1zIG9yIEMtciBqdW1w cyBkaXJlY3RseSB0byB0aGUgbmV4dC9wcmV2aW91cyBwYWdlIHdpdGggYQo7OyBtYXRjaC4gIFdp dGggaXNlYXJjaCB3ZSBjb3VsZCBvbmx5IGRpc3BsYXkgdGhlIGN1cnJlbnQgbWF0Y2guICBTbwo7 OyB3ZSBoYWQgdG8gZGVjaWRlIGlmIGFub3RoZXIgQy1zIGp1bXBzIHRvIHRoZSBuZXh0IHBhZ2Ug d2l0aCBhCjs7IG1hdGNoICh0aHVzIG9ubHkgdGhlIGZpcnN0IG1hdGNoIGluIGEgcGFnZSB3aWxs IGJlIGRpc3BsYXllZCBpbiBhCjs7IHRvb2x0aXApIG9yIHRvIHRoZSBuZXh0IG1hdGNoLCB3aGlj aCB3b3VsZCBkbyBub3RoaW5nIHZpc2libGUKOzsgKGV4Y2VwdCB0aGUgdG9vbHRpcCkgaWYgdGhl IG5leHQgbWF0Y2ggaXMgb24gdGhlIHNhbWUgcGFnZS4KCjs7IEFuZCBpdCdzIG11Y2ggc2xvd2Vy IHRoYW4gdGhlIGN1cnJlbnQgc2VhcmNoIGZhY2lsaXR5LCBiZWNhdXNlCjs7IGlzZWFyY2ggcmVh bGx5IHNlYXJjaGVzIGZvciBlYWNoIHN0ZXAgZm9yd2FyZCBvciBiYWNrd2FyZCB3aGVyZWFzCjs7 IHRoZSBjdXJyZW50IGFwcHJvYWNoIHNlYXJjaGVzIG9uY2UgYW5kIHRoZW4gaXQga25vd3MgdG8g d2hpY2gKOzsgcGFnZXMgdG8ganVtcC4KCjs7IEFueXdheSwgaWYgc29tZW9uZSB3aXRoIGJldHRl ciBpc2VhcmNoIGtub3dsZWRnZSB3YW50cyB0byBnaXZlIGl0IGEgdHJ5LAo7OyBmZWVsIGZyZWUg dG8gZG8gaXQuICAtLVRhc3NpbG8KCjs7OyBDb2RlOgoKKHJlcXVpcmUgJ2NsLWxpYikKKHJlcXVp cmUgJ2RpcmVkKQoocmVxdWlyZSAnaW1hZ2UtbW9kZSkKKHJlcXVpcmUgJ2prYS1jb21wcikKKGV2 YWwtd2hlbi1jb21waWxlIChyZXF1aXJlICdzdWJyLXgpKQoKOzs7OyBDdXN0b21pemF0aW9uIE9w dGlvbnMKCihkZWZncm91cCBkb2MtdmlldyBuaWwKICAiSW4tYnVmZmVyIGRvY3VtZW50IHZpZXdl ci4KVGhlIHZpZXdlciBoYW5kbGVzIFBERiwgUG9zdFNjcmlwdCwgRFZJLCBESlZVLCBPREYsIEVQ VUIsIENCWiwKRkIyLCBYUFMgYW5kIE9YUFMgZmlsZXMsIGlmIHRoZSBhcHByb3ByaWF0ZSBjb252 ZXJ0ZXIgcHJvZ3JhbXMKYXJlIGF2YWlsYWJsZSAoc2VlIEluZm8gbm9kZSBgKGVtYWNzKURvY3Vt ZW50IFZpZXcnKSIKICA6bGluayAnKGZ1bmN0aW9uLWxpbmsgZG9jLXZpZXcpCiAgOnZlcnNpb24g IjIyLjIiCiAgOmdyb3VwICdhcHBsaWNhdGlvbnMKICA6Z3JvdXAgJ2RhdGEKICA6Z3JvdXAgJ211 bHRpbWVkaWEKICA6cHJlZml4ICJkb2Mtdmlldy0iKQoKKGRlZmN1c3RvbSBkb2Mtdmlldy1naG9z dHNjcmlwdC1wcm9ncmFtCiAgKGNvbmQKICAgKChtZW1xIHN5c3RlbS10eXBlICcod2luZG93cy1u dCBtcy1kb3MpKQogICAgKGNvbmQKICAgICA7OyBXaW5kb3dzIEdob3N0c2NyaXB0CiAgICAgKChl eGVjdXRhYmxlLWZpbmQgImdzd2luNjRjIikgImdzd2luNjRjIikKICAgICAoKGV4ZWN1dGFibGUt ZmluZCAiZ3N3aW4zMmMiKSAiZ3N3aW4zMmMiKQogICAgIDs7IFRoZSBHUyB3cmFwcGVyIGNvbWlu ZyB3aXRoIFRlWCBMaXZlCiAgICAgKChleGVjdXRhYmxlLWZpbmQgInJ1bmdzIikgInJ1bmdzIikK ICAgICA7OyBUaGUgTWlrVGVYIGJ1aWx0aW4gR1MgQ2hlY2sgaWYgbWdzIGlzIGZ1bmN0aW9uYWwg Zm9yIGV4dGVybmFsCiAgICAgOzsgbm9uLU1pa1RlWCBhcHBzLiAgV2FzIGF2YWlsYWJsZSB1bmRl cjoKICAgICA7OyBodHRwOi8vYmxvZy5taWt0ZXgub3JnL3Bvc3QvMjAwNS8wNC8wNy9TdGFydGlu Zy1tZ3NleGUtYXQtdGhlLURPUy1Qcm9tcHQuYXNweAogICAgICgoYW5kIChleGVjdXRhYmxlLWZp bmQgIm1ncyIpCiAgICAgICAgICAgKD0gMCAoc2hlbGwtY29tbWFuZCAibWdzIC1xIC1kTk9ESVNQ TEFZIC1jIHF1aXQiKSkpCiAgICAgICJtZ3MiKSkpCiAgICh0ICJncyIpKQogICJQcm9ncmFtIHRv IGNvbnZlcnQgUFMgYW5kIFBERiBmaWxlcyB0byBQTkcuIgogIDp0eXBlICdmaWxlCiAgOnZlcnNp b24gIjI3LjEiKQoKKGRlZmN1c3RvbSBkb2Mtdmlldy1wZGZkcmF3LXByb2dyYW0KICAoY29uZAog ICAoKGV4ZWN1dGFibGUtZmluZCAicGRmZHJhdyIpICJwZGZkcmF3IikKICAgKChleGVjdXRhYmxl LWZpbmQgIm11ZHJhdyIpICJtdWRyYXciKQogICAoKGV4ZWN1dGFibGUtZmluZCAibXV0b29sIikg Im11dG9vbCIpCiAgICh0ICJtdWRyYXciKSkKICAiTmFtZSBvZiBNdVBERidzIHByb2dyYW0gdG8g Y29udmVydCBQREYgZmlsZXMgdG8gUE5HLiIKICA6dHlwZSAnZmlsZQogIDp2ZXJzaW9uICIyNC40 IikKCihkZWZjdXN0b20gZG9jLXZpZXctcGRmdG90ZXh0LXByb2dyYW0tYXJncyAnKCItcmF3IikK ICAiUGFyYW1ldGVycyB0byBnaXZlIHRvIHRoZSBwZGZ0b3RleHQgY29tbWFuZC4iCiAgOnZlcnNp b24gIjI3LjEiCiAgOnR5cGUgJyhyZXBlYXQgc3RyaW5nKSkKCihkZWZjdXN0b20gZG9jLXZpZXct cGRmLT5wbmctY29udmVydGVyLWZ1bmN0aW9uCiAgKGlmIChleGVjdXRhYmxlLWZpbmQgZG9jLXZp ZXctcGRmZHJhdy1wcm9ncmFtKQogICAgICAjJ2RvYy12aWV3LXBkZi0+cG5nLWNvbnZlcnRlci1t dXBkZgogICAgIydkb2Mtdmlldy1wZGYtPnBuZy1jb252ZXJ0ZXItZ2hvc3RzY3JpcHQpCiAgIkZ1 bmN0aW9uIHRvIGNhbGwgdG8gY29udmVydCBhIFBERiBmaWxlIGludG8gYSBQTkcgZmlsZS4iCiAg OnR5cGUgJyhyYWRpbwogICAgICAgICAgKGZ1bmN0aW9uLWl0ZW0gZG9jLXZpZXctcGRmLT5wbmct Y29udmVydGVyLWdob3N0c2NyaXB0CiAgICAgICAgICAgICAgICAgICAgICAgICA6ZG9jICJVc2Ug Z2hvc3RzY3JpcHQiKQogICAgICAgICAgKGZ1bmN0aW9uLWl0ZW0gZG9jLXZpZXctcGRmLT5wbmct Y29udmVydGVyLW11cGRmCiAgICAgICAgICAgICAgICAgICAgICAgICA6ZG9jICJVc2UgbXVwZGYi KQogICAgICAgICAgZnVuY3Rpb24pCiAgOnZlcnNpb24gIjI0LjQiKQoKKGRlZmN1c3RvbSBkb2Mt dmlldy1naG9zdHNjcmlwdC1vcHRpb25zCiAgJygiLWRTQUZFUiIgOzsgQXZvaWQgc2VjdXJpdHkg cHJvYmxlbXMgd2hlbiByZW5kZXJpbmcgZmlsZXMgZnJvbSB1bnRydXN0ZWQKICAgIDs7IHNvdXJj ZXMuCiAgICAiLWROT1BBVVNFIiAiLWRUZXh0QWxwaGFCaXRzPTQiCiAgICAiLWRCQVRDSCIgIi1k R3JhcGhpY3NBbHBoYUJpdHM9NCIgIi1kUVVJRVQiKQogICJBIGxpc3Qgb2Ygb3B0aW9ucyB0byBn aXZlIHRvIGdob3N0c2NyaXB0LiIKICA6dHlwZSAnKHJlcGVhdCBzdHJpbmcpKQoKKGRlZmN1c3Rv bSBkb2Mtdmlldy1naG9zdHNjcmlwdC1kZXZpY2UgInBuZzE2bSIKICAiT3V0cHV0IGRldmljZSB0 byBnaXZlIHRvIGdob3N0c2NyaXB0LiIKICA6dHlwZSAnc3RyaW5nCiAgOnZlcnNpb24gIjI3LjEi KQoKKGRlZmN1c3RvbSBkb2Mtdmlldy1yZXNvbHV0aW9uIDEwMAogICJEb3RzIHBlciBpbmNoIHJl c29sdXRpb24gdXNlZCB0byByZW5kZXIgdGhlIGRvY3VtZW50cy4KSGlnaGVyIHZhbHVlcyByZXN1 bHQgaW4gbGFyZ2VyIGltYWdlcy4iCiAgOnR5cGUgJ251bWJlcikKCihkZWZjdXN0b20gZG9jLXZp ZXctbXV0b29sLXVzZXItc3R5bGVzaGVldCBuaWwKICAiVXNlciBzdHlsZXNoZWV0IHRvIHVzZSB3 aGVuIGNvbnZlcnRpbmcgRVBVQiBkb2N1bWVudHMgdG8gUERGLiIKICA6dHlwZSAnKGNob2ljZSAo Y29uc3QgbmlsKQogICAgICAgICAgICAgICAgIChmaWxlIDptdXN0LW1hdGNoIHQpKQogIDp2ZXJz aW9uICIyOS4xIikKCihkZWZ2YXIgZG9jLXZpZXctZG9jLXR5cGUgbmlsCiAgIlRoZSB0eXBlIG9m IGRvY3VtZW50IGluIHRoZSBjdXJyZW50IGJ1ZmZlci4KQ2FuIGJlIGBkdmknLCBgcGRmJywgYHBz JywgYGRqdnUnLCBgb2RmJywgYGVwdWInLCBgY2J6JywgYGZiMicsCmB4cHMnIG9yIGBveHBzJy4i KQoKOzsgRklYTUU6IFRoZSBkb2Mtdmlldy1jdXJyZW50LSogZGVmaW5pdGlvbnMgYmVsb3cgYXJl IG1hY3JvcyBiZWNhdXNlIHRoZXkKOzsgbWFwIHRvIGFjY2Vzc29ycyB3aGljaCB3ZSB3YW50IHRv IHVzZSB2aWEgYHNldGYnIGFzIHdlbGwhCihkZWZtYWNybyBkb2Mtdmlldy1jdXJyZW50LXBhZ2Ug KCZvcHRpb25hbCB3aW4pCiAgYChpbWFnZS1tb2RlLXdpbmRvdy1nZXQgJ3BhZ2UgLHdpbikpCihk ZWZtYWNybyBkb2Mtdmlldy1jdXJyZW50LWluZm8gKCkgJyhpbWFnZS1tb2RlLXdpbmRvdy1nZXQg J2luZm8pKQooZGVmbWFjcm8gZG9jLXZpZXctY3VycmVudC1vdmVybGF5ICgpICcoaW1hZ2UtbW9k ZS13aW5kb3ctZ2V0ICdvdmVybGF5KSkKKGRlZm1hY3JvIGRvYy12aWV3LWN1cnJlbnQtaW1hZ2Ug KCkgJyhpbWFnZS1tb2RlLXdpbmRvdy1nZXQgJ2ltYWdlKSkKKGRlZm1hY3JvIGRvYy12aWV3LWN1 cnJlbnQtc2xpY2UgKCkgJyhpbWFnZS1tb2RlLXdpbmRvdy1nZXQgJ3NsaWNlKSkKCihkZWZ2YXIt bG9jYWwgZG9jLXZpZXctLWN1cnJlbnQtY2FjaGUtZGlyIG5pbAogICJPbmx5IHVzZWQgaW50ZXJu YWxseS4iKQoKKGRlZnVuIGRvYy12aWV3LWN1c3RvbS1zZXQtZXB1Yi1mb250LXNpemUgKG9wdGlv bi1uYW1lIG5ldy12YWx1ZSkKICAoc2V0LWRlZmF1bHQgb3B0aW9uLW5hbWUgbmV3LXZhbHVlKQog IChkb2xpc3QgKHggKGJ1ZmZlci1saXN0KSkKICAgICh3aXRoLWN1cnJlbnQtYnVmZmVyIHgKICAg ICAgKHdoZW4gKGVxIGRvYy12aWV3LWRvYy10eXBlICdlcHViKQogICAgICAgIChkZWxldGUtZGly ZWN0b3J5IGRvYy12aWV3LS1jdXJyZW50LWNhY2hlLWRpciB0KQogICAgICAgIChkb2Mtdmlldy1p bml0aWF0ZS1kaXNwbGF5KQogICAgICAgIChkb2Mtdmlldy1nb3RvLXBhZ2UgKGRvYy12aWV3LWN1 cnJlbnQtcGFnZSkpKSkpKQoKKGRlZmN1c3RvbSBkb2Mtdmlldy1lcHViLWZvbnQtc2l6ZSBuaWwK ICAiRm9udCBzaXplIGluIHBvaW50cyBmb3IgRVBVQiBsYXlvdXQuIgogIDp0eXBlICcoY2hvaWNl IChjb25zdCBuaWwpIGludGVnZXIpCiAgOnNldCAjJ2RvYy12aWV3LWN1c3RvbS1zZXQtZXB1Yi1m b250LXNpemUKICA6dmVyc2lvbiAiMjkuMSIpCgooZGVmY3VzdG9tIGRvYy12aWV3LXNjYWxlLWlu dGVybmFsbHkgdAogICJXaGV0aGVyIHdlIHNob3VsZCB0cnkgdG8gcmVzY2FsZSBpbWFnZXMgb3Vy c2VsdmVzLgpJZiBuaWwsIHRoZSBkb2N1bWVudCBpcyByZS1yZW5kZXJlZCBldmVyeSB0aW1lIHRo ZSBzY2FsaW5nIGZhY3RvciBpcyBtb2RpZmllZC4KVGhpcyBvbmx5IGhhcyBhbiBlZmZlY3QgaWYg dGhlIGltYWdlIGxpYnJhcmllcyBsaW5rZWQgd2l0aCBFbWFjcyBzdXBwb3J0CnNjYWxpbmcuIgog IDp2ZXJzaW9uICIyNC40IgogIDp0eXBlICdib29sZWFuKQoKKGRlZmN1c3RvbSBkb2Mtdmlldy1p bWFnZS13aWR0aCA4NTAKICAiRGVmYXVsdCBpbWFnZSB3aWR0aC4KSGFzIG9ubHkgYW4gZWZmZWN0 IGlmIGBkb2Mtdmlldy1zY2FsZS1pbnRlcm5hbGx5JyBpcyBub24tbmlsIGFuZCBzdXBwb3J0IGZv cgpzY2FsaW5nIGlzIGNvbXBpbGVkIGludG8gRW1hY3MuIgogIDp2ZXJzaW9uICIyNC4xIgogIDp0 eXBlICdudW1iZXIpCgooZGVmY3VzdG9tIGRvYy12aWV3LWR2aXBkZm0tcHJvZ3JhbSAiZHZpcGRm bSIKICAiUHJvZ3JhbSB0byBjb252ZXJ0IERWSSBmaWxlcyB0byBQREYuCgpEVkkgZmlsZSB3aWxs IGJlIGNvbnZlcnRlZCB0byBQREYgYmVmb3JlIHRoZSByZXN1bHRpbmcgUERGIGlzCmNvbnZlcnRl ZCB0byBQTkcuCgpJZiB0aGlzIGFuZCBgZG9jLXZpZXctZHZpcGRmLXByb2dyYW0nIGFyZSBzZXQs CmBkb2Mtdmlldy1kdmlwZGYtcHJvZ3JhbScgd2lsbCBiZSBwcmVmZXJyZWQuIgogIDp0eXBlICdm aWxlKQoKKGRlZmN1c3RvbSBkb2Mtdmlldy1kdmlwZGYtcHJvZ3JhbSAiZHZpcGRmIgogICJQcm9n cmFtIHRvIGNvbnZlcnQgRFZJIGZpbGVzIHRvIFBERi4KCkRWSSBmaWxlIHdpbGwgYmUgY29udmVy dGVkIHRvIFBERiBiZWZvcmUgdGhlIHJlc3VsdGluZyBQREYgaXMKY29udmVydGVkIHRvIFBORy4K CklmIHRoaXMgYW5kIGBkb2Mtdmlldy1kdmlwZGZtLXByb2dyYW0nIGFyZSBzZXQsCmBkb2Mtdmll dy1kdmlwZGYtcHJvZ3JhbScgd2lsbCBiZSBwcmVmZXJyZWQuIgogIDp0eXBlICdmaWxlKQoKKGRl ZmluZS1vYnNvbGV0ZS12YXJpYWJsZS1hbGlhcyAnZG9jLXZpZXctdW5vY29udi1wcm9ncmFtICdk b2Mtdmlldy1vZGYtPnBkZi1jb252ZXJ0ZXItcHJvZ3JhbSAiMjQuNCIpCgooZGVmY3VzdG9tIGRv Yy12aWV3LW9kZi0+cGRmLWNvbnZlcnRlci1wcm9ncmFtCiAgKGNvbmQKICAgKChleGVjdXRhYmxl LWZpbmQgInNvZmZpY2UiKSAic29mZmljZSIpCiAgICgoZXhlY3V0YWJsZS1maW5kICJ1bm9jb252 IikgInVub2NvbnYiKQogICAodCAic29mZmljZSIpKQogICJQcm9ncmFtIHRvIGNvbnZlcnQgYW55 IGZpbGUgdHlwZSByZWFkYWJsZSBieSBPcGVuT2ZmaWNlLm9yZyB0byBQREYuCgpOZWVkZWQgZm9y IHZpZXdpbmcgT3Blbk9mZmljZS5vcmcgKGFuZCBNUyBPZmZpY2UpIGZpbGVzLiIKICA6dmVyc2lv biAiMjQuNCIKICA6dHlwZSAnZmlsZSkKCihkZWZjdXN0b20gZG9jLXZpZXctb2RmLT5wZGYtY29u dmVydGVyLWZ1bmN0aW9uCiAgKGNvbmQKICAgKChzdHJpbmctbWF0Y2ggInVub2NvbnZcXCciIGRv Yy12aWV3LW9kZi0+cGRmLWNvbnZlcnRlci1wcm9ncmFtKQogICAgIydkb2Mtdmlldy1vZGYtPnBk Zi1jb252ZXJ0ZXItdW5vY29udikKICAgKChzdHJpbmctbWF0Y2ggInNvZmZpY2VcXCciIGRvYy12 aWV3LW9kZi0+cGRmLWNvbnZlcnRlci1wcm9ncmFtKQogICAgIydkb2Mtdmlldy1vZGYtPnBkZi1j b252ZXJ0ZXItc29mZmljZSkpCiAgIkZ1bmN0aW9uIHRvIGNhbGwgdG8gY29udmVydCBhIE9ERiBm aWxlIGludG8gYSBQREYgZmlsZS4iCiAgOnR5cGUgJyhyYWRpbwogICAgICAgICAgKGZ1bmN0aW9u LWl0ZW0gZG9jLXZpZXctb2RmLT5wZGYtY29udmVydGVyLXVub2NvbnYKICAgICAgICAgICAgICAg ICAgICAgICAgIDpkb2MgIlVzZSB1bm9jb252IikKICAgICAgICAgIChmdW5jdGlvbi1pdGVtIGRv Yy12aWV3LW9kZi0+cGRmLWNvbnZlcnRlci1zb2ZmaWNlCiAgICAgICAgICAgICAgICAgICAgICAg ICA6ZG9jICJVc2UgTGlicmVPZmZpY2UiKQogICAgICAgICAgZnVuY3Rpb24pCiAgOnZlcnNpb24g IjI0LjQiKQoKKGRlZmN1c3RvbSBkb2Mtdmlldy1wczJwZGYtcHJvZ3JhbSAicHMycGRmIgogICJQ cm9ncmFtIHRvIGNvbnZlcnQgUFMgZmlsZXMgdG8gUERGLgoKUFMgZmlsZXMgd2lsbCBiZSBjb252 ZXJ0ZWQgdG8gUERGIGJlZm9yZSBzZWFyY2hpbmcgaXMgcG9zc2libGUuIgogIDp0eXBlICdmaWxl KQoKKGRlZmN1c3RvbSBkb2Mtdmlldy1wZGZ0b3RleHQtcHJvZ3JhbSAicGRmdG90ZXh0IgogICJQ cm9ncmFtIHRvIGNvbnZlcnQgUERGIGZpbGVzIHRvIHBsYWluIHRleHQuCgpOZWVkZWQgZm9yIHNl YXJjaGluZy4iCiAgOnR5cGUgJ2ZpbGUpCgooZGVmY3VzdG9tIGRvYy12aWV3LWNhY2hlLWRpcmVj dG9yeQogIChleHBhbmQtZmlsZS1uYW1lIChmb3JtYXQgImRvY3ZpZXclZCIgKHVzZXItdWlkKSkK CQkgICAgdGVtcG9yYXJ5LWZpbGUtZGlyZWN0b3J5KQogICJUaGUgYmFzZSBkaXJlY3RvcnksIHdo ZXJlIHRoZSBQTkcgaW1hZ2VzIHdpbGwgYmUgc2F2ZWQuIgogIDp0eXBlICdkaXJlY3RvcnkpCgoo ZGVmdmFyIGRvYy12aWV3LWNvbnZlcnNpb24tYnVmZmVyICIgKmRvYy12aWV3IGNvbnZlcnNpb24g b3V0cHV0KiIKICAiVGhlIGJ1ZmZlciB3aGVyZSBtZXNzYWdlcyBmcm9tIHRoZSBjb252ZXJ0ZXIg cHJvZ3JhbXMgZ28gdG8uIikKCihkZWZjdXN0b20gZG9jLXZpZXctY29udmVyc2lvbi1yZWZyZXNo LWludGVydmFsIDEKICAiSW50ZXJ2YWwgaW4gc2Vjb25kcyBiZXR3ZWVuIHJlZnJlc2hlcyBvZiB0 aGUgRG9jVmlldyBidWZmZXIgd2hpbGUgY29udmVydGluZy4KQWZ0ZXIgc3VjaCBhIHJlZnJlc2gg bmV3bHkgY29udmVydGVkIHBhZ2VzIHdpbGwgYmUgYXZhaWxhYmxlIGZvcgp2aWV3aW5nLiAgSWYg c2V0IHRvIG5pbCB0aGVyZSB3b24ndCBiZSBhbnkgcmVmcmVzaGVzIGFuZCB0aGUKcGFnZXMgd29u J3QgYmUgZGlzcGxheWVkIGJlZm9yZSBjb252ZXJzaW9uIG9mIHRoZSB3aG9sZSBkb2N1bWVudApo YXMgZmluaXNoZWQuIgogIDp0eXBlICdpbnRlZ2VyKQoKKGRlZmN1c3RvbSBkb2Mtdmlldy1jb250 aW51b3VzIG5pbAogICJJbiBDb250aW51b3VzIG1vZGUgcmVhY2hpbmcgdGhlIHBhZ2UgZWRnZSBh ZHZhbmNlcyB0byBuZXh0L3ByZXZpb3VzIHBhZ2UuCldoZW4gbm9uLW5pbCwgc2Nyb2xsaW5nIGEg bGluZSB1cHdhcmQgYXQgdGhlIGJvdHRvbSBlZGdlIG9mIHRoZSBwYWdlCm1vdmVzIHRvIHRoZSBu ZXh0IHBhZ2UsIGFuZCBzY3JvbGxpbmcgYSBsaW5lIGRvd253YXJkIGF0IHRoZSB0b3AgZWRnZQpv ZiB0aGUgcGFnZSBtb3ZlcyB0byB0aGUgcHJldmlvdXMgcGFnZS4iCiAgOnR5cGUgJ2Jvb2xlYW4K ICA6dmVyc2lvbiAiMjMuMiIpCgo7Ozs7IEludGVybmFsIFZhcmlhYmxlcwoKKGRlZnZhci1sb2Nh bCBkb2Mtdmlldy0tY3VycmVudC1jb252ZXJ0ZXItcHJvY2Vzc2VzIG5pbAogICJPbmx5IHVzZWQg aW50ZXJuYWxseS4iKQoKKGRlZnVuIGRvYy12aWV3LW5ldy13aW5kb3ctZnVuY3Rpb24gKHdpbnBy b3BzKQogIDs7IChtZXNzYWdlICJOZXcgd2luZG93ICVzIGZvciBidWYgJXMiIChjYXIgd2lucHJv cHMpIChjdXJyZW50LWJ1ZmZlcikpCiAgKGNsLWFzc2VydCAob3IgKGVxIHQgKGNhciB3aW5wcm9w cykpCiAgICAgICAgICAgICAgICAgKGVxICh3aW5kb3ctYnVmZmVyIChjYXIgd2lucHJvcHMpKSAo Y3VycmVudC1idWZmZXIpKSkpCiAgKGxldCAoKG9sIChpbWFnZS1tb2RlLXdpbmRvdy1nZXQgJ292 ZXJsYXkgd2lucHJvcHMpKSkKICAgIChpZiBvbAogICAgICAgIChwcm9nbgogICAgICAgICAgKHNl dHEgb2wgKGNvcHktb3ZlcmxheSBvbCkpCiAgICAgICAgICA7OyBgb2wnIG1pZ2h0IGFjdHVhbGx5 IGJlIGRlYWQuCiAgICAgICAgICAobW92ZS1vdmVybGF5IG9sIChwb2ludC1taW4pIChwb2ludC1t YXgpKSkKICAgICAgKHNldHEgb2wgKG1ha2Utb3ZlcmxheSAocG9pbnQtbWluKSAocG9pbnQtbWF4 KSBuaWwgdCkpCiAgICAgIChvdmVybGF5LXB1dCBvbCAnZG9jLXZpZXcgdCkpCiAgICAob3Zlcmxh eS1wdXQgb2wgJ3dpbmRvdyAoY2FyIHdpbnByb3BzKSkKICAgICh1bmxlc3MgKHdpbmRvd3AgKGNh ciB3aW5wcm9wcykpCiAgICAgIDs7IEl0J3MgYSBwc2V1ZG8gZW50cnkuICBMZXQncyBtYWtlIHN1 cmUgaXQncyBub3QgZGlzcGxheWVkICh0aGUKICAgICAgOzsgYHdpbmRvdycgcHJvcGVydHkgaXMg b25seSBlZmZlY3RpdmUgaWYgaXRzIHZhbHVlIGlzIGEgd2luZG93KS4KICAgICAgKGNsLWFzc2Vy dCAoZXEgdCAoY2FyIHdpbnByb3BzKSkpCiAgICAgIChkZWxldGUtb3ZlcmxheSBvbCkpCiAgICAo aW1hZ2UtbW9kZS13aW5kb3ctcHV0ICdvdmVybGF5IG9sIHdpbnByb3BzKQogICAgKHdoZW4gKGFu ZCAod2luZG93cCAoY2FyIHdpbnByb3BzKSkKICAgICAgICAgICAgICAgKHN0cmluZ3AgKG92ZXJs YXktZ2V0IG9sICdkaXNwbGF5KSkKICAgICAgICAgICAgICAgKG51bGwgZG9jLXZpZXctLWN1cnJl bnQtY29udmVydGVyLXByb2Nlc3NlcykpCiAgICAgIDs7IFdlJ3JlIG5vdCBkaXNwbGF5aW5nIGFu IGltYWdlIHlldCwgc28gbGV0J3MgZG8gc28uICBUaGlzIGhhcHBlbnMgd2hlbgogICAgICA7OyB0 aGUgYnVmZmVyIGlzIGRpc3BsYXllZCBmb3IgdGhlIGZpcnN0IHRpbWUuCiAgICAgIDs7IERvbid0 IGRvIGl0IGlmIHRoZXJlJ3MgYSBjb252ZXJzaW9uIGlzIHJ1bm5pbmcsIHNpbmNlIGluIHRoYXQg Y2FzZSwgaXQKICAgICAgOzsgd2lsbCBiZSBkb25lIGxhdGVyLgogICAgICAod2l0aC1zZWxlY3Rl ZC13aW5kb3cgKGNhciB3aW5wcm9wcykKICAgICAgICAoZG9jLXZpZXctZ290by1wYWdlIChpbWFn ZS1tb2RlLXdpbmRvdy1nZXQgJ3BhZ2UgdCkpKSkpKQoKKGRlZnZhci1sb2NhbCBkb2Mtdmlldy0t Y3VycmVudC1maWxlcyBuaWwKICAiT25seSB1c2VkIGludGVybmFsbHkuIikKCihkZWZ2YXItbG9j YWwgZG9jLXZpZXctLWN1cnJlbnQtdGltZXIgbmlsCiAgIk9ubHkgdXNlZCBpbnRlcm5hbGx5LiIp CgooZGVmdmFyLWxvY2FsIGRvYy12aWV3LS1jdXJyZW50LXNlYXJjaC1tYXRjaGVzIG5pbAogICJP bmx5IHVzZWQgaW50ZXJuYWxseS4iKQoKKGRlZnZhciBkb2Mtdmlldy0tcGVuZGluZy1jYWNoZS1m bHVzaCBuaWwKICAiT25seSB1c2VkIGludGVybmFsbHkuIikKCihkZWZ2YXIgZG9jLXZpZXctLWJ1 ZmZlci1maWxlLW5hbWUgbmlsCiAgIk9ubHkgdXNlZCBpbnRlcm5hbGx5LgpUaGUgZmlsZSBuYW1l IHVzZWQgZm9yIGNvbnZlcnNpb24uICBOb3JtYWxseSBpdCdzIHRoZSBzYW1lIGFzCmBidWZmZXIt ZmlsZS1uYW1lJywgYnV0IGZvciByZW1vdGUgZmlsZXMsIGNvbXByZXNzZWQgZmlsZXMgYW5kCmZp bGVzIGluc2lkZSBhbiBhcmNoaXZlIGl0IGlzIGEgdGVtcG9yYXJ5IGNvcHkgb2YKdGhlICh1bmNv bXByZXNzZWQsIGV4dHJhY3RlZCkgZmlsZSByZXNpZGluZyBpbgpgZG9jLXZpZXctY2FjaGUtZGly ZWN0b3J5Jy4iKQoKKGRlZnZhciBkb2Mtdmlldy1zaW5nbGUtcGFnZS1jb252ZXJ0ZXItZnVuY3Rp b24gbmlsCiAgIkZ1bmN0aW9uIHRvIGNhbGwgdG8gY29udmVydCBhIHNpbmdsZSBwYWdlIG9mIHRo ZSBkb2N1bWVudCB0byBhIGJpdG1hcCBmaWxlLgpNYXkgb3BlcmF0ZSBvbiB0aGUgc291cmNlIGRv Y3VtZW50IG9yIG9uIHNvbWUgaW50ZXJtZWRpYXRlICh0eXBpY2FsbHkgUERGKQpjb252ZXJzaW9u IG9mIGl0LiIpCgooZGVmdmFyLWxvY2FsIGRvYy12aWV3LS1pbWFnZS10eXBlIG5pbAogICJUaGUg dHlwZSBvZiBpbWFnZSBpbiB0aGUgY3VycmVudCBidWZmZXIuCkNhbiBiZSBgcG5nJyBvciBgdGlm ZicuIikKCihkZWZ2YXItbG9jYWwgZG9jLXZpZXctLWltYWdlLWZpbGUtcGF0dGVybiBuaWwKICAi VGhlIGBmb3JtYXQnIHBhdHRlcm4gb2YgaW1hZ2UgZmlsZSBuYW1lcy4KVHlwaWNhbGx5IFwicGFn ZS0lcy5wbmdcIi4iKQoKOzs7OyBEb2NWaWV3IEtleW1hcHMKCihkZWZ2YXIgZG9jLXZpZXctbW9k ZS1tYXAKICAobGV0ICgobWFwIChtYWtlLXNwYXJzZS1rZXltYXApKSkKICAgIChzZXQta2V5bWFw LXBhcmVudCBtYXAgaW1hZ2UtbW9kZS1tYXApCiAgICA7OyBOYXZpZ2F0aW9uIGluIHRoZSBkb2N1 bWVudAogICAgKGRlZmluZS1rZXkgbWFwIChrYmQgIm4iKSAgICAgICAgICdkb2Mtdmlldy1uZXh0 LXBhZ2UpCiAgICAoZGVmaW5lLWtleSBtYXAgKGtiZCAicCIpICAgICAgICAgJ2RvYy12aWV3LXBy ZXZpb3VzLXBhZ2UpCiAgICAoZGVmaW5lLWtleSBtYXAgKGtiZCAiPG5leHQ+IikgICAgJ2Zvcndh cmQtcGFnZSkKICAgIChkZWZpbmUta2V5IG1hcCAoa2JkICI8cHJpb3I+IikgICAnYmFja3dhcmQt cGFnZSkKICAgIChkZWZpbmUta2V5IG1hcCBbcmVtYXAgZm9yd2FyZC1wYWdlXSAgJ2RvYy12aWV3 LW5leHQtcGFnZSkKICAgIChkZWZpbmUta2V5IG1hcCBbcmVtYXAgYmFja3dhcmQtcGFnZV0gJ2Rv Yy12aWV3LXByZXZpb3VzLXBhZ2UpCiAgICAoZGVmaW5lLWtleSBtYXAgKGtiZCAiU1BDIikgICAg ICAgJ2RvYy12aWV3LXNjcm9sbC11cC1vci1uZXh0LXBhZ2UpCiAgICAoZGVmaW5lLWtleSBtYXAg KGtiZCAiUy1TUEMiKSAgICAgJ2RvYy12aWV3LXNjcm9sbC1kb3duLW9yLXByZXZpb3VzLXBhZ2Up CiAgICAoZGVmaW5lLWtleSBtYXAgKGtiZCAiREVMIikgICAgICAgJ2RvYy12aWV3LXNjcm9sbC1k b3duLW9yLXByZXZpb3VzLXBhZ2UpCiAgICAoZGVmaW5lLWtleSBtYXAgKGtiZCAiQy1uIikgICAg ICAgJ2RvYy12aWV3LW5leHQtbGluZS1vci1uZXh0LXBhZ2UpCiAgICAoZGVmaW5lLWtleSBtYXAg KGtiZCAiPGRvd24+IikgICAgJ2RvYy12aWV3LW5leHQtbGluZS1vci1uZXh0LXBhZ2UpCiAgICAo ZGVmaW5lLWtleSBtYXAgKGtiZCAiQy1wIikgICAgICAgJ2RvYy12aWV3LXByZXZpb3VzLWxpbmUt b3ItcHJldmlvdXMtcGFnZSkKICAgIChkZWZpbmUta2V5IG1hcCAoa2JkICI8dXA+IikgICAgICAn ZG9jLXZpZXctcHJldmlvdXMtbGluZS1vci1wcmV2aW91cy1wYWdlKQogICAgKGRlZmluZS1rZXkg bWFwIChrYmQgIk0tPCIpICAgICAgICdkb2Mtdmlldy1maXJzdC1wYWdlKQogICAgKGRlZmluZS1r ZXkgbWFwIChrYmQgIk0tPiIpICAgICAgICdkb2Mtdmlldy1sYXN0LXBhZ2UpCiAgICAoZGVmaW5l LWtleSBtYXAgW3JlbWFwIGdvdG8tbGluZV0gJ2RvYy12aWV3LWdvdG8tcGFnZSkKICAgIChkZWZp bmUta2V5IG1hcCAoa2JkICJSRVQiKSAgICAgICAnaW1hZ2UtbmV4dC1saW5lKQogICAgOzsgWm9v bSBpbi9vdXQuCiAgICAoZGVmaW5lLWtleSBtYXAgIisiICAgICAgICAgICAgICAgJ2RvYy12aWV3 LWVubGFyZ2UpCiAgICAoZGVmaW5lLWtleSBtYXAgIj0iICAgICAgICAgICAgICAgJ2RvYy12aWV3 LWVubGFyZ2UpCiAgICAoZGVmaW5lLWtleSBtYXAgIi0iICAgICAgICAgICAgICAgJ2RvYy12aWV3 LXNocmluaykKICAgIChkZWZpbmUta2V5IG1hcCAiMCIgICAgICAgICAgICAgICAnZG9jLXZpZXct c2NhbGUtcmVzZXQpCiAgICAoZGVmaW5lLWtleSBtYXAgW3JlbWFwIHRleHQtc2NhbGUtYWRqdXN0 XSAnZG9jLXZpZXctc2NhbGUtYWRqdXN0KQogICAgOzsgRml0IHRoZSBpbWFnZSB0byB0aGUgd2lu ZG93CiAgICAoZGVmaW5lLWtleSBtYXAgIlciICAgICAgICAgICAgICAgJ2RvYy12aWV3LWZpdC13 aWR0aC10by13aW5kb3cpCiAgICAoZGVmaW5lLWtleSBtYXAgIkgiICAgICAgICAgICAgICAgJ2Rv Yy12aWV3LWZpdC1oZWlnaHQtdG8td2luZG93KQogICAgKGRlZmluZS1rZXkgbWFwICJQIiAgICAg ICAgICAgICAgICdkb2Mtdmlldy1maXQtcGFnZS10by13aW5kb3cpCiAgICAoZGVmaW5lLWtleSBt YXAgIkYiICAgICAgICAgICAgICAgJ2RvYy12aWV3LWZpdC13aW5kb3ctdG8tcGFnZSkgO0YgPSBm cmFtZQogICAgOzsgS2lsbGluZyB0aGUgYnVmZmVyIChhbmQgdGhlIHByb2Nlc3MpCiAgICAoZGVm aW5lLWtleSBtYXAgKGtiZCAiayIpICAgICAgICAgJ2ltYWdlLWtpbGwtYnVmZmVyKQogICAgKGRl ZmluZS1rZXkgbWFwIChrYmQgIksiKSAgICAgICAgICdkb2Mtdmlldy1raWxsLXByb2MpCiAgICA7 OyBTbGljaW5nIHRoZSBpbWFnZQogICAgKGRlZmluZS1rZXkgbWFwIChrYmQgImMgcyIpICAgICAg ICdkb2Mtdmlldy1zZXQtc2xpY2UpCiAgICAoZGVmaW5lLWtleSBtYXAgKGtiZCAiYyBtIikgICAg ICAgJ2RvYy12aWV3LXNldC1zbGljZS11c2luZy1tb3VzZSkKICAgIChkZWZpbmUta2V5IG1hcCAo a2JkICJjIGIiKSAgICAgICAnZG9jLXZpZXctc2V0LXNsaWNlLWZyb20tYm91bmRpbmctYm94KQog ICAgKGRlZmluZS1rZXkgbWFwIChrYmQgImMgciIpICAgICAgICdkb2Mtdmlldy1yZXNldC1zbGlj ZSkKICAgIDs7IENlbnRlcmluZyB0aGUgaW1hZ2UKICAgIChkZWZpbmUta2V5IG1hcCAoa2JkICJj IGgiKSAgICAgICAnZG9jLXZpZXctY2VudGVyLXBhZ2UtaG9yaXpvbnRhbGx5KQogICAgKGRlZmlu ZS1rZXkgbWFwIChrYmQgImMgdiIpICAgICAgICdkb2Mtdmlldy1jZW50ZXItcGFnZS12ZXJ0aWNh bGx5KQogICAgOzsgU2VhcmNoaW5nCiAgICAoZGVmaW5lLWtleSBtYXAgKGtiZCAiQy1zIikgICAg ICAgJ2RvYy12aWV3LXNlYXJjaCkKICAgIChkZWZpbmUta2V5IG1hcCAoa2JkICI8ZmluZD4iKSAg ICAnZG9jLXZpZXctc2VhcmNoKQogICAgKGRlZmluZS1rZXkgbWFwIChrYmQgIkMtciIpICAgICAg ICdkb2Mtdmlldy1zZWFyY2gtYmFja3dhcmQpCiAgICA7OyBTaG93IHRoZSB0b29sdGlwCiAgICAo ZGVmaW5lLWtleSBtYXAgKGtiZCAiQy10IikgICAgICAgJ2RvYy12aWV3LXNob3ctdG9vbHRpcCkK ICAgIDs7IFRvZ2dsZSBiZXR3ZWVuIHRleHQgYW5kIGltYWdlIGRpc3BsYXkgb3IgZWRpdGluZwog ICAgKGRlZmluZS1rZXkgbWFwIChrYmQgIkMtYyBDLWMiKSAgICdkb2Mtdmlldy10b2dnbGUtZGlz cGxheSkKICAgIDs7IE9wZW4gYSBuZXcgYnVmZmVyIHdpdGggZG9jJ3MgdGV4dCBjb250ZW50cwog ICAgKGRlZmluZS1rZXkgbWFwIChrYmQgIkMtYyBDLXQiKSAgICdkb2Mtdmlldy1vcGVuLXRleHQp CiAgICAoZGVmaW5lLWtleSBtYXAgKGtiZCAiciIpICAgICAgICAgJ3JldmVydC1idWZmZXIpCiAg ICBtYXApCiAgIktleW1hcCB1c2VkIGJ5IGBkb2Mtdmlldy1tb2RlJyB3aGVuIGRpc3BsYXlpbmcg YSBkb2MgYXMgYSBzZXQgb2YgaW1hZ2VzLiIpCgooZGVmaW5lLW9ic29sZXRlLWZ1bmN0aW9uLWFs aWFzICdkb2Mtdmlldy1yZXZlcnQtYnVmZmVyICMncmV2ZXJ0LWJ1ZmZlciAiMjcuMSIpCihkZWZ2 YXIgcmV2ZXJ0LWJ1ZmZlci1wcmVzZXJ2ZS1tb2RlcykKKGRlZnVuIGRvYy12aWV3LS1yZXZlcnQt YnVmZmVyIChvcmlnLWZ1biAmcmVzdCBhcmdzKQogICJQcmVzZXJ2ZSB0aGUgYnVmZmVyJ3MgY3Vy cmVudCBtb2RlIGFuZCBjaGVjayBQREYgc2FuaXR5LiIKICAoaWYgKDwgdW5kby1vdXRlci1saW1p dCAoKiAyIChidWZmZXItc2l6ZSkpKQogICAgICA7OyBJdCdzIG5vcm1hbCBmb3IgdGhpcyBvcGVy YXRpb24gdG8gcmVzdWx0IGluIGEgdmVyeSBsYXJnZSB1bmRvIGVudHJ5LgogICAgICAoc2V0cS1s b2NhbCB1bmRvLW91dGVyLWxpbWl0ICgqIDIgKGJ1ZmZlci1zaXplKSkpKQogIChjbC1sYWJlbHMg KChyZXZlcnQgKCkKICAgICAgICAgICAgICAgIChsZXQgKChyZXZlcnQtYnVmZmVyLXByZXNlcnZl LW1vZGVzIHQpKQogICAgICAgICAgICAgICAgICAoYXBwbHkgb3JpZy1mdW4gYXJncykKICAgICAg ICAgICAgICAgICAgOzsgVXBkYXRlIHRoZSBjYWNoZWQgdmVyc2lvbiBvZiB0aGUgcGRmIGZpbGUs CiAgICAgICAgICAgICAgICAgIDs7IHRvby4gIFRoaXMgaXMgdGhlIG9uZSB0aGF0J3MgdXNlZCB3 aGVuCiAgICAgICAgICAgICAgICAgIDs7IHJlbmRlcmluZyAoYnVnIzI2OTk2KS4KICAgICAgICAg ICAgICAgICAgKHVubGVzcyAoZXF1YWwgYnVmZmVyLWZpbGUtbmFtZQogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBkb2Mtdmlldy0tYnVmZmVyLWZpbGUtbmFtZSkKICAgICAgICAgICAg ICAgICAgICA7OyBGSVhNRTogTGFycyBzYXlzIGhlIG5lZWRlZCB0byByZWNyZWF0ZQogICAgICAg ICAgICAgICAgICAgIDs7IHRoZSBkaXIsIHdlIHNob3VsZCBmaWd1cmUgb3V0IHdoeS4KICAgICAg ICAgICAgICAgICAgICAoZG9jLXZpZXctbWFrZS1zYWZlLWRpciBkb2Mtdmlldy1jYWNoZS1kaXJl Y3RvcnkpCiAgICAgICAgICAgICAgICAgICAgKHdyaXRlLXJlZ2lvbiBuaWwgbmlsIGRvYy12aWV3 LS1idWZmZXItZmlsZS1uYW1lKSkpKSkKICAgIChpZiAoYW5kIChlcSAncGRmIGRvYy12aWV3LWRv Yy10eXBlKQogICAgICAgICAgICAgKGV4ZWN1dGFibGUtZmluZCAicGRmaW5mbyIpKQogICAgICAg IDs7IFdlIGRvbid0IHdhbnQgdG8gcmV2ZXJ0IGlmIHRoZSBQREYgZmlsZSBpcyBjb3JydXB0ZWQg d2hpY2gKICAgICAgICA7OyBtaWdodCBoYXBwZW4gd2hlbiBpdCBpcyBjdXJyZW50bHkgcmVjb21w aWxlZCBmcm9tIGEgdGV4CiAgICAgICAgOzsgZmlsZS4gIChUT0RPOiBXZSdkIGxpa2UgdG8gaGF2 ZSBzb21ldGhpbmcgbGlrZSB0aGF0IGFsc28KICAgICAgICA7OyBmb3Igb3RoZXIgdHlwZXMsIGF0 IGxlYXN0IFBTLCBidXQgSSBkb24ndCBrbm93IGEgZ29vZCB3YXkKICAgICAgICA7OyB0byB0ZXN0 IGlmIGEgUFMgZmlsZSBpcyBjb21wbGV0ZS4pCiAgICAgICAgKGlmICg9IDAgKGNhbGwtcHJvY2Vz cyAicGRmaW5mbyIgbmlsIG5pbCBuaWwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRv Yy12aWV3LS1idWZmZXItZmlsZS1uYW1lKSkKICAgICAgICAgICAgKHJldmVydCkKICAgICAgICAg ICh3aGVuIChjYWxsZWQtaW50ZXJhY3RpdmVseS1wICdpbnRlcmFjdGl2ZSkKICAgICAgICAgICAg KG1lc3NhZ2UgIkNhbid0IHJldmVydCByaWdodCBub3cgYmVjYXVzZSB0aGUgZmlsZSBpcyBjb3Jy dXB0ZWQuIikpKQogICAgICAocmV2ZXJ0KSkpKQoKCihlYXN5LW1lbnUtZGVmaW5lIGRvYy12aWV3 LW1lbnUgZG9jLXZpZXctbW9kZS1tYXAKICAiTWVudSBmb3IgRG9jIFZpZXcgbW9kZS4iCiAgJygi RG9jVmlldyIKICAgIFsiTmV4dCBwYWdlIiAgICAgICAgICAgICAgICBkb2Mtdmlldy1uZXh0LXBh Z2UKICAgICA6aGVscCAgICAgICAgICAgICAgICAgICAgICAiR28gdG8gdGhlIG5leHQgcGFnZSJd CiAgICBbIlByZXZpb3VzIHBhZ2UiICAgICAgICAgICAgZG9jLXZpZXctcHJldmlvdXMtcGFnZQog ICAgIDpoZWxwICAgICAgICAgICAgICAgICAgICAgICJHbyB0byB0aGUgcHJldmlvdXMgcGFnZSJd CiAgICAoIk90aGVyIE5hdmlnYXRpb24iCiAgICAgWyJHbyB0byBwYWdlLi4uIiAgICAgICAgICAg ZG9jLXZpZXctZ290by1wYWdlCiAgICAgIDpoZWxwICAgICAgICAgICAgICAgICAgICAgIkdvIHRv IHNwZWNpZmljIHBhZ2UiXQogICAgICItLS0iCiAgICAgWyJGaXJzdCBwYWdlIiAgICAgICAgICAg ICAgZG9jLXZpZXctZmlyc3QtcGFnZQogICAgICA6aGVscCAgICAgICAgICAgICAgICAgICAgICJW aWV3IHRoZSBmaXJzdCBwYWdlIl0KICAgICBbIkxhc3QgcGFnZSIgICAgICAgICAgICAgICBkb2Mt dmlldy1sYXN0LXBhZ2UKICAgICAgOmhlbHAgICAgICAgICAgICAgICAgICAgICAiVmlldyB0aGUg bGFzdCBwYWdlIl0KICAgICAiLS0tIgogICAgIFsiTW92ZSBmb3J3YXJkIiAgICAgICAgICAgIGRv Yy12aWV3LXNjcm9sbC11cC1vci1uZXh0LXBhZ2UKICAgICAgOmhlbHAgICAgICAgICAgICAgICAg ICAgICAiU2Nyb2xsIHBhZ2UgdXAgb3IgZ28gdG8gbmV4dCBwYWdlIl0KICAgICBbIk1vdmUgYmFj a3dhcmQiICAgICAgICAgICBkb2Mtdmlldy1zY3JvbGwtZG93bi1vci1wcmV2aW91cy1wYWdlCiAg ICAgIDpoZWxwICAgICAgICAgICAgICAgICAgICAgIlNjcm9sbCBwYWdlIGRvd24gb3IgZ28gdG8g cHJldmlvdXMgcGFnZSJdKQogICAgKCJDb250aW51b3VzIFNjcm9sbGluZyIKICAgICBbIk9mZiIg ICAgICAgICAgICAgICAgICAgICAoc2V0cSBkb2Mtdmlldy1jb250aW51b3VzIG5pbCkKICAgICAg OnN0eWxlIHJhZGlvIDpzZWxlY3RlZCAgICAoZXEgZG9jLXZpZXctY29udGludW91cyBuaWwpCiAg ICAgIDpoZWxwICAgICAgICAgICAgICAgICAgICAgIlNjcm9sbGluZyBzdG9wcyBhdCBwYWdlIGJl Z2lubmluZyBhbmQgZW5kIl0KICAgICBbIk9uIgkJICAgICAgICAoc2V0cSBkb2Mtdmlldy1jb250 aW51b3VzIHQpCiAgICAgIDpzdHlsZSByYWRpbyA6c2VsZWN0ZWQgICAgKGVxIGRvYy12aWV3LWNv bnRpbnVvdXMgdCkKICAgICAgOmhlbHAgICAgICAgICAgICAgICAgICAgICAiU2Nyb2xsaW5nIGNv bnRpbnVlcyB0byBuZXh0IG9yIHByZXZpb3VzIHBhZ2UiXQogICAgICItLS0iCiAgICAgWyJTYXZl IGFzIERlZmF1bHQiICAgICAgICAgKGN1c3RvbWl6ZS1zYXZlLXZhcmlhYmxlICdkb2Mtdmlldy1j b250aW51b3VzIGRvYy12aWV3LWNvbnRpbnVvdXMpCiAgICAgIDpoZWxwICAgICAgICAgICAgICAg ICAgICAgIlNhdmUgY3VycmVudCBjb250aW51b3VzIHNjcm9sbGluZyBvcHRpb24gYXMgZGVmYXVs dCJdCiAgICAgKQogICAgIi0tLSIKICAgICgiVG9nZ2xlIGVkaXQvZGlzcGxheSIKICAgICBbIkVk aXQgZG9jdW1lbnQiICAgICAgICAgICBkb2Mtdmlldy10b2dnbGUtZGlzcGxheQogICAgICA6c3R5 bGUgcmFkaW8gOnNlbGVjdGVkICAgIChlcSBtYWpvci1tb2RlICdkb2Mtdmlldy0tdGV4dC12aWV3 LW1vZGUpXQogICAgIFsiRGlzcGxheSBkb2N1bWVudCIgICAgICAgIChsYW1iZGEgKCkpIDsgaWdu b3JlIGJ1dCBzaG93IG5vIGtleWJpbmRpbmcKICAgICAgOnN0eWxlIHJhZGlvIDpzZWxlY3RlZCAg ICAoZXEgbWFqb3ItbW9kZSAnZG9jLXZpZXctbW9kZSldKQogICAgKCJBZGp1c3QgRGlzcGxheSIK ICAgICBbIkZpdCB0byB3aW5kb3ciICAgICAgICAgICBkb2Mtdmlldy1maXQtcGFnZS10by13aW5k b3cKICAgICAgOmhlbHAgICAgICAgICAgICAgICAgICAgICAiRml0IHRoZSBpbWFnZSB0byB0aGUg d2luZG93Il0KICAgICBbIkZpdCB3aWR0aCIgICAgICAgICAgICAgICBkb2Mtdmlldy1maXQtd2lk dGgtdG8td2luZG93CiAgICAgIDpoZWxwICAgICAgICAgICAgICAgICAgICAgIkZpdCB0aGUgaW1h Z2Ugd2lkdGggdG8gdGhlIHdpbmRvdyB3aWR0aCJdCiAgICAgWyJGaXQgaGVpZ2h0IiAgICAgICAg ICAgICAgZG9jLXZpZXctZml0LWhlaWdodC10by13aW5kb3cKICAgICAgOmhlbHAgICAgICAgICAg ICAgICAgICAgICAiRml0IHRoZSBpbWFnZSBoZWlnaHQgdG8gdGhlIHdpbmRvdyBoZWlnaHQiXQog ICAgICItLS0iCiAgICAgWyJFbmxhcmdlIiAgICAgICAgICAgICAgICAgZG9jLXZpZXctZW5sYXJn ZQogICAgICA6aGVscCAgICAgICAgICAgICAgICAgICAgICJFbmxhcmdlIHRoZSBkb2N1bWVudCJd CiAgICAgWyJTaHJpbmsiICAgICAgICAgICAgICAgICAgZG9jLXZpZXctc2hyaW5rCiAgICAgIDpo ZWxwICAgICAgICAgICAgICAgICAgICAgIlNocmluayB0aGUgZG9jdW1lbnQiXQogICAgICItLS0i CiAgICAgWyJTZXQgU2xpY2UiICAgICAgICAgICAgICAgZG9jLXZpZXctc2V0LXNsaWNlLXVzaW5n LW1vdXNlCiAgICAgIDpoZWxwICAgICAgICAgICAgICAgICAgICAgIlNldCB0aGUgc2xpY2Ugb2Yg dGhlIGltYWdlcyB0aGF0IHNob3VsZCBiZSBkaXNwbGF5ZWQiXQogICAgIFsiU2V0IFNsaWNlIChC b3VuZGluZ0JveCkiIGRvYy12aWV3LXNldC1zbGljZS1mcm9tLWJvdW5kaW5nLWJveAogICAgICA6 aGVscCAgICAgICAgICAgICAgICAgICAgICJTZXQgdGhlIHNsaWNlIGZyb20gdGhlIGRvY3VtZW50 J3MgQm91bmRpbmdCb3ggaW5mb3JtYXRpb24iXQogICAgIFsiU2V0IFNsaWNlIChtYW51YWwpIglk b2Mtdmlldy1zZXQtc2xpY2UKICAgICAgOmhlbHAgICAgICAgICAgICAgICAgICAgICAiU2V0IHRo ZSBzbGljZSBvZiB0aGUgaW1hZ2VzIHRoYXQgc2hvdWxkIGJlIGRpc3BsYXllZCJdCiAgICAgWyJS ZXNldCBTbGljZSIJCWRvYy12aWV3LXJlc2V0LXNsaWNlCiAgICAgIDpoZWxwICAgICAgICAgICAg ICAgICAgICAgIlJlc2V0IHRoZSBjdXJyZW50IHNsaWNlIgogICAgICA6ZW5hYmxlZCAgICAgICAg ICAgICAgICAgIChpbWFnZS1tb2RlLXdpbmRvdy1nZXQgJ3NsaWNlKV0pCiAgICAiLS0tIgogICAg WyJOZXcgU2VhcmNoIiAgICAgICAgICAgICAgIChkb2Mtdmlldy1zZWFyY2ggdCkKICAgICA6aGVs cCAgICAgICAgICAgICAgICAgICAgICAiSW5pdGlhdGUgYSBuZXcgc2VhcmNoIl0KICAgIFsiU2Vh cmNoIEZvcndhcmQiICAgICAgICAgICBkb2Mtdmlldy1zZWFyY2gKICAgICA6aGVscCAgICAgICAg ICAgICAgICAgICAgICAiSnVtcCB0byB0aGUgbmV4dCBtYXRjaCBvciBpbml0aWF0ZSBhIG5ldyBz ZWFyY2giXQogICAgWyJTZWFyY2ggQmFja3dhcmQiICAgICAgICAgIGRvYy12aWV3LXNlYXJjaC1i YWNrd2FyZAogICAgIDpoZWxwICAgICAgICAgICAgICAgICAgICAgICJKdW1wIHRvIHRoZSBwcmV2 aW91cyBtYXRjaCBvciBpbml0aWF0ZSBhIG5ldyBzZWFyY2giXQogICAgKSkKCihkZWZ2YXIgZG9j LXZpZXctbWlub3ItbW9kZS1tYXAKICAobGV0ICgobWFwIChtYWtlLXNwYXJzZS1rZXltYXApKSkK ICAgIDs7IFRvZ2dsZSBiZXR3ZWVuIHRleHQgYW5kIGltYWdlIGRpc3BsYXkgb3IgZWRpdGluZwog ICAgKGRlZmluZS1rZXkgbWFwIChrYmQgIkMtYyBDLWMiKSAnZG9jLXZpZXctdG9nZ2xlLWRpc3Bs YXkpCiAgICBtYXApCiAgIktleW1hcCB1c2VkIGJ5IGBkb2Mtdmlldy1taW5vci1tb2RlJy4iKQoK KGVhc3ktbWVudS1kZWZpbmUgZG9jLXZpZXctbWlub3ItbW9kZS1tZW51IGRvYy12aWV3LW1pbm9y LW1vZGUtbWFwCiAgIk1lbnUgZm9yIERvYyBWaWV3IG1pbm9yIG1vZGUuIgogICcoIkRvY1ZpZXcg KGVkaXQpIgogICAgKCJUb2dnbGUgZWRpdC9kaXNwbGF5IgogICAgIFsiRWRpdCBkb2N1bWVudCIg ICAgICAgICAgIChsYW1iZGEgKCkpIDsgaWdub3JlIGJ1dCBzaG93IG5vIGtleWJpbmRpbmcKICAg ICAgOnN0eWxlIHJhZGlvIDpzZWxlY3RlZCAgICAoZXEgbWFqb3ItbW9kZSAnZG9jLXZpZXctLXRl eHQtdmlldy1tb2RlKV0KICAgICBbIkRpc3BsYXkgZG9jdW1lbnQiICAgICAgICBkb2Mtdmlldy10 b2dnbGUtZGlzcGxheQogICAgICA6c3R5bGUgcmFkaW8gOnNlbGVjdGVkICAgIChlcSBtYWpvci1t b2RlICdkb2Mtdmlldy1tb2RlKV0pCiAgICBbIkV4aXQgRG9jVmlldyBNb2RlIiBkb2Mtdmlldy1t aW5vci1tb2RlXSkpCgo7Ozs7IE5hdmlnYXRpb24gQ29tbWFuZHMKCihkZWZ1biBkb2Mtdmlldy1s YXN0LXBhZ2UtbnVtYmVyICgpCiAgKGxlbmd0aCBkb2Mtdmlldy0tY3VycmVudC1maWxlcykpCgoo ZGVmdW4gZG9jLXZpZXctZ290by1wYWdlIChwYWdlKQogICJWaWV3IHRoZSBwYWdlIGdpdmVuIGJ5 IFBBR0UuIgogIChpbnRlcmFjdGl2ZSAiblBhZ2U6ICIpCiAgKGxldCAoKGxlbiAoZG9jLXZpZXct bGFzdC1wYWdlLW51bWJlcikpKQogICAgKGlmICg8IHBhZ2UgMSkKCShzZXRxIHBhZ2UgMSkKICAg ICAgKHdoZW4gKGFuZCAoPiBwYWdlIGxlbikKICAgICAgICAgICAgICAgICA7OyBBcyBsb25nIGFz IHRoZSBjb252ZXJ0ZXIgaXMgcnVubmluZywgd2UgZG9uJ3Qga25vdwogICAgICAgICAgICAgICAg IDs7IGhvdyBtYW55IHBhZ2VzIHdpbGwgYmUgYXZhaWxhYmxlLgogICAgICAgICAgICAgICAgIChu dWxsIGRvYy12aWV3LS1jdXJyZW50LWNvbnZlcnRlci1wcm9jZXNzZXMpKQoJKHNldHEgcGFnZSBs ZW4pKSkKICAgIChmb3JjZS1tb2RlLWxpbmUtdXBkYXRlKSAgICAgICAgICAgIDtUbyB1cGRhdGUg YGN1cnJlbnQtcGFnZScuCiAgICAoc2V0ZiAoZG9jLXZpZXctY3VycmVudC1wYWdlKSBwYWdlCgkg IChkb2Mtdmlldy1jdXJyZW50LWluZm8pCgkgIChjb25jYXQKCSAgIChwcm9wZXJ0aXplCgkgICAg KGZvcm1hdCAiUGFnZSAlZCBvZiAlZC4iIHBhZ2UgbGVuKSAnZmFjZSAnYm9sZCkKCSAgIDs7IFRl bGwgdXNlciBpZiBjb252ZXJ0aW5nIGlzbid0IGZpbmlzaGVkIHlldAoJICAgKGlmIGRvYy12aWV3 LS1jdXJyZW50LWNvbnZlcnRlci1wcm9jZXNzZXMKCSAgICAgICAiIChzdGlsbCBjb252ZXJ0aW5n Li4uKVxuIgoJICAgICAiXG4iKQoJICAgOzsgRGlzcGxheSBjb250ZXh0IGluZm9zIGlmIHRoaXMg cGFnZSBtYXRjaGVzIHRoZSBsYXN0IHNlYXJjaAoJICAgKHdoZW4gKGFuZCBkb2Mtdmlldy0tY3Vy cmVudC1zZWFyY2gtbWF0Y2hlcwoJCSAgICAgIChhc3NxIHBhZ2UgZG9jLXZpZXctLWN1cnJlbnQt c2VhcmNoLW1hdGNoZXMpKQoJICAgICAoY29uY2F0IChwcm9wZXJ0aXplICJTZWFyY2ggbWF0Y2hl czpcbiIgJ2ZhY2UgJ2JvbGQpCgkJICAgICAobGV0ICgoY29udGV4dHMgIiIpKQoJCSAgICAgICAo ZG9saXN0IChtIChjZHIgKGFzc3EgcGFnZQoJCQkJCSAgICAgZG9jLXZpZXctLWN1cnJlbnQtc2Vh cmNoLW1hdGNoZXMpKSkKCQkJIChzZXRxIGNvbnRleHRzIChjb25jYXQgY29udGV4dHMgIiAgLSBc IiIgbSAiXCJcbiIpKSkKCQkgICAgICAgY29udGV4dHMpKSkpKQogICAgOzsgVXBkYXRlIHRoZSBi dWZmZXIKICAgIDs7IFdlIHVzZWQgdG8gZmluZCB0aGUgZmlsZSBuYW1lIGZyb20gZG9jLXZpZXct LWN1cnJlbnQtZmlsZXMgYnV0CiAgICA7OyB0aGF0J3Mgbm90IHJpZ2h0IGlmIHRoZSBwYWdlcyBh cmUgbm90IGdlbmVyYXRlZCBzZXF1ZW50aWFsbHkKICAgIDs7IG9yIGlmIHRoZSBwYWdlIGlzbid0 IGluIGRvYy12aWV3LS1jdXJyZW50LWZpbGVzIHlldC4KICAgIChsZXQgKChmaWxlIChleHBhbmQt ZmlsZS1uYW1lCiAgICAgICAgICAgICAgICAgKGZvcm1hdCBkb2Mtdmlldy0taW1hZ2UtZmlsZS1w YXR0ZXJuIHBhZ2UpCiAgICAgICAgICAgICAgICAgKGRvYy12aWV3LS1jdXJyZW50LWNhY2hlLWRp cikpKSkKICAgICAgKGRvYy12aWV3LWluc2VydC1pbWFnZSBmaWxlIDpwb2ludGVyICdhcnJvdykK ICAgICAgKHdoZW4gKGFuZCAobm90IChmaWxlLWV4aXN0cy1wIGZpbGUpKQogICAgICAgICAgICAg ICAgIGRvYy12aWV3LS1jdXJyZW50LWNvbnZlcnRlci1wcm9jZXNzZXMpCiAgICAgICAgOzsgVGhl IFBORyBmaWxlIGhhc24ndCBiZWVuIGdlbmVyYXRlZCB5ZXQuCiAgICAgICAgKGZ1bmNhbGwgZG9j LXZpZXctc2luZ2xlLXBhZ2UtY29udmVydGVyLWZ1bmN0aW9uCgkJIGRvYy12aWV3LS1idWZmZXIt ZmlsZS1uYW1lIGZpbGUgcGFnZQoJCSAobGV0ICgod2luIChzZWxlY3RlZC13aW5kb3cpKSkKCQkg ICAobGFtYmRhICgpCgkJICAgICAoYW5kIChlcSAoY3VycmVudC1idWZmZXIpICh3aW5kb3ctYnVm ZmVyIHdpbikpCgkJCSAgOzsgSWYgd2UgY2hhbmdlZCBwYWdlIGluIHRoZSBtZWFuCgkJCSAgOzsg dGltZSwgZG9uJ3QgbWVzcyB0aGluZ3MgdXAuCgkJCSAgKGVxIChkb2Mtdmlldy1jdXJyZW50LXBh Z2Ugd2luKSBwYWdlKQoJCQkgIDs7IE1ha2Ugc3VyZSB3ZSBkb24ndCBpbmZsb29wLgoJCQkgIChm aWxlLXJlYWRhYmxlLXAgZmlsZSkKCQkJICAod2l0aC1zZWxlY3RlZC13aW5kb3cgd2luCgkJCSAg ICAoZG9jLXZpZXctZ290by1wYWdlIHBhZ2UpKSkpKSkpKQogICAgKG92ZXJsYXktcHV0IChkb2Mt dmlldy1jdXJyZW50LW92ZXJsYXkpCgkJICdoZWxwLWVjaG8gKGRvYy12aWV3LWN1cnJlbnQtaW5m bykpKSkKCihkZWZ1biBkb2Mtdmlldy1uZXh0LXBhZ2UgKCZvcHRpb25hbCBhcmcpCiAgIkJyb3dz ZSBBUkcgcGFnZXMgZm9yd2FyZC4iCiAgKGludGVyYWN0aXZlICJwIikKICAoZG9jLXZpZXctZ290 by1wYWdlICgrIChkb2Mtdmlldy1jdXJyZW50LXBhZ2UpIChvciBhcmcgMSkpKSkKCihkZWZ1biBk b2Mtdmlldy1wcmV2aW91cy1wYWdlICgmb3B0aW9uYWwgYXJnKQogICJCcm93c2UgQVJHIHBhZ2Vz IGJhY2t3YXJkLiIKICAoaW50ZXJhY3RpdmUgInAiKQogIChkb2Mtdmlldy1nb3RvLXBhZ2UgKC0g KGRvYy12aWV3LWN1cnJlbnQtcGFnZSkgKG9yIGFyZyAxKSkpKQoKKGRlZnVuIGRvYy12aWV3LWZp cnN0LXBhZ2UgKCkKICAiVmlldyB0aGUgZmlyc3QgcGFnZS4iCiAgKGludGVyYWN0aXZlKQogIChk b2Mtdmlldy1nb3RvLXBhZ2UgMSkpCgooZGVmdW4gZG9jLXZpZXctbGFzdC1wYWdlICgpCiAgIlZp ZXcgdGhlIGxhc3QgcGFnZS4iCiAgKGludGVyYWN0aXZlKQogIChkb2Mtdmlldy1nb3RvLXBhZ2Ug KGRvYy12aWV3LWxhc3QtcGFnZS1udW1iZXIpKSkKCihkZWZ1biBkb2Mtdmlldy1zY3JvbGwtdXAt b3ItbmV4dC1wYWdlICgmb3B0aW9uYWwgYXJnKQogICJTY3JvbGwgcGFnZSB1cCBBUkcgbGluZXMg aWYgcG9zc2libGUsIGVsc2UgZ290byBuZXh0IHBhZ2UuCldoZW4gYGRvYy12aWV3LWNvbnRpbnVv dXMnIGlzIG5vbi1uaWwsIHNjcm9sbGluZyB1cHdhcmQKYXQgdGhlIGJvdHRvbSBlZGdlIG9mIHRo ZSBwYWdlIG1vdmVzIHRvIHRoZSBuZXh0IHBhZ2UuCk90aGVyd2lzZSwgZ290byBuZXh0IHBhZ2Ug b25seSBvbiB0eXBpbmcgU1BDIChBUkcgaXMgbmlsKS4iCiAgKGludGVyYWN0aXZlICJQIikKICAo aWYgKG9yIGRvYy12aWV3LWNvbnRpbnVvdXMgKG51bGwgYXJnKSkKICAgICAgKGxldCAoKGhzY3Jv bGwgKHdpbmRvdy1oc2Nyb2xsKSkKCSAgICAoY3VyLXBhZ2UgKGRvYy12aWV3LWN1cnJlbnQtcGFn ZSkpKQoJKHdoZW4gKD0gKHdpbmRvdy12c2Nyb2xsIG5pbCB0KSAoaW1hZ2Utc2Nyb2xsLXVwIGFy ZykpCgkgIChkb2Mtdmlldy1uZXh0LXBhZ2UpCgkgICh3aGVuICgvPSBjdXItcGFnZSAoZG9jLXZp ZXctY3VycmVudC1wYWdlKSkKCSAgICAoaW1hZ2UtYm9iKQoJICAgIChpbWFnZS1ib2wgMSkpCgkg IChzZXQtd2luZG93LWhzY3JvbGwgKHNlbGVjdGVkLXdpbmRvdykgaHNjcm9sbCkpKQogICAgKGlt YWdlLXNjcm9sbC11cCBhcmcpKSkKCihkZWZ1biBkb2Mtdmlldy1zY3JvbGwtZG93bi1vci1wcmV2 aW91cy1wYWdlICgmb3B0aW9uYWwgYXJnKQogICJTY3JvbGwgcGFnZSBkb3duIEFSRyBsaW5lcyBp ZiBwb3NzaWJsZSwgZWxzZSBnb3RvIHByZXZpb3VzIHBhZ2UuCldoZW4gYGRvYy12aWV3LWNvbnRp bnVvdXMnIGlzIG5vbi1uaWwsIHNjcm9sbGluZyBkb3dud2FyZAphdCB0aGUgdG9wIGVkZ2Ugb2Yg dGhlIHBhZ2UgbW92ZXMgdG8gdGhlIHByZXZpb3VzIHBhZ2UuCk90aGVyd2lzZSwgZ290byBwcmV2 aW91cyBwYWdlIG9ubHkgb24gdHlwaW5nIERFTCAoQVJHIGlzIG5pbCkuIgogIChpbnRlcmFjdGl2 ZSAiUCIpCiAgKGlmIChvciBkb2Mtdmlldy1jb250aW51b3VzIChudWxsIGFyZykpCiAgICAgIChs ZXQgKChoc2Nyb2xsICh3aW5kb3ctaHNjcm9sbCkpCgkgICAgKGN1ci1wYWdlIChkb2Mtdmlldy1j dXJyZW50LXBhZ2UpKSkKCSh3aGVuICg9ICh3aW5kb3ctdnNjcm9sbCBuaWwgdCkgKGltYWdlLXNj cm9sbC1kb3duIGFyZykpCgkgIChkb2Mtdmlldy1wcmV2aW91cy1wYWdlKQoJICAod2hlbiAoLz0g Y3VyLXBhZ2UgKGRvYy12aWV3LWN1cnJlbnQtcGFnZSkpCgkgICAgKGltYWdlLWVvYikKCSAgICAo aW1hZ2UtYm9sIDEpKQoJICAoc2V0LXdpbmRvdy1oc2Nyb2xsIChzZWxlY3RlZC13aW5kb3cpIGhz Y3JvbGwpKSkKICAgIChpbWFnZS1zY3JvbGwtZG93biBhcmcpKSkKCihkZWZ1biBkb2Mtdmlldy1u ZXh0LWxpbmUtb3ItbmV4dC1wYWdlICgmb3B0aW9uYWwgYXJnKQogICJTY3JvbGwgdXB3YXJkIGJ5 IEFSRyBsaW5lcyBpZiBwb3NzaWJsZSwgZWxzZSBnb3RvIG5leHQgcGFnZS4KV2hlbiBgZG9jLXZp ZXctY29udGludW91cycgaXMgbm9uLW5pbCwgc2Nyb2xsaW5nIGEgbGluZSB1cHdhcmQKYXQgdGhl IGJvdHRvbSBlZGdlIG9mIHRoZSBwYWdlIG1vdmVzIHRvIHRoZSBuZXh0IHBhZ2UuIgogIChpbnRl cmFjdGl2ZSAicCIpCiAgKGlmIGRvYy12aWV3LWNvbnRpbnVvdXMKICAgICAgKGxldCAoKGhzY3Jv bGwgKHdpbmRvdy1oc2Nyb2xsKSkKCSAgICAoY3VyLXBhZ2UgKGRvYy12aWV3LWN1cnJlbnQtcGFn ZSkpKQoJKHdoZW4gKD0gKHdpbmRvdy12c2Nyb2xsIG5pbCB0KSAoaW1hZ2UtbmV4dC1saW5lIGFy ZykpCgkgIChkb2Mtdmlldy1uZXh0LXBhZ2UpCgkgICh3aGVuICgvPSBjdXItcGFnZSAoZG9jLXZp ZXctY3VycmVudC1wYWdlKSkKCSAgICAoaW1hZ2UtYm9iKQoJICAgIChpbWFnZS1ib2wgMSkpCgkg IChzZXQtd2luZG93LWhzY3JvbGwgKHNlbGVjdGVkLXdpbmRvdykgaHNjcm9sbCkpKQogICAgKGlt YWdlLW5leHQtbGluZSBhcmcpKSkKCihkZWZ1biBkb2Mtdmlldy1wcmV2aW91cy1saW5lLW9yLXBy ZXZpb3VzLXBhZ2UgKCZvcHRpb25hbCBhcmcpCiAgIlNjcm9sbCBkb3dud2FyZCBieSBBUkcgbGlu ZXMgaWYgcG9zc2libGUsIGVsc2UgZ290byBwcmV2aW91cyBwYWdlLgpXaGVuIGBkb2Mtdmlldy1j b250aW51b3VzJyBpcyBub24tbmlsLCBzY3JvbGxpbmcgYSBsaW5lIGRvd253YXJkCmF0IHRoZSB0 b3AgZWRnZSBvZiB0aGUgcGFnZSBtb3ZlcyB0byB0aGUgcHJldmlvdXMgcGFnZS4iCiAgKGludGVy YWN0aXZlICJwIikKICAoaWYgZG9jLXZpZXctY29udGludW91cwogICAgICAobGV0ICgoaHNjcm9s bCAod2luZG93LWhzY3JvbGwpKQoJICAgIChjdXItcGFnZSAoZG9jLXZpZXctY3VycmVudC1wYWdl KSkpCgkod2hlbiAoPSAod2luZG93LXZzY3JvbGwgbmlsIHQpIChpbWFnZS1wcmV2aW91cy1saW5l IGFyZykpCgkgIChkb2Mtdmlldy1wcmV2aW91cy1wYWdlKQoJICAod2hlbiAoLz0gY3VyLXBhZ2Ug KGRvYy12aWV3LWN1cnJlbnQtcGFnZSkpCgkgICAgKGltYWdlLWVvYikKCSAgICAoaW1hZ2UtYm9s IDEpKQoJICAoc2V0LXdpbmRvdy1oc2Nyb2xsIChzZWxlY3RlZC13aW5kb3cpIGhzY3JvbGwpKSkK ICAgIChpbWFnZS1wcmV2aW91cy1saW5lIGFyZykpKQoKOzs7OyBVdGlsaXR5IEZ1bmN0aW9ucwoK KGRlZnVuIGRvYy12aWV3LWtpbGwtcHJvYyAoKQogICJLaWxsIHRoZSBjdXJyZW50IGNvbnZlcnRl ciBwcm9jZXNzKGVzKS4iCiAgKGludGVyYWN0aXZlKQogICh3aGlsZSAoY29uc3AgZG9jLXZpZXct LWN1cnJlbnQtY29udmVydGVyLXByb2Nlc3NlcykKICAgIChpZ25vcmUtZXJyb3JzIDs7IFNvbWUg ZW50cmllcyBtaWdodCBub3QgYmUgcHJvY2Vzc2VzLCBhbmQgbWF5YmUKICAgICAgICAgICAgICAg ICAgICA7IHNvbWUgYXJlIGRlYWQgYWxyZWFkeT8KICAgICAgKGtpbGwtcHJvY2VzcyAocG9wIGRv Yy12aWV3LS1jdXJyZW50LWNvbnZlcnRlci1wcm9jZXNzZXMpKSkpCiAgKHdoZW4gZG9jLXZpZXct LWN1cnJlbnQtdGltZXIKICAgIChjYW5jZWwtdGltZXIgZG9jLXZpZXctLWN1cnJlbnQtdGltZXIp CiAgICAoc2V0cSBkb2Mtdmlldy0tY3VycmVudC10aW1lciBuaWwpKQogIChzZXRxIG1vZGUtbGlu ZS1wcm9jZXNzIG5pbCkpCgooZGVmaW5lLW9ic29sZXRlLWZ1bmN0aW9uLWFsaWFzICdkb2Mtdmll dy1raWxsLXByb2MtYW5kLWJ1ZmZlcgogICMnaW1hZ2Uta2lsbC1idWZmZXIgIjI1LjEiKQoKKGRl ZnVuIGRvYy12aWV3LW1ha2Utc2FmZS1kaXIgKGRpcikKICAoY29uZGl0aW9uLWNhc2UgbmlsCiAg ICAgIDs7IENyZWF0ZSB0ZW1wIGZpbGVzIHdpdGggc3RyaWN0IGFjY2VzcyByaWdodHMuICBJdCdz IGVhc3kgdG8KICAgICAgOzsgbG9vc2VuIHRoZW0gbGF0ZXIsIHdoZXJlYXMgaXQncyBpbXBvc3Np YmxlIHRvIGNsb3NlIHRoZQogICAgICA7OyB0aW1lLXdpbmRvdyBvZiBsb29zZSBwZXJtaXNzaW9u cyBvdGhlcndpc2UuCiAgICAgICh3aXRoLWZpbGUtbW9kZXMgI28wNzAwIChtYWtlLWRpcmVjdG9y eSBkaXIpKQogICAgKGZpbGUtYWxyZWFkeS1leGlzdHMKICAgICA7OyBJbiBjYXNlIGl0IHdhcyBj cmVhdGVkIGVhcmxpZXIgd2l0aCBsb29zZXIgcmlnaHRzLgogICAgIDs7IFdlIGNvdWxkIGNoZWNr IHRoZSBtb2RlIGluZm8gcmV0dXJuZWQgYnkgZmlsZS1hdHRyaWJ1dGVzLCBidXQgaXQncwogICAg IDs7IGEgcGFpbiB0byBwYXJzZSBhbmQgaXQgbWF5IG5vdCB0ZWxsIHlvdSB3aGF0IHdlIHdhbnQg dW5kZXIKICAgICA7OyBub24tc3RhbmRhcmQgZmlsZS1zeXN0ZW1zLiAgU28gbGV0J3MganVzdCBz YXkgd2hhdCB3ZSB3YW50IGFuZCBsZXQKICAgICA7OyB0aGUgdW5kZXJseWluZyBDIGNvZGUgYW5k IGZpbGUtc3lzdGVtIGZpZ3VyZSBpdCBvdXQuCiAgICAgOzsgVGhpcyBhbHNvIGVuZHMgdXAgY2hl Y2tpbmcgYSBidW5jaCBvZiB1c2VmdWwgY29uZGl0aW9uczogaXQgbWFrZXMKICAgICA7OyBzdXJl IHdlIGhhdmUgd3JpdGUtYWNjZXNzIHRvIHRoZSBkaXJlY3RvcnkgYW5kIHRoYXQgd2Ugb3duIGl0 LCB0aHVzCiAgICAgOzsgY2xvc2luZyBhIGJ1bmNoIG9mIHNlY3VyaXR5IGhvbGVzLgogICAgIChj b25kaXRpb24tY2FzZSBlcnJvcgoJIChzZXQtZmlsZS1tb2RlcyBkaXIgI28wNzAwICdub2ZvbGxv dykKICAgICAgIChmaWxlLWVycm9yCgkoZXJyb3IKCSAoZm9ybWF0ICJVbmFibGUgdG8gdXNlIHRl bXBvcmFyeSBkaXJlY3RvcnkgJXM6ICVzIgoJCSBkaXIgKG1hcGNvbmNhdCAjJ2lkZW50aXR5IChj ZHIgZXJyb3IpICIgIikpKSkpKSkpCgooZGVmdW4gZG9jLXZpZXctLWN1cnJlbnQtY2FjaGUtZGly ICgpCiAgIlJldHVybiB0aGUgZGlyZWN0b3J5IHdoZXJlIHRoZSBwbmcgZmlsZXMgb2YgdGhlIGN1 cnJlbnQgZG9jIHNob3VsZCBiZSBzYXZlZC4KSXQncyBhIHN1YmRpcmVjdG9yeSBvZiBgZG9jLXZp ZXctY2FjaGUtZGlyZWN0b3J5Jy4iCiAgKGlmIGRvYy12aWV3LS1jdXJyZW50LWNhY2hlLWRpcgog ICAgICBkb2Mtdmlldy0tY3VycmVudC1jYWNoZS1kaXIKICAgIDs7IFRyeSBhbmQgbWFrZSBzdXJl IGRvYy12aWV3LWNhY2hlLWRpcmVjdG9yeSBleGlzdHMgYW5kIGlzIHNhZmUuCiAgICAoZG9jLXZp ZXctbWFrZS1zYWZlLWRpciBkb2Mtdmlldy1jYWNoZS1kaXJlY3RvcnkpCiAgICA7OyBOb3cgY29t cHV0ZSB0aGUgc3ViZGlyZWN0b3J5IHRvIHVzZS4KICAgIChzZXRxIGRvYy12aWV3LS1jdXJyZW50 LWNhY2hlLWRpcgoJICAoZmlsZS1uYW1lLWFzLWRpcmVjdG9yeQoJICAgKGV4cGFuZC1maWxlLW5h bWUKCSAgICAoY29uY2F0ICh0aHJlYWQtbGFzdAogICAgICAgICAgICAgICAgICAgICAgKGZpbGUt bmFtZS1ub25kaXJlY3RvcnkgZG9jLXZpZXctLWJ1ZmZlci1maWxlLW5hbWUpCiAgICAgICAgICAg ICAgICAgICAgICA7OyBidWcjMTM2NzkKICAgICAgICAgICAgICAgICAgICAgIChzdWJzdC1jaGFy LWluLXN0cmluZyA/JSA/XykKICAgICAgICAgICAgICAgICAgICAgIDs7IGFyYy1tb2RlIGNvbmNh dGVuYXRlcyBhcmNoaXZlIG5hbWUgYW5kIGZpbGUgbmFtZQogICAgICAgICAgICAgICAgICAgICAg Ozsgd2l0aCBjb2xvbiwgd2hpY2ggaXNuJ3QgYWxsb3dlZCBvbiBNUy1XaW5kb3dzLgogICAgICAg ICAgICAgICAgICAgICAgKHN1YnN0LWNoYXItaW4tc3RyaW5nID86ID9fKSkKICAgICAgICAgICAg ICAgICAgICAiLSIKICAgICAgICAgICAgICAgICAgICAobGV0ICgoZmlsZSBkb2Mtdmlldy0tYnVm ZmVyLWZpbGUtbmFtZSkpCiAgICAgICAgICAgICAgICAgICAgICAod2l0aC10ZW1wLWJ1ZmZlcgog ICAgICAgICAgICAgICAgICAgICAgICAoc2V0LWJ1ZmZlci1tdWx0aWJ5dGUgbmlsKQogICAgICAg ICAgICAgICAgICAgICAgICAoaW5zZXJ0LWZpbGUtY29udGVudHMtbGl0ZXJhbGx5IGZpbGUpCiAg ICAgICAgICAgICAgICAgICAgICAgIChtZDUgKGN1cnJlbnQtYnVmZmVyKSkpKSkKICAgICAgICAg ICAgZG9jLXZpZXctY2FjaGUtZGlyZWN0b3J5KSkpKSkKCjs7OyMjI2F1dG9sb2FkCihkZWZ1biBk b2Mtdmlldy1tb2RlLXAgKHR5cGUpCiAgIlJldHVybiBub24tbmlsIGlmIGRvY3VtZW50IHR5cGUg VFlQRSBpcyBhdmFpbGFibGUgZm9yIGBkb2MtdmlldycuCkRvY3VtZW50IHR5cGVzIGFyZSBzeW1i b2xzIGxpa2UgYGR2aScsIGBwcycsIGBwZGYnLCBgZXB1YicsCmBjYnonLCBgZmIyJywgYHhwcycs IGBveHBzJywgb3Jgb2RmJyAoYW55IE9wZW5Eb2N1bWVudCBmb3JtYXQpLiIKICAoYW5kIChkaXNw bGF5LWdyYXBoaWMtcCkKICAgICAgIChpbWFnZS10eXBlLWF2YWlsYWJsZS1wICdwbmcpCiAgICAg ICAoY29uZAoJKChlcSB0eXBlICdkdmkpCgkgKGFuZCAoZG9jLXZpZXctbW9kZS1wICdwZGYpCgkg ICAgICAob3IgKGFuZCBkb2Mtdmlldy1kdmlwZGYtcHJvZ3JhbQoJCSAgICAgICAoZXhlY3V0YWJs ZS1maW5kIGRvYy12aWV3LWR2aXBkZi1wcm9ncmFtKSkKCQkgIChhbmQgZG9jLXZpZXctZHZpcGRm bS1wcm9ncmFtCgkJICAgICAgIChleGVjdXRhYmxlLWZpbmQgZG9jLXZpZXctZHZpcGRmbS1wcm9n cmFtKSkpKSkKCSgobWVtcSB0eXBlICcocG9zdHNjcmlwdCBwcyBlcHMgcGRmKSkKICAgICAgICAg KG9yIChhbmQgZG9jLXZpZXctZ2hvc3RzY3JpcHQtcHJvZ3JhbQoJICAgICAgICAgIChleGVjdXRh YmxlLWZpbmQgZG9jLXZpZXctZ2hvc3RzY3JpcHQtcHJvZ3JhbSkpCiAgICAgICAgICAgICA7OyBm b3IgcGRmIGFsc28gY2hlY2sgZm9yIGBkb2Mtdmlldy1wZGZkcmF3LXByb2dyYW0nCiAgICAgICAg ICAgICAod2hlbiAoZXEgdHlwZSAncGRmKQogICAgICAgICAgICAgICAoYW5kIGRvYy12aWV3LXBk ZmRyYXctcHJvZ3JhbQogICAgICAgICAgICAgICAgICAgIChleGVjdXRhYmxlLWZpbmQgZG9jLXZp ZXctcGRmZHJhdy1wcm9ncmFtKSkpKSkKCSgoZXEgdHlwZSAnb2RmKQoJIChhbmQgZG9jLXZpZXct b2RmLT5wZGYtY29udmVydGVyLXByb2dyYW0KCSAgICAgIChleGVjdXRhYmxlLWZpbmQgZG9jLXZp ZXctb2RmLT5wZGYtY29udmVydGVyLXByb2dyYW0pCgkgICAgICAoZG9jLXZpZXctbW9kZS1wICdw ZGYpKSkKCSgoZXEgdHlwZSAnZGp2dSkKCSAoZXhlY3V0YWJsZS1maW5kICJkZGp2dSIpKQogICAg ICAgICgobWVtcSB0eXBlICcoZXB1YiBjYnogZmIyIHhwcyBveHBzKSkKICAgICAgICAgOzsgZmly c3QgY2hlY2sgaWYgYGRvYy12aWV3LXBkZmRyYXctcHJvZ3JhbScgaXMgc2V0IHRvIG11dG9vbAog ICAgICAgICAoYW5kIChzdHJpbmc9IGRvYy12aWV3LXBkZmRyYXctcHJvZ3JhbSAibXV0b29sIikK ICAgICAgICAgICAgICAoZXhlY3V0YWJsZS1maW5kICJtdXRvb2wiKSkpCgkodCA7OyB1bmtub3du IGltYWdlIHR5cGUKCSBuaWwpKSkpCgo7Ozs7IENvbnZlcnNpb24gRnVuY3Rpb25zCgooZGVmdmFy IGRvYy12aWV3LXNocmluay1mYWN0b3IgMS4xMjUpCgooZGVmdW4gZG9jLXZpZXctZW5sYXJnZSAo ZmFjdG9yKQogICJFbmxhcmdlIHRoZSBkb2N1bWVudCBieSBGQUNUT1IuIgogIChpbnRlcmFjdGl2 ZSAobGlzdCBkb2Mtdmlldy1zaHJpbmstZmFjdG9yKSkKICAoaWYgZG9jLXZpZXctc2NhbGUtaW50 ZXJuYWxseQogICAgICAobGV0ICgobmV3IChjZWlsaW5nICgqIGZhY3RvciBkb2Mtdmlldy1pbWFn ZS13aWR0aCkpKSkKICAgICAgICAodW5sZXNzIChlcXVhbCBuZXcgZG9jLXZpZXctaW1hZ2Utd2lk dGgpCiAgICAgICAgICAoc2V0cS1sb2NhbCBkb2Mtdmlldy1pbWFnZS13aWR0aCBuZXcpCiAgICAg ICAgICAoZG9jLXZpZXctaW5zZXJ0LWltYWdlCiAgICAgICAgICAgKHBsaXN0LWdldCAoY2RyIChk b2Mtdmlldy1jdXJyZW50LWltYWdlKSkgOmZpbGUpCiAgICAgICAgICAgOndpZHRoIGRvYy12aWV3 LWltYWdlLXdpZHRoKSkpCiAgICAobGV0ICgobmV3IChjZWlsaW5nICgqIGZhY3RvciBkb2Mtdmll dy1yZXNvbHV0aW9uKSkpKQogICAgICAodW5sZXNzIChlcXVhbCBuZXcgZG9jLXZpZXctcmVzb2x1 dGlvbikKICAgICAgICAoc2V0cS1sb2NhbCBkb2Mtdmlldy1yZXNvbHV0aW9uIG5ldykKICAgICAg ICAoZG9jLXZpZXctcmVjb252ZXJ0LWRvYykpKSkpCgooZGVmdW4gZG9jLXZpZXctc2hyaW5rIChm YWN0b3IpCiAgIlNocmluayB0aGUgZG9jdW1lbnQgYnkgRkFDVE9SLiIKICAoaW50ZXJhY3RpdmUg KGxpc3QgZG9jLXZpZXctc2hyaW5rLWZhY3RvcikpCiAgKGRvYy12aWV3LWVubGFyZ2UgKC8gMS4w IGZhY3RvcikpKQoKKGRlZnVuIGRvYy12aWV3LXNjYWxlLXJlc2V0ICgpCiAgIlJlc2V0IHRoZSBk b2N1bWVudCBzaXplL3pvb20gbGV2ZWwgdG8gdGhlIGluaXRpYWwgb25lLiIKICAoaW50ZXJhY3Rp dmUpCiAgKGlmIGRvYy12aWV3LXNjYWxlLWludGVybmFsbHkKICAgICAgKHByb2duCgkoa2lsbC1s b2NhbC12YXJpYWJsZSAnZG9jLXZpZXctaW1hZ2Utd2lkdGgpCgkoZG9jLXZpZXctaW5zZXJ0LWlt YWdlCgkgKHBsaXN0LWdldCAoY2RyIChkb2Mtdmlldy1jdXJyZW50LWltYWdlKSkgOmZpbGUpCgkg OndpZHRoIGRvYy12aWV3LWltYWdlLXdpZHRoKSkKICAgIChraWxsLWxvY2FsLXZhcmlhYmxlICdk b2Mtdmlldy1yZXNvbHV0aW9uKQogICAgKGRvYy12aWV3LXJlY29udmVydC1kb2MpKSkKCihkZWZ1 biBkb2Mtdmlldy1zY2FsZS1hZGp1c3QgKGZhY3RvcikKICAiQWRqdXN0IHRoZSBzY2FsZSBvZiB0 aGUgRG9jVmlldyBwYWdlIGltYWdlcyBieSBGQUNUT1IuCkZBQ1RPUiBkZWZhdWx0cyB0byBgZG9j LXZpZXctc2hyaW5rLWZhY3RvcicuCgpUaGUgYWN0dWFsIGFkanVzdG1lbnQgbWFkZSBkZXBlbmRz IG9uIHRoZSBmaW5hbCBjb21wb25lbnQgb2YgdGhlCmtleWJpbmRpbmcgdXNlZCB0byBpbnZva2Ug dGhlIGNvbW1hbmQsIHdpdGggYWxsIG1vZGlmaWVycyByZW1vdmVkOgoKICAgKywgPSAgIEluY3Jl YXNlIHRoZSBpbWFnZSBzY2FsZSBieSBGQUNUT1IKICAgLSAgICAgIERlY3JlYXNlIHRoZSBpbWFn ZSBzY2FsZSBieSBGQUNUT1IKICAgMCAgICAgIFJlc2V0IHRoZSBpbWFnZSBzY2FsZSB0byB0aGUg aW5pdGlhbCBzY2FsZSIKICAoaW50ZXJhY3RpdmUgKGxpc3QgZG9jLXZpZXctc2hyaW5rLWZhY3Rv cikpCiAgKGxldCAoKGV2IGxhc3QtY29tbWFuZC1ldmVudCkKCShlY2hvLWtleXN0cm9rZXMgbmls KSkKICAgIChwY2FzZSAoZXZlbnQtYmFzaWMtdHlwZSBldikKICAgICAgKChvciA/KyA/PSkgKGRv Yy12aWV3LWVubGFyZ2UgZmFjdG9yKSkKICAgICAgKD8tICAgICAgICAgKGRvYy12aWV3LXNocmlu ayBmYWN0b3IpKQogICAgICAoPzAgICAgICAgICAoZG9jLXZpZXctc2NhbGUtcmVzZXQpKSkpKQoK KGRlZnVuIGRvYy12aWV3LWZpdC13aWR0aC10by13aW5kb3cgKCkKICAiRml0IHRoZSBpbWFnZSB3 aWR0aCB0byB0aGUgd2luZG93IHdpZHRoLiIKICAoaW50ZXJhY3RpdmUpCiAgKGxldCAoKHdpbi13 aWR0aCAoLSAobnRoIDIgKHdpbmRvdy1pbnNpZGUtcGl4ZWwtZWRnZXMpKQogICAgICAgICAgICAg ICAgICAgICAgKG50aCAwICh3aW5kb3ctaW5zaWRlLXBpeGVsLWVkZ2VzKSkpKQogICAgICAgIChz bGljZSAoZG9jLXZpZXctY3VycmVudC1zbGljZSkpKQogICAgKGlmIChub3Qgc2xpY2UpCiAgICAg ICAgKGxldCAoKGltZy13aWR0aCAoY2FyIChpbWFnZS1kaXNwbGF5LXNpemUKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIChpbWFnZS1nZXQtZGlzcGxheS1wcm9wZXJ0eSkgdCkpKSkKICAg ICAgICAgIChkb2Mtdmlldy1lbmxhcmdlICgvIChmbG9hdCB3aW4td2lkdGgpIChmbG9hdCBpbWct d2lkdGgpKSkpCgogICAgICA7OyBJZiBzbGljZSBpcyBzZXQKICAgICAgKGxldCogKChzbGljZS13 aWR0aCAobnRoIDIgc2xpY2UpKQogICAgICAgICAgICAgKHNjYWxlLWZhY3RvciAoLyAoZmxvYXQg d2luLXdpZHRoKSAoZmxvYXQgc2xpY2Utd2lkdGgpKSkKICAgICAgICAgICAgIChuZXctc2xpY2Ug KG1hcGNhciAobGFtYmRhICh4KSAoY2VpbGluZyAoKiBzY2FsZS1mYWN0b3IgeCkpKSBzbGljZSkp KQoKICAgICAgICAoZG9jLXZpZXctZW5sYXJnZSBzY2FsZS1mYWN0b3IpCiAgICAgICAgKHNldGYg KGRvYy12aWV3LWN1cnJlbnQtc2xpY2UpIG5ldy1zbGljZSkKICAgICAgICAoZG9jLXZpZXctZ290 by1wYWdlIChkb2Mtdmlldy1jdXJyZW50LXBhZ2UpKSkpKSkKCihkZWZ1biBkb2Mtdmlldy1maXQt aGVpZ2h0LXRvLXdpbmRvdyAoKQogICJGaXQgdGhlIGltYWdlIGhlaWdodCB0byB0aGUgd2luZG93 IGhlaWdodC4iCiAgKGludGVyYWN0aXZlKQogIChsZXQgKCh3aW4taGVpZ2h0ICgtIChudGggMyAo d2luZG93LWluc2lkZS1waXhlbC1lZGdlcykpCiAgICAgICAgICAgICAgICAgICAgICAgKG50aCAx ICh3aW5kb3ctaW5zaWRlLXBpeGVsLWVkZ2VzKSkpKQogICAgICAgIChzbGljZSAoZG9jLXZpZXct Y3VycmVudC1zbGljZSkpKQogICAgKGlmIChub3Qgc2xpY2UpCiAgICAgICAgKGxldCAoKGltZy1o ZWlnaHQgKGNkciAoaW1hZ2UtZGlzcGxheS1zaXplCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKGltYWdlLWdldC1kaXNwbGF5LXByb3BlcnR5KSB0KSkpKQogICAgICAgICAgOzsgV2hl biB1c2VycyBjYWxsICdkb2Mtdmlldy1maXQtaGVpZ2h0LXRvLXdpbmRvdycsCiAgICAgICAgICA7 OyB0aGV5IG1pZ2h0IHdhbnQgdG8gZ28gdG8gbmV4dCBwYWdlIGJ5IHR5cGluZyBTUEMKICAgICAg ICAgIDs7IE9OTFkgb25jZS4gU28gSSB1c2VkICcoLSB3aW4taGVpZ2h0IDEpJyBpbnN0ZWFkIG9m CiAgICAgICAgICA7OyAnd2luLWhlaWdodCcKICAgICAgICAgIChkb2Mtdmlldy1lbmxhcmdlICgv IChmbG9hdCAoLSB3aW4taGVpZ2h0IDEpKSAoZmxvYXQgaW1nLWhlaWdodCkpKSkKCiAgICAgIDs7 IElmIHNsaWNlIGlzIHNldAogICAgICAobGV0KiAoKHNsaWNlLWhlaWdodCAobnRoIDMgc2xpY2Up KQogICAgICAgICAgICAgKHNjYWxlLWZhY3RvciAoLyAoZmxvYXQgKC0gd2luLWhlaWdodCAxKSkg KGZsb2F0IHNsaWNlLWhlaWdodCkpKQogICAgICAgICAgICAgKG5ldy1zbGljZSAobWFwY2FyIChs YW1iZGEgKHgpIChjZWlsaW5nICgqIHNjYWxlLWZhY3RvciB4KSkpIHNsaWNlKSkpCgogICAgICAg IChkb2Mtdmlldy1lbmxhcmdlIHNjYWxlLWZhY3RvcikKICAgICAgICAoc2V0ZiAoZG9jLXZpZXct Y3VycmVudC1zbGljZSkgbmV3LXNsaWNlKQogICAgICAgIChkb2Mtdmlldy1nb3RvLXBhZ2UgKGRv Yy12aWV3LWN1cnJlbnQtcGFnZSkpKSkpKQoKKGRlZnVuIGRvYy12aWV3LWZpdC1wYWdlLXRvLXdp bmRvdyAoKQogICJGaXQgdGhlIGltYWdlIHRvIHRoZSB3aW5kb3cuCk1vcmUgc3BlY2lmaWNhbGx5 LCB0aGlzIGZ1bmN0aW9uIGVubGFyZ2VzIGltYWdlIGJ5OgoKbWluIHsod2luZG93LXdpZHRoIC8g aW1hZ2Utd2lkdGgpLCAod2luZG93LWhlaWdodCAvIGltYWdlLWhlaWdodCl9IHRpbWVzLiIKICAo aW50ZXJhY3RpdmUpCiAgKGxldCAoKHdpbi13aWR0aCAoLSAobnRoIDIgKHdpbmRvdy1pbnNpZGUt cGl4ZWwtZWRnZXMpKQogICAgICAgICAgICAgICAgICAgICAgKG50aCAwICh3aW5kb3ctaW5zaWRl LXBpeGVsLWVkZ2VzKSkpKQogICAgICAgICh3aW4taGVpZ2h0ICgtIChudGggMyAod2luZG93LWlu c2lkZS1waXhlbC1lZGdlcykpCiAgICAgICAgICAgICAgICAgICAgICAgKG50aCAxICh3aW5kb3ct aW5zaWRlLXBpeGVsLWVkZ2VzKSkpKQogICAgICAgIChzbGljZSAoZG9jLXZpZXctY3VycmVudC1z bGljZSkpKQogICAgKGlmIChub3Qgc2xpY2UpCiAgICAgICAgKGxldCAoKGltZy13aWR0aCAoY2Fy IChpbWFnZS1kaXNwbGF5LXNpemUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbWFn ZS1nZXQtZGlzcGxheS1wcm9wZXJ0eSkgdCkpKQogICAgICAgICAgICAgIChpbWctaGVpZ2h0IChj ZHIgKGltYWdlLWRpc3BsYXktc2l6ZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChp bWFnZS1nZXQtZGlzcGxheS1wcm9wZXJ0eSkgdCkpKSkKICAgICAgICAgIChkb2Mtdmlldy1lbmxh cmdlIChtaW4gKC8gKGZsb2F0IHdpbi13aWR0aCkgKGZsb2F0IGltZy13aWR0aCkpCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICgvIChmbG9hdCAoLSB3aW4taGVpZ2h0IDEpKQogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZmxvYXQgaW1nLWhlaWdodCkpKSkpCiAg ICAgIDs7IElmIHNsaWNlIGlzIHNldAogICAgICAobGV0KiAoKHNsaWNlLXdpZHRoIChudGggMiBz bGljZSkpCiAgICAgICAgICAgICAoc2xpY2UtaGVpZ2h0IChudGggMyBzbGljZSkpCiAgICAgICAg ICAgICAoc2NhbGUtZmFjdG9yIChtaW4gKC8gKGZsb2F0IHdpbi13aWR0aCkgKGZsb2F0IHNsaWNl LXdpZHRoKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoLyAoZmxvYXQgKC0gd2lu LWhlaWdodCAxKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZmxvYXQgc2xp Y2UtaGVpZ2h0KSkpKQogICAgICAgICAgICAgKG5ldy1zbGljZSAobWFwY2FyIChsYW1iZGEgKHgp IChjZWlsaW5nICgqIHNjYWxlLWZhY3RvciB4KSkpIHNsaWNlKSkpCiAgICAgICAgKGRvYy12aWV3 LWVubGFyZ2Ugc2NhbGUtZmFjdG9yKQogICAgICAgIChzZXRmIChkb2Mtdmlldy1jdXJyZW50LXNs aWNlKSBuZXctc2xpY2UpCiAgICAgICAgKGRvYy12aWV3LWdvdG8tcGFnZSAoZG9jLXZpZXctY3Vy cmVudC1wYWdlKSkpKSkpCgooZGVmdW4gZG9jLXZpZXctZml0LXdpbmRvdy10by1wYWdlICgpCiAg IlJlc2l6ZSBzZWxlY3RlZCB3aW5kb3cgc28gaXQganVzdCBmaXRzIHRoZSBjdXJyZW50IHBhZ2Uu ClJlc2l6ZSB0aGUgY29udGFpbmluZyBmcmFtZSBpZiBuZWVkZWQuIgogIChpbnRlcmFjdGl2ZSkK ICAobGV0KiAoKHNsaWNlIChkb2Mtdmlldy1jdXJyZW50LXNsaWNlKSkKICAgICAgICAgKGltZy13 aWR0aCAgKGlmIHNsaWNlIChudGggMiBzbGljZSkKICAgICAgICAgICAgICAgICAgICAgICAoY2Fy IChpbWFnZS1kaXNwbGF5LXNpemUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW1hZ2Ut Z2V0LWRpc3BsYXktcHJvcGVydHkpIHQpKSkpCiAgICAgICAgIChpbWctaGVpZ2h0IChpZiBzbGlj ZSAobnRoIDMgc2xpY2UpCiAgICAgICAgICAgICAgICAgICAgICAgKGNkciAoaW1hZ2UtZGlzcGxh eS1zaXplCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGltYWdlLWdldC1kaXNwbGF5LXBy b3BlcnR5KSB0KSkpKQogICAgICAgICAod2luLXdpZHRoICAoLSAobnRoIDIgKHdpbmRvdy1pbnNp ZGUtcGl4ZWwtZWRnZXMpKQogICAgICAgICAgICAgICAgICAgICAgICAobnRoIDAgKHdpbmRvdy1p bnNpZGUtcGl4ZWwtZWRnZXMpKSkpCiAgICAgICAgICh3aW4taGVpZ2h0ICgtIChudGggMyAod2lu ZG93LWluc2lkZS1waXhlbC1lZGdlcykpCiAgICAgICAgICAgICAgICAgICAgICAgIChudGggMSAo d2luZG93LWluc2lkZS1waXhlbC1lZGdlcykpKSkKICAgICAgICAgKHdpZHRoLWRpZmYgICgtIGlt Zy13aWR0aCAgd2luLXdpZHRoKSkKICAgICAgICAgKGhlaWdodC1kaWZmICgtIGltZy1oZWlnaHQg d2luLWhlaWdodCkpCiAgICAgICAgIChuZXctZnJhbWUtcGFyYW1zCiAgICAgICAgICA7OyBJZiB3 ZSBjYW4ndCByZXNpemUgdGhlIHdpbmRvdywgdHJ5IGFuZCByZXNpemUgdGhlIGZyYW1lLgogICAg ICAgICAgOzsgV2UgdXNlZCB0byBjb21wYXJlIHRoZSBgd2luZG93LXdpZHRoL2hlaWdodGAgYW5k IHRoZQogICAgICAgICAgOzsgYGZyYW1lLXdpZHRoL2hlaWdodGAgaW5zdGVhZCBvZiBjYXRjaGlu ZyB0aGUgZXJyb3JzLCBidXQKICAgICAgICAgIDs7IGl0J3MgdG9vIGZpZGRseSAoZS5nLiBpbiB0 aGUgcHJlc2VuY2Ugb2YgdGhlIG1pbml3aW5kb3csCiAgICAgICAgICA7OyB0aGUgaGVpZ2h0IHRo ZSBmcmFtZSBzaG91bGQgYmUgZXF1YWwgdG8gdGhlIGhlaWdodCBvZiB0aGUKICAgICAgICAgIDs7 IHJvb3Qgd2luZG93ICsxKS4KICAgICAgICAgIChhcHBlbmQKICAgICAgICAgICAoY29uZGl0aW9u LWNhc2UgbmlsCiAgICAgICAgICAgICAgIChwcm9nbgogICAgICAgICAgICAgICAgIChlbmxhcmdl LXdpbmRvdyAoLyB3aWR0aC1kaWZmIChmcmFtZS1jaGFyLXdpZHRoKSkgJ2hvcml6KQogICAgICAg ICAgICAgICAgIG5pbCkKICAgICAgICAgICAgIChlcnJvcgogICAgICAgICAgICAgIGAoKHdpZHRo ICAuICh0ZXh0LXBpeGVscwogICAgICAgICAgICAgICAgICAgICAgICAgICAuICwoKyAoZnJhbWUt dGV4dC13aWR0aCkgd2lkdGgtZGlmZikpKSkpKQogICAgICAgICAgIChjb25kaXRpb24tY2FzZSBu aWwKICAgICAgICAgICAgICAgKHByb2duCiAgICAgICAgICAgICAgICAgKGVubGFyZ2Utd2luZG93 ICgvIGhlaWdodC1kaWZmIChmcmFtZS1jaGFyLWhlaWdodCkpIG5pbCkKICAgICAgICAgICAgICAg ICBuaWwpCiAgICAgICAgICAgICAoZXJyb3IKICAgICAgICAgICAgICBgKChoZWlnaHQgIC4gKHRl eHQtcGl4ZWxzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuICwoKyAoZnJhbWUtdGV4dC1o ZWlnaHQpIGhlaWdodC1kaWZmKSkpKSkpKSkpCiAgICAod2hlbiBuZXctZnJhbWUtcGFyYW1zCiAg ICAgIChtb2RpZnktZnJhbWUtcGFyYW1ldGVycyAoc2VsZWN0ZWQtZnJhbWUpIG5ldy1mcmFtZS1w YXJhbXMpKSkpCgooZGVmdW4gZG9jLXZpZXctY2VudGVyLXBhZ2UtaG9yaXpvbnRhbGx5ICgpCiAg IkNlbnRlciBwYWdlIGhvcml6b250YWxseSB3aGVuIHBhZ2UgaXMgd2lkZXIgdGhhbiB3aW5kb3cu IgogIChpbnRlcmFjdGl2ZSkKICAobGV0ICgocGFnZS13aWR0aCAoY2FyIChpbWFnZS1zaXplIChk b2Mtdmlldy1jdXJyZW50LWltYWdlKSAncGl4ZWwpKSkKICAgICAgICAod2luZG93LXdpZHRoICh3 aW5kb3ctYm9keS13aWR0aCBuaWwgJ3BpeGVsKSkKICAgICAgICA7OyBIb3cgbXVjaCBkbyB3ZSBz Y3JvbGwgaW4gb3JkZXIgdG8gY2VudGVyIHRoZSBwYWdlPwogICAgICAgIChwaXhlbC1oc2Nyb2xs IDApCiAgICAgICAgOzsgSG93IG1hbnkgcGl4ZWxzIGFyZSB0aGVyZSBpbiBhIGNvbHVtbj8KICAg ICAgICAoY29sLWluLXBpeGVsICgvICh3aW5kb3ctYm9keS13aWR0aCBuaWwgJ3BpeGVsKQogICAg ICAgICAgICAgICAgICAgICAgICAgKHdpbmRvdy1ib2R5LXdpZHRoIG5pbCkpKSkKICAgICh3aGVu ICg+IHBhZ2Utd2lkdGggd2luZG93LXdpZHRoKQogICAgICAoc2V0cSBwaXhlbC1oc2Nyb2xsICgv ICgtIHBhZ2Utd2lkdGggd2luZG93LXdpZHRoKSAyKSkKICAgICAgKHNldC13aW5kb3ctaHNjcm9s bCAoc2VsZWN0ZWQtd2luZG93KQogICAgICAgICAgICAgICAgICAgICAgICAgICgvIHBpeGVsLWhz Y3JvbGwgY29sLWluLXBpeGVsKSkpKSkKCihkZWZ1biBkb2Mtdmlldy1jZW50ZXItcGFnZS12ZXJ0 aWNhbGx5ICgpCiAgIkNlbnRlciBwYWdlIHZlcnRpY2FsbHkgd2hlbiBwYWdlIGlzIHdpZGVyIHRo YW4gd2luZG93LiIKICAoaW50ZXJhY3RpdmUpCiAgKGxldCAoKHBhZ2UtaGVpZ2h0IChjZHIgKGlt YWdlLXNpemUgKGRvYy12aWV3LWN1cnJlbnQtaW1hZ2UpICdwaXhlbCkpKQogICAgICAgICh3aW5k b3ctaGVpZ2h0ICh3aW5kb3ctYm9keS1oZWlnaHQgbmlsICdwaXhlbCkpCiAgICAgICAgOzsgSG93 IG11Y2ggZG8gd2Ugc2Nyb2xsIGluIG9yZGVyIHRvIGNlbnRlciB0aGUgcGFnZT8KICAgICAgICAo cGl4ZWwtc2Nyb2xsIDApKQogICAgKHdoZW4gKD4gcGFnZS1oZWlnaHQgd2luZG93LWhlaWdodCkK ICAgICAgKHNldHEgcGl4ZWwtc2Nyb2xsICgvICgtIHBhZ2UtaGVpZ2h0IHdpbmRvdy1oZWlnaHQp IDIpKQogICAgICAoc2V0LXdpbmRvdy12c2Nyb2xsIChzZWxlY3RlZC13aW5kb3cpIHBpeGVsLXNj cm9sbCAncGl4ZWwpKSkpCgooZGVmdW4gZG9jLXZpZXctcmVjb252ZXJ0LWRvYyAoKQogICJSZWNv bnZlcnQgdGhlIGN1cnJlbnQgZG9jdW1lbnQuClNob3VsZCBiZSBpbnZva2VkIHdoZW4gdGhlIGNh Y2hlZCBpbWFnZXMgYXJlbid0IHVwLXRvLWRhdGUuIgogIChpbnRlcmFjdGl2ZSkKICAoZG9jLXZp ZXcta2lsbC1wcm9jKQogIDs7IENsZWFyIHRoZSBvbGQgY2FjaGVkIGZpbGVzCiAgKHdoZW4gKGZp bGUtZXhpc3RzLXAgKGRvYy12aWV3LS1jdXJyZW50LWNhY2hlLWRpcikpCiAgICAoZGVsZXRlLWRp cmVjdG9yeSAoZG9jLXZpZXctLWN1cnJlbnQtY2FjaGUtZGlyKSAncmVjdXJzaXZlKSkKICAoa2ls bC1sb2NhbC12YXJpYWJsZSAnZG9jLXZpZXctbGFzdC1wYWdlLW51bWJlcikKICAoZG9jLXZpZXct aW5pdGlhdGUtZGlzcGxheSkpCgooZGVmdW4gZG9jLXZpZXctc2VudGluZWwgKHByb2MgZXZlbnQp CiAgIkdlbmVyaWMgc2VudGluZWwgZm9yIGRvYy12aWV3IGNvbnZlcnNpb24gcHJvY2Vzc2VzLiIK ICAoaWYgKG5vdCAoc3RyaW5nLW1hdGNoICJmaW5pc2hlZCIgZXZlbnQpKQogICAgICAobWVzc2Fn ZSAiRG9jVmlldzogcHJvY2VzcyAlcyBjaGFuZ2VkIHN0YXR1cyB0byAlcy4iCiAgICAgICAgICAg ICAgIChwcm9jZXNzLW5hbWUgcHJvYykKCSAgICAgICAoaWYgKHN0cmluZy1tYXRjaCAiXFwoLitc XClcbj9cXCciIGV2ZW50KQoJCSAgIChtYXRjaC1zdHJpbmcgMSBldmVudCkKCQkgZXZlbnQpKQog ICAgKHdoZW4gKGJ1ZmZlci1saXZlLXAgKHByb2Nlc3MtZ2V0IHByb2MgJ2J1ZmZlcikpCiAgICAg ICh3aXRoLWN1cnJlbnQtYnVmZmVyIChwcm9jZXNzLWdldCBwcm9jICdidWZmZXIpCiAgICAgICAg KHNldHEgZG9jLXZpZXctLWN1cnJlbnQtY29udmVydGVyLXByb2Nlc3NlcwogICAgICAgICAgICAg IChkZWxxIHByb2MgZG9jLXZpZXctLWN1cnJlbnQtY29udmVydGVyLXByb2Nlc3NlcykpCiAgICAg ICAgKHNldHEgbW9kZS1saW5lLXByb2Nlc3MKICAgICAgICAgICAgICAoaWYgZG9jLXZpZXctLWN1 cnJlbnQtY29udmVydGVyLXByb2Nlc3NlcwogICAgICAgICAgICAgICAgICAoZm9ybWF0ICI6JXMi IChjYXIgZG9jLXZpZXctLWN1cnJlbnQtY29udmVydGVyLXByb2Nlc3NlcykpKSkKICAgICAgICAo ZnVuY2FsbCAocHJvY2Vzcy1nZXQgcHJvYyAnY2FsbGJhY2spKSkpKSkKCihkZWZ1biBkb2Mtdmll dy1zdGFydC1wcm9jZXNzIChuYW1lIHByb2dyYW0gYXJncyBjYWxsYmFjaykKICA7OyBNYWtlIHN1 cmUgdGhlIHByb2Nlc3MgaXMgc3RhcnRlZCBpbiBhbiBleGlzdGluZyBkaXJlY3RvcnksIChyYXRo ZXIgdGhhbgogIDs7IHNvbWUgZmlsZS1uYW1lLWhhbmRsZXItbWFuYWdlZCBkaXIsIGZvciBleGFt cGxlKS4KICAobGV0KiAoKGRlZmF1bHQtZGlyZWN0b3J5IChvciAodW5oYW5kbGVkLWZpbGUtbmFt ZS1kaXJlY3RvcnkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdC1kaXJl Y3RvcnkpCgkJCSAgICAgICAgKGV4cGFuZC1maWxlLW5hbWUgIn4vIikpKQogICAgICAgICAocHJv YyAoYXBwbHkgIydzdGFydC1wcm9jZXNzIG5hbWUgZG9jLXZpZXctY29udmVyc2lvbi1idWZmZXIK ICAgICAgICAgICAgICAgICAgICAgIHByb2dyYW0gYXJncykpKQogICAgKHB1c2ggcHJvYyBkb2Mt dmlldy0tY3VycmVudC1jb252ZXJ0ZXItcHJvY2Vzc2VzKQogICAgKHNldHEgbW9kZS1saW5lLXBy b2Nlc3MgKGxpc3QgKGZvcm1hdCAiOiVzIiBwcm9jKSkpCiAgICAoc2V0LXByb2Nlc3Mtc2VudGlu ZWwgcHJvYyAnZG9jLXZpZXctc2VudGluZWwpCiAgICAocHJvY2Vzcy1wdXQgcHJvYyAnYnVmZmVy ICAgKGN1cnJlbnQtYnVmZmVyKSkKICAgIChwcm9jZXNzLXB1dCBwcm9jICdjYWxsYmFjayBjYWxs YmFjaykpKQoKKGRlZnVuIGRvYy12aWV3LWR2aS0+cGRmIChkdmkgcGRmIGNhbGxiYWNrKQogICJD b252ZXJ0IERWSSB0byBQREYgYXN5bmNocm9ub3VzbHkgYW5kIGNhbGwgQ0FMTEJBQ0sgd2hlbiBm aW5pc2hlZC4iCiAgOzsgUHJlZmVyIGR2aXBkZiBvdmVyIGR2aXBkZm0sIGJlY2F1c2UgdGhlIGxh dHRlciBoYXMgcHJvYmxlbXMgaWYgdGhlIERWSQogIDs7IHJlZmVyZW5jZXMgYW5kIGluY2x1ZGVz IG90aGVyIFBTIGZpbGVzLgogIChpZiAoYW5kIGRvYy12aWV3LWR2aXBkZi1wcm9ncmFtCgkgICAo ZXhlY3V0YWJsZS1maW5kIGRvYy12aWV3LWR2aXBkZi1wcm9ncmFtKSkKICAgICAgKGRvYy12aWV3 LXN0YXJ0LXByb2Nlc3MgImR2aS0+cGRmIiBkb2Mtdmlldy1kdmlwZGYtcHJvZ3JhbQoJCQkgICAg ICAobGlzdCBkdmkgcGRmKQoJCQkgICAgICBjYWxsYmFjaykKICAgIChkb2Mtdmlldy1zdGFydC1w cm9jZXNzICJkdmktPnBkZiIgZG9jLXZpZXctZHZpcGRmbS1wcm9ncmFtCgkJCSAgICAobGlzdCAi LW8iIHBkZiBkdmkpCgkJCSAgICBjYWxsYmFjaykpKQoKKGRlZnVuIGRvYy12aWV3LXBkZi1wYXNz d29yZC1wcm90ZWN0ZWQtZ2hvc3RzY3JpcHQtcCAocGRmKQogICJSZXR1cm4gbm9uLW5pbCBpZiBh IFBERiBmaWxlIGlzIHBhc3N3b3JkLXByb3RlY3RlZC4KVGhlIHRlc3QgaXMgcGVyZm9ybWVkIHVz aW5nIGBkb2Mtdmlldy1naG9zdHNjcmlwdC1wcm9ncmFtJy4iCiAgKHdpdGgtdGVtcC1idWZmZXIK ICAgIChhcHBseSAjJ2NhbGwtcHJvY2VzcyBkb2Mtdmlldy1naG9zdHNjcmlwdC1wcm9ncmFtIG5p bCAoY3VycmVudC1idWZmZXIpCiAgICAgICAgICAgbmlsIGAoLEBkb2Mtdmlldy1naG9zdHNjcmlw dC1vcHRpb25zCiAgICAgICAgICAgICAgICAgIi1zTk9ESVNQTEFZIgogICAgICAgICAgICAgICAg ICxwZGYpKQogICAgKGdvdG8tY2hhciAocG9pbnQtbWluKSkKICAgIChzZWFyY2gtZm9yd2FyZCAi VGhpcyBmaWxlIHJlcXVpcmVzIGEgcGFzc3dvcmQgZm9yIGFjY2Vzcy4iIG5pbCB0KSkpCgooZGVm dW4gZG9jLXZpZXctcGRmLT5wbmctY29udmVydGVyLWdob3N0c2NyaXB0IChwZGYgcG5nIHBhZ2Ug Y2FsbGJhY2spCiAgKGxldCAoKHBkZi1wYXNzd2QgKGlmIChkb2Mtdmlldy1wZGYtcGFzc3dvcmQt cHJvdGVjdGVkLWdob3N0c2NyaXB0LXAgcGRmKQogICAgICAgICAgICAgICAgICAgICAgICAocmVh ZC1wYXNzd2QgIkVudGVyIHBhc3N3b3JkIGZvciBQREYgZmlsZTogIikpKSkKICAgIChkb2Mtdmll dy1zdGFydC1wcm9jZXNzCiAgICAgInBkZi9wcy0+cG5nIiBkb2Mtdmlldy1naG9zdHNjcmlwdC1w cm9ncmFtCiAgICAgYCgsQGRvYy12aWV3LWdob3N0c2NyaXB0LW9wdGlvbnMKICAgICAgICwoY29u Y2F0ICItc0RFVklDRT0iIGRvYy12aWV3LWdob3N0c2NyaXB0LWRldmljZSkKICAgICAgICwoZm9y bWF0ICItciVkIiAocm91bmQgZG9jLXZpZXctcmVzb2x1dGlvbikpCiAgICAgICAsQChpZiBwYWdl IGAoLChmb3JtYXQgIi1kRmlyc3RQYWdlPSVkIiBwYWdlKSkpCiAgICAgICAsQChpZiBwYWdlIGAo LChmb3JtYXQgIi1kTGFzdFBhZ2U9JWQiIHBhZ2UpKSkKICAgICAgICxAKGlmIHBkZi1wYXNzd2Qg YCgsKGZvcm1hdCAiLXNQREZQYXNzd29yZD0lcyIgcGRmLXBhc3N3ZCkpKQogICAgICAgLChjb25j YXQgIi1zT3V0cHV0RmlsZT0iIHBuZykKICAgICAgICxwZGYpCiAgICAgY2FsbGJhY2spKSkKCihk ZWZhbGlhcyAnZG9jLXZpZXctcHMtPnBuZy1jb252ZXJ0ZXItZ2hvc3RzY3JpcHQKICAnZG9jLXZp ZXctcGRmLT5wbmctY29udmVydGVyLWdob3N0c2NyaXB0KQoKKGRlZnVuIGRvYy12aWV3LWRqdnUt PnRpZmYtY29udmVydGVyLWRkanZ1IChkanZ1IHRpZmYgcGFnZSBjYWxsYmFjaykKICAiQ29udmVy dCBQQUdFIG9mIGEgREpWVSBmaWxlIHRvIGJpdG1hcChzKSBhc3luY2hyb25vdXNseS4KQ2FsbCBD QUxMQkFDSyB3aXRoIG5vIGFyZ3VtZW50cyB3aGVuIGRvbmUuCklmIFBBR0UgaXMgbmlsLCBjb252 ZXJ0IHRoZSB3aG9sZSBkb2N1bWVudC4iCiAgKGRvYy12aWV3LXN0YXJ0LXByb2Nlc3MKICAgImRq dnUtPnRpZmYiICJkZGp2dSIKICAgYCgiLWZvcm1hdD10aWZmIgogICAgIDs7IGRkanZ1IG9ubHkg YWNjZXB0cyB0aGUgcmFuZ2UgMS05OTkuCiAgICAgLChmb3JtYXQgIi1zY2FsZT0lZCIgKHJvdW5k IGRvYy12aWV3LXJlc29sdXRpb24pKQogICAgIDs7IC1lYWNocGFnZSB3YXMgb25seSBhZGRlZCBh ZnRlciBkanZ1bGlicmUtMy41LjI1LjMhCiAgICAgLEAodW5sZXNzIHBhZ2UgJygiLWVhY2hwYWdl IikpCiAgICAgLEAoaWYgcGFnZSBgKCwoZm9ybWF0ICItcGFnZT0lZCIgcGFnZSkpKQogICAgICxk anZ1CiAgICAgLHRpZmYpCiAgIGNhbGxiYWNrKSkKCihkZWZ1biBkb2Mtdmlldy1wZGZkcmF3LXBy b2dyYW0tc3ViY29tbWFuZCAoKQogICJSZXR1cm4gdGhlIG11dG9vbCBzdWJjb21tYW5kIHJlcGxh Y2luZyBtdWRyYXcuClJlY2VudCBNdVBERiBkaXN0cmlidXRpb25zIHJlcGxhY2VkIGBtdWRyYXcn IHdpdGggYG11dG9vbCBkcmF3Jy4iCiAgKHdoZW4gKHN0cmluZy1tYXRjaCAibXV0b29sW14vXFxd KiQiIGRvYy12aWV3LXBkZmRyYXctcHJvZ3JhbSkKICAgICcoImRyYXciKSkpCgooZGVmdW4gZG9j LXZpZXctcGRmLXBhc3N3b3JkLXByb3RlY3RlZC1wZGZkcmF3LXAgKHBkZikKICAiUmV0dXJuIG5v bi1uaWwgaWYgYSBQREYgZmlsZSBpcyBwYXNzd29yZC1wcm90ZWN0ZWQuClRoZSB0ZXN0IGlzIHBl cmZvcm1lZCB1c2luZyBgZG9jLXZpZXctcGRmZHJhdy1wcm9ncmFtJy4iCiAgKHdpdGgtdGVtcC1i dWZmZXIKICAgIChhcHBseSAjJ2NhbGwtcHJvY2VzcyBkb2Mtdmlldy1wZGZkcmF3LXByb2dyYW0g bmlsIChjdXJyZW50LWJ1ZmZlcikgbmlsCiAgICAgICAgICAgYCgsQChkb2Mtdmlldy1wZGZkcmF3 LXByb2dyYW0tc3ViY29tbWFuZCkKICAgICAgICAgICAgICwoY29uY2F0ICItbyIgbnVsbC1kZXZp Y2UpCiAgICAgICAgICAgICA7OyBJbiBjYXNlIFBERiBpc24ndCBwYXNzd29yZC1wcm90ZWN0ZWQs ICJkcmF3IiBvbmx5IG9uZSBwYWdlLgogICAgICAgICAgICAgLHBkZiAiMSIpKQogICAgKGdvdG8t Y2hhciAocG9pbnQtbWluKSkKICAgIChzZWFyY2gtZm9yd2FyZCAiZXJyb3I6IGNhbm5vdCBhdXRo ZW50aWNhdGUgcGFzc3dvcmQiIG5pbCB0KSkpCgooZGVmdW4gZG9jLXZpZXctcGRmLT5wbmctY29u dmVydGVyLW11cGRmIChwZGYgcG5nIHBhZ2UgY2FsbGJhY2spCiAgKGxldCogKChwZGYtcGFzc3dk IChpZiAoZG9jLXZpZXctcGRmLXBhc3N3b3JkLXByb3RlY3RlZC1wZGZkcmF3LXAgcGRmKQogICAg ICAgICAgICAgICAgICAgICAgICAgKHJlYWQtcGFzc3dkICJFbnRlciBwYXNzd29yZCBmb3IgUERG IGZpbGU6ICIpKSkKICAgICAgICAgKG9wdGlvbnMgYCgsKGNvbmNhdCAiLW8iIHBuZykKICAgICAg ICAgICAgICAgICAgICAsKGZvcm1hdCAiLXIlZCIgKHJvdW5kIGRvYy12aWV3LXJlc29sdXRpb24p KQogICAgICAgICAgICAgICAgICAgICxAKGlmIHBkZi1wYXNzd2QgYCgiLXAiICxwZGYtcGFzc3dk KSkpKSkKICAgICh3aGVuIChlcSBkb2Mtdmlldy1kb2MtdHlwZSAnZXB1YikKICAgICAgKHdoZW4g ZG9jLXZpZXctZXB1Yi1mb250LXNpemUKICAgICAgICAoc2V0cSBvcHRpb25zIChhcHBlbmQgb3B0 aW9ucwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGlzdCAoZm9ybWF0ICItUyVzIiBk b2Mtdmlldy1lcHViLWZvbnQtc2l6ZSkpKSkpCiAgICAgICh3aGVuIGRvYy12aWV3LW11dG9vbC11 c2VyLXN0eWxlc2hlZXQKICAgICAgICAoc2V0cSBvcHRpb25zCiAgICAgICAgICAgICAgKGFwcGVu ZCBvcHRpb25zCiAgICAgICAgICAgICAgICAgICAgICAobGlzdCAoZm9ybWF0ICItVSVzIgogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZXhwYW5kLWZpbGUtbmFtZQogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jLXZpZXctbXV0b29sLXVzZXItc3R5bGVz aGVldCkpKSkpKSkKICAgIChkb2Mtdmlldy1zdGFydC1wcm9jZXNzCiAgICAgInBkZi0+cG5nIiBk b2Mtdmlldy1wZGZkcmF3LXByb2dyYW0KICAgICBgKCxAKGRvYy12aWV3LXBkZmRyYXctcHJvZ3Jh bS1zdWJjb21tYW5kKQogICAgICAgLEBvcHRpb25zCiAgICAgICAscGRmCiAgICAgICAsQChpZiBw YWdlIGAoLChmb3JtYXQgIiVkIiBwYWdlKSkpKQogICAgIGNhbGxiYWNrKSkpCgooZGVmdW4gZG9j LXZpZXctb2RmLT5wZGYtY29udmVydGVyLXVub2NvbnYgKG9kZiBjYWxsYmFjaykKICAiQ29udmVy dCBPREYgdG8gUERGIGFzeW5jaHJvbm91c2x5IGFuZCBjYWxsIENBTExCQUNLIHdoZW4gZmluaXNo ZWQuClRoZSBjb252ZXJ0ZWQgUERGIGlzIHB1dCBpbnRvIHRoZSBjdXJyZW50IGNhY2hlIGRpcmVj dG9yeSwgYW5kIGl0CmlzIG5hbWVkIGxpa2UgT0RGIHdpdGggdGhlIGV4dGVuc2lvbiB0dXJuZWQg dG8gcGRmLiIKICAoZG9jLXZpZXctc3RhcnQtcHJvY2VzcyAib2RmLT5wZGYiIGRvYy12aWV3LW9k Zi0+cGRmLWNvbnZlcnRlci1wcm9ncmFtCgkJCSAgKGxpc3QgIi1mIiAicGRmIiAiLW8iIChkb2Mt dmlldy0tY3VycmVudC1jYWNoZS1kaXIpIG9kZikKCQkJICBjYWxsYmFjaykpCgooZGVmdW4gZG9j LXZpZXctb2RmLT5wZGYtY29udmVydGVyLXNvZmZpY2UgKG9kZiBjYWxsYmFjaykKICAiQ29udmVy dCBPREYgdG8gUERGIGFzeW5jaHJvbm91c2x5IGFuZCBjYWxsIENBTExCQUNLIHdoZW4gZmluaXNo ZWQuClRoZSBjb252ZXJ0ZWQgUERGIGlzIHB1dCBpbnRvIHRoZSBjdXJyZW50IGNhY2hlIGRpcmVj dG9yeSwgYW5kIGl0CmlzIG5hbWVkIGxpa2UgT0RGIHdpdGggdGhlIGV4dGVuc2lvbiB0dXJuZWQg dG8gcGRmLiIKICA7OyBGSVhNRTogc29mZmljZSBkb2Vzbid0IHdvcmsgd2hlbiB0aGVyZSdzIGFu b3RoZXIgcnVubmluZwogIDs7IExpYnJlT2ZmaWNlIGluc3RhbmNlLCBpbiB3aGljaCBjYXNlIGl0 IHJldHVybnMgc3VjY2VzcyB3aXRob3V0CiAgOzsgYWN0dWFsbHkgZG9pbmcgYW55dGhpbmcuICBT ZWUgTGlicmVPZmZpY2UgYnVnCiAgOzsgaHR0cHM6Ly9idWdzLmZyZWVkZXNrdG9wLm9yZy9zaG93 X2J1Zy5jZ2k/aWQ9Mzc1MzEuICBBIHdvcmthcm91bmQKICA7OyBpcyB0byBzdGFydCBzb2ZmaWNl IHdpdGggYSBzZXBhcmF0ZSBVc2VySW5zdGFsbGF0aW9uIGRpcmVjdG9yeS4KICAobGV0ICgodG1w LXVzZXItaW5zdGFsbC1kaXIgKG1ha2UtdGVtcC1maWxlICJsaWJyZW9mZmljZS1kb2N2aWV3IiB0 KSkpCiAgICAoZG9jLXZpZXctc3RhcnQtcHJvY2VzcyAib2RmLT5wZGYiIGRvYy12aWV3LW9kZi0+ cGRmLWNvbnZlcnRlci1wcm9ncmFtCgkJCSAgICAobGlzdAoJCQkgICAgIChjb25jYXQgIi1lbnY6 VXNlckluc3RhbGxhdGlvbj1maWxlOi8vIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgOzsgVGhlIFVSTCBtdXN0IGJlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICA7OyBmaWxlOi8vL0M6L3RtcC9kaXIgb24gV2luZG93cy4KICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIDs7IGh0dHBzOi8vd2lraS5kb2N1bWVudGZvdW5kYXRpb24ub3Jn L1VzZXJQcm9maWxlLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHdoZW4g KGVxIHN5c3RlbS10eXBlICd3aW5kb3dzLW50KQogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAiLyIpCgkJCQkgICAgIHRtcC11c2VyLWluc3RhbGwtZGlyKQoJCQkgICAgICIt LWhlYWRsZXNzIiAiLS1jb252ZXJ0LXRvIiAicGRmIgoJCQkgICAgICItLW91dGRpciIgKGRvYy12 aWV3LS1jdXJyZW50LWNhY2hlLWRpcikgb2RmKQoJCQkgICAgKGxhbWJkYSAoKQoJCQkgICAgICAo ZGVsZXRlLWRpcmVjdG9yeSB0bXAtdXNlci1pbnN0YWxsLWRpciB0KQoJCQkgICAgICAoZnVuY2Fs bCBjYWxsYmFjaykpKSkpCgooZGVmdW4gZG9jLXZpZXctcGRmL3BzLT5wbmcgKHBkZi1wcyBwbmcp CiAgOzsgRklYTUU6IEZpeCBuYW1lIGFuZCBkb2NzdHJpbmcgdG8gYWNjb3VudCBmb3IgZGp2dSZ0 aWZmLgogICJDb252ZXJ0IFBERi1QUyB0byBQTkcgYXN5bmNocm9ub3VzbHkuIgogIChmdW5jYWxs CiAgIChwY2FzZSBkb2Mtdmlldy1kb2MtdHlwZQogICAgICgob3IgJ3BkZiAnb2RmICdlcHViICdj YnogJ2ZiMiAneHBzICdveHBzKQogICAgICBkb2Mtdmlldy1wZGYtPnBuZy1jb252ZXJ0ZXItZnVu Y3Rpb24pCiAgICAgKCdkanZ1ICMnZG9jLXZpZXctZGp2dS0+dGlmZi1jb252ZXJ0ZXItZGRqdnUp CiAgICAgKF8gIydkb2Mtdmlldy1wcy0+cG5nLWNvbnZlcnRlci1naG9zdHNjcmlwdCkpCiAgIHBk Zi1wcyBwbmcgbmlsCiAgIChsZXQgKChyZXNvbHV0aW9uIGRvYy12aWV3LXJlc29sdXRpb24pKQog ICAgIChsYW1iZGEgKCkKICAgICAgIDs7IE9ubHkgY3JlYXRlIHRoZSByZXNvbHV0aW9uIGZpbGUg d2hlbiBpdCdzIGFsbCBkb25lLCBzbyBpdCBhbHNvCiAgICAgICA7OyBzZXJ2ZXMgYXMgYSB3aXRu ZXNzIHRoYXQgdGhlIGNvbnZlcnNpb24gaXMgY29tcGxldGUuCiAgICAgICAod3JpdGUtcmVnaW9u IChwcmluMS10by1zdHJpbmcgcmVzb2x1dGlvbikgbmlsCiAgICAgICAgICAgICAgICAgICAgIChl eHBhbmQtZmlsZS1uYW1lICJyZXNvbHV0aW9uLmVsIgogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAoZG9jLXZpZXctLWN1cnJlbnQtY2FjaGUtZGlyKSkKICAgICAgICAgICAg ICAgICAgICAgbmlsICdzaWxlbnRseSkKICAgICAgICh3aGVuIGRvYy12aWV3LS1jdXJyZW50LXRp bWVyCiAgICAgICAgIChjYW5jZWwtdGltZXIgZG9jLXZpZXctLWN1cnJlbnQtdGltZXIpCiAgICAg ICAgIChzZXRxIGRvYy12aWV3LS1jdXJyZW50LXRpbWVyIG5pbCkpCiAgICAgICAoZG9jLXZpZXct ZGlzcGxheSAoY3VycmVudC1idWZmZXIpICdmb3JjZSkpKSkKCiAgOzsgVXBkYXRlIHRoZSBkaXNw bGF5ZWQgcGFnZXMgYXMgc29vbiBhcyB0aGV5J3JlIGRvbmUgZ2VuZXJhdGluZy4KICAod2hlbiBk b2Mtdmlldy1jb252ZXJzaW9uLXJlZnJlc2gtaW50ZXJ2YWwKICAgIChzZXRxIGRvYy12aWV3LS1j dXJyZW50LXRpbWVyCiAgICAgICAgICAocnVuLWF0LXRpbWUgIjEgc2VjcyIgZG9jLXZpZXctY29u dmVyc2lvbi1yZWZyZXNoLWludGVydmFsCiAgICAgICAgICAgICAgICAgICAgICAgJ2RvYy12aWV3 LWRpc3BsYXkKICAgICAgICAgICAgICAgICAgICAgICAoY3VycmVudC1idWZmZXIpKSkpKQoKKGRl Y2xhcmUtZnVuY3Rpb24gY2xlYXItaW1hZ2UtY2FjaGUgImltYWdlLmMiICgmb3B0aW9uYWwgZmls dGVyKSkKCihkZWZ1biBkb2Mtdmlldy1kb2N1bWVudC0+Yml0bWFwIChwZGYgcG5nIHBhZ2VzKQog ICJDb252ZXJ0IGEgZG9jdW1lbnQgZmlsZSB0byBiaXRtYXAgaW1hZ2VzIGFzeW5jaHJvbm91c2x5 LgpTdGFydCBieSBjb252ZXJ0aW5nIFBBR0VTLCBhbmQgdGhlbiB0aGUgcmVzdC4iCiAgKGlmIChu dWxsIHBhZ2VzKQogICAgICAoZG9jLXZpZXctcGRmL3BzLT5wbmcgcGRmIHBuZykKICAgIDs7IFdl IGNvdWxkIHJlbmRlciBzZXZlcmFsIGBwYWdlcycgd2l0aCBhIHNpbmdsZSBwcm9jZXNzIGlmIHRo ZXkncmUKICAgIDs7IChhbG1vc3QpIGNvbnNlY3V0aXZlLCBidXQgc2luY2UgaW4gOTklIG9mIHRo ZSBjYXNlcywgdGhlcmUnbGwgYmUgb25seQogICAgOzsgYSBzaW5nbGUgcGFnZSBhbnl3YXksIGFu ZCBvZiB0aGUgcmVtYWluaW5nIDElLCBmZXcgY2FzZXMgd2lsbCBoYXZlCiAgICA7OyBjb25zZWN1 dGl2ZSBwYWdlcywgaXQncyBub3Qgd29ydGggdGhlIHRyb3VibGUuCiAgICAobGV0ICgocmVzdCAo Y2RyIHBhZ2VzKSkpCiAgICAgIChmdW5jYWxsIGRvYy12aWV3LXNpbmdsZS1wYWdlLWNvbnZlcnRl ci1mdW5jdGlvbgoJICAgICAgIHBkZiAoZm9ybWF0IHBuZyAoY2FyIHBhZ2VzKSkgKGNhciBwYWdl cykKICAgICAgICAgICAgICAgKGxhbWJkYSAoKQogICAgICAgICAgICAgICAgIChpZiByZXN0CiAg ICAgICAgICAgICAgICAgICAgIChkb2Mtdmlldy1kb2N1bWVudC0+Yml0bWFwIHBkZiBwbmcgcmVz dCkKICAgICAgICAgICAgICAgICAgIDs7IFlpcHBpZSwgdGhlIGltcG9ydGFudCBwYWdlcyBhcmUg ZG9uZSwgdXBkYXRlIHRoZSBkaXNwbGF5LgogICAgICAgICAgICAgICAgICAgKGNsZWFyLWltYWdl LWNhY2hlKQogICAgICAgICAgICAgICAgICAgOzsgRm9yIHRoZSB3aW5kb3dzIHRoYXQgaGF2ZSBh IG1lc3NhZ2UgKGxpa2UgIldlbGNvbWUgdG8KICAgICAgICAgICAgICAgICAgIDs7IERvY1ZpZXci KSBkaXNwbGF5IHByb3BlcnR5LCBjbGVhcmluZyB0aGUgaW1hZ2UgY2FjaGUgaXMKICAgICAgICAg ICAgICAgICAgIDs7IG5vdCBzdWZmaWNpZW50LgogICAgICAgICAgICAgICAgICAgKGRvbGlzdCAo d2luIChnZXQtYnVmZmVyLXdpbmRvdy1saXN0IChjdXJyZW50LWJ1ZmZlcikgbmlsICd2aXNpYmxl KSkKICAgICAgICAgICAgICAgICAgICAgKHdpdGgtc2VsZWN0ZWQtd2luZG93IHdpbgoJICAgICAg ICAgICAgICAgKHdoZW4gKHN0cmluZ3AgKG92ZXJsYXktZ2V0IChkb2Mtdmlldy1jdXJyZW50LW92 ZXJsYXkpICdkaXNwbGF5KSkKCQkgICAgICAgICAoZG9jLXZpZXctZ290by1wYWdlIChkb2Mtdmll dy1jdXJyZW50LXBhZ2UpKSkpKQogICAgICAgICAgICAgICAgICAgOzsgQ29udmVydCB0aGUgcmVz dCBvZiB0aGUgcGFnZXMuCiAgICAgICAgICAgICAgICAgICAoZG9jLXZpZXctcGRmL3BzLT5wbmcg cGRmIHBuZykpKSkpKSkKCihkZWZ1biBkb2Mtdmlldy1wZGYtPnR4dCAocGRmIHR4dCBjYWxsYmFj aykKICAiQ29udmVydCBQREYgdG8gVFhUIGFzeW5jaHJvbm91c2x5IGFuZCBjYWxsIENBTExCQUNL IHdoZW4gZmluaXNoZWQuIgogIChvciAoZXhlY3V0YWJsZS1maW5kIGRvYy12aWV3LXBkZnRvdGV4 dC1wcm9ncmFtKQogICAgICAoZXJyb3IgIllvdSBuZWVkIHRoZSBgcGRmdG90ZXh0JyBwcm9ncmFt IHRvIGNvbnZlcnQgYSBQREYgdG8gdGV4dCIpKQogIChkb2Mtdmlldy1zdGFydC1wcm9jZXNzICJw ZGYtPnR4dCIgZG9jLXZpZXctcGRmdG90ZXh0LXByb2dyYW0KICAgICAgICAgICAgICAgICAgICAg ICAgICAoYXBwZW5kIGRvYy12aWV3LXBkZnRvdGV4dC1wcm9ncmFtLWFyZ3MKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIChsaXN0IHBkZiB0eHQpKQogICAgICAgICAgICAgICAgICAg ICAgICAgIGNhbGxiYWNrKSkKCihkZWZ1biBkb2Mtdmlldy1jdXJyZW50LWNhY2hlLWRvYy1wZGYg KCkKICAiUmV0dXJuIHRoZSBuYW1lIG9mIHRoZSBkb2MucGRmIGluIHRoZSBjdXJyZW50IGNhY2hl IGRpci4KVGhpcyBmaWxlIGV4aXN0cyBvbmx5IGlmIHRoZSBjdXJyZW50IGRvY3VtZW50IGlzbid0 IGEgUERGIG9yIFBTIGZpbGUgYWxyZWFkeS4iCiAgKGV4cGFuZC1maWxlLW5hbWUgImRvYy5wZGYi IChkb2Mtdmlldy0tY3VycmVudC1jYWNoZS1kaXIpKSkKCihkZWZ1biBkb2Mtdmlldy1kb2MtPnR4 dCAodHh0IGNhbGxiYWNrKQogICJDb252ZXJ0IHRoZSBjdXJyZW50IGRvY3VtZW50IHRvIHRleHQg YW5kIGNhbGwgQ0FMTEJBQ0sgd2hlbiBkb25lLiIKICAobWFrZS1kaXJlY3RvcnkgKGRvYy12aWV3 LS1jdXJyZW50LWNhY2hlLWRpcikgdCkKICAocGNhc2UgZG9jLXZpZXctZG9jLXR5cGUKICAgICgn cGRmCiAgICAgOzsgRG9jIGlzIGEgUERGLCBzbyBjb252ZXJ0IGl0IHRvIFRYVAogICAgIChkb2Mt dmlldy1wZGYtPnR4dCBkb2Mtdmlldy0tYnVmZmVyLWZpbGUtbmFtZSB0eHQgY2FsbGJhY2spKQog ICAgKCdwcwogICAgIDs7IERvYyBpcyBhIFBTLCBzbyBjb252ZXJ0IGl0IHRvIFBERiAod2hpY2gg d2lsbCBiZSBjb252ZXJ0ZWQgdG8KICAgICA7OyBUWFQgdGhlcmVhZnRlcikuCiAgICAgKGxldCAo KHBkZiAoZG9jLXZpZXctY3VycmVudC1jYWNoZS1kb2MtcGRmKSkpCiAgICAgICAoZG9jLXZpZXct cHMtPnBkZiBkb2Mtdmlldy0tYnVmZmVyLWZpbGUtbmFtZSBwZGYKICAgICAgICAgICAgICAgICAg ICAgICAgIChsYW1iZGEgKCkgKGRvYy12aWV3LXBkZi0+dHh0IHBkZiB0eHQgY2FsbGJhY2spKSkp KQogICAgKCdkdmkKICAgICA7OyBEb2MgaXMgYSBEVkkuICBUaGlzIG1lYW5zIHRoYXQgYSBkb2Mu cGRmIGFscmVhZHkgZXhpc3RzIGluIGl0cwogICAgIDs7IGNhY2hlIHN1YmRpcmVjdG9yeS4KICAg ICAoZG9jLXZpZXctcGRmLT50eHQgKGRvYy12aWV3LWN1cnJlbnQtY2FjaGUtZG9jLXBkZikgdHh0 IGNhbGxiYWNrKSkKICAgICgnb2RmCiAgICAgOzsgRG9jIGlzIHNvbWUgT0RGIChvciBNUyBPZmZp Y2UpIGRvYy4gIFRoaXMgbWVhbnMgdGhhdCBhIGRvYy5wZGYKICAgICA7OyBhbHJlYWR5IGV4aXN0 cyBpbiBpdHMgY2FjaGUgc3ViZGlyZWN0b3J5LgogICAgIChkb2Mtdmlldy1wZGYtPnR4dCAoZG9j LXZpZXctY3VycmVudC1jYWNoZS1kb2MtcGRmKSB0eHQgY2FsbGJhY2spKQogICAgKF8gKGVycm9y ICJEb2NWaWV3IGRvZXNuJ3Qga25vdyB3aGF0IHRvIGRvIikpKSkKCihkZWZ1biBkb2Mtdmlldy1w cy0+cGRmIChwcyBwZGYgY2FsbGJhY2spCiAgIkNvbnZlcnQgUFMgdG8gUERGIGFzeW5jaHJvbm91 c2x5IGFuZCBjYWxsIENBTExCQUNLIHdoZW4gZmluaXNoZWQuIgogIChvciAoZXhlY3V0YWJsZS1m aW5kIGRvYy12aWV3LXBzMnBkZi1wcm9ncmFtKQogICAgICAoZXJyb3IgIllvdSBuZWVkIHRoZSBg cHMycGRmJyBwcm9ncmFtIHRvIGNvbnZlcnQgUFMgdG8gUERGIikpCiAgKGRvYy12aWV3LXN0YXJ0 LXByb2Nlc3MgInBzLT5wZGYiIGRvYy12aWV3LXBzMnBkZi1wcm9ncmFtCiAgICAgICAgICAgICAg ICAgICAgICAgICAgKGxpc3QKICAgICAgICAgICAgICAgICAgICAgICAgICAgOzsgQXZvaWQgc2Vj dXJpdHkgcHJvYmxlbXMgd2hlbiByZW5kZXJpbmcgZmlsZXMgZnJvbQogICAgICAgICAgICAgICAg ICAgICAgICAgICA7OyB1bnRydXN0ZWQgc291cmNlcy4KICAgICAgICAgICAgICAgICAgICAgICAg ICAgIi1kU0FGRVIiCiAgICAgICAgICAgICAgICAgICAgICAgICAgIDs7IGluLWZpbGUgYW5kIG91 dC1maWxlCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHBzIHBkZikKICAgICAgICAgICAgICAg ICAgICAgICAgICBjYWxsYmFjaykpCgooZGVmdW4gZG9jLXZpZXctYWN0aXZlLXBhZ2VzICgpCiAg KGxldCAoKHBhZ2VzICgpKSkKICAgIChkb2xpc3QgKHdpbiAoZ2V0LWJ1ZmZlci13aW5kb3ctbGlz dCAoY3VycmVudC1idWZmZXIpIG5pbCAndmlzaWJsZSkpCiAgICAgIChsZXQgKChwYWdlIChpbWFn ZS1tb2RlLXdpbmRvdy1nZXQgJ3BhZ2Ugd2luKSkpCiAgICAgICAgKHVubGVzcyAobWVtcSBwYWdl IHBhZ2VzKSAocHVzaCBwYWdlIHBhZ2VzKSkpKQogICAgcGFnZXMpKQoKKGRlZnVuIGRvYy12aWV3 LWNvbnZlcnQtY3VycmVudC1kb2MgKCkKICAiQ29udmVydCBgZG9jLXZpZXctLWJ1ZmZlci1maWxl LW5hbWUnIHRvIGEgc2V0IG9mIHBuZyBmaWxlcywgb25lIGZpbGUgcGVyIHBhZ2UuClRob3NlIGZp bGVzIGFyZSBzYXZlZCBpbiB0aGUgZGlyZWN0b3J5IGdpdmVuIGJ5IHRoZSBmdW5jdGlvbgpgZG9j LXZpZXctLWN1cnJlbnQtY2FjaGUtZGlyJy4iCiAgOzsgTGV0IHN0YWxlIGZpbGVzIHN0aWxsIGRp c3BsYXkgd2hpbGUgd2UgcmVjb21wdXRlIHRoZSBuZXcgb25lcywgc28gb25seQogIDs7IGZsdXNo IHRoZSBjYWNoZSB3aGVuIHRoZSBjb252ZXJzaW9uIGlzIG92ZXIuICBPbmUgb2YgdGhlIHJlYXNv bnMgd2h5IGl0CiAgOzsgaXMgaW1wb3J0YW50IHRvIGtlZXAgZGlzcGxheWluZyB0aGUgc3RhbGUg cGFnZSBpcyBzbyB0aGF0IHJldmVydC1idWZmZXIKICA7OyBwcmVzZXJ2ZXMgdGhlIGhvcml6b250 YWwvdmVydGljYWwgc2Nyb2xsIHNldHRpbmdzICh3aGljaCBhcmUgb3RoZXJ3aXNlCiAgOzsgcmVz ZXQgZHVyaW5nIHRoZSByZWRpc3BsYXkpLgogIChzZXRxIGRvYy12aWV3LS1wZW5kaW5nLWNhY2hl LWZsdXNoIHQpCiAgKGxldCAoKHBuZy1maWxlIChleHBhbmQtZmlsZS1uYW1lCiAgICAgICAgICAg ICAgICAgICAoZm9ybWF0IGRvYy12aWV3LS1pbWFnZS1maWxlLXBhdHRlcm4gIiVkIikKICAgICAg ICAgICAgICAgICAgIChkb2Mtdmlldy0tY3VycmVudC1jYWNoZS1kaXIpKSkpCiAgICAobWFrZS1k aXJlY3RvcnkgKGRvYy12aWV3LS1jdXJyZW50LWNhY2hlLWRpcikgdCkKICAgIChwY2FzZSBkb2Mt dmlldy1kb2MtdHlwZQogICAgICAoJ2R2aQogICAgICAgOzsgRFZJIGZpbGVzIGhhdmUgdG8gYmUg Y29udmVydGVkIHRvIFBERiBiZWZvcmUgR2hvc3RzY3JpcHQgY2FuIHByb2Nlc3MKICAgICAgIDs7 IGl0LgogICAgICAgKGxldCAoKHBkZiAoZG9jLXZpZXctY3VycmVudC1jYWNoZS1kb2MtcGRmKSkp CiAgICAgICAgIChkb2Mtdmlldy1kdmktPnBkZiBkb2Mtdmlldy0tYnVmZmVyLWZpbGUtbmFtZSBw ZGYKICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsYW1iZGEgKCkgKGRvYy12aWV3LXBkZi9w cy0+cG5nIHBkZiBwbmctZmlsZSkpKSkpCiAgICAgICgnb2RmCiAgICAgICA7OyBPREYgZmlsZXMg aGF2ZSB0byBiZSBjb252ZXJ0ZWQgdG8gUERGIGJlZm9yZSBHaG9zdHNjcmlwdCBjYW4KICAgICAg IDs7IHByb2Nlc3MgaXQuCiAgICAgICAobGV0ICgocGRmIChkb2Mtdmlldy1jdXJyZW50LWNhY2hl LWRvYy1wZGYpKQogICAgICAgICAgICAgKG9wZGYgKGV4cGFuZC1maWxlLW5hbWUKICAgICAgICAg ICAgICAgICAgICAoY29uY2F0IChmaWxlLW5hbWUtYmFzZSBkb2Mtdmlldy0tYnVmZmVyLWZpbGUt bmFtZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICIucGRmIikKICAgICAgICAgICAgICAg ICAgICBkb2Mtdmlldy0tY3VycmVudC1jYWNoZS1kaXIpKQogICAgICAgICAgICAgKHBuZy1maWxl IHBuZy1maWxlKSkKCSA7OyBUaGUgdW5vY29udiB0b29sIG9ubHkgc3VwcG9ydHMgYW4gb3V0cHV0 IGRpcmVjdG9yeSwgYnV0IG5vCgkgOzsgZmlsZSBuYW1lLiAgSXQncyBuYW1lZCBsaWtlIHRoZSBp bnB1dCBmaWxlIHdpdGggdGhlCgkgOzsgZXh0ZW5zaW9uIHJlcGxhY2VkIGJ5IHBkZi4KICAgICAg ICAgKGZ1bmNhbGwgZG9jLXZpZXctb2RmLT5wZGYtY29udmVydGVyLWZ1bmN0aW9uIGRvYy12aWV3 LS1idWZmZXItZmlsZS1uYW1lCiAgICAgICAgICAgICAgICAgIChsYW1iZGEgKCkKCQkgICAgOzsg UmVuYW1lIHRvIGRvYy5wZGYKCQkgICAgKHJlbmFtZS1maWxlIG9wZGYgcGRmKQoJCSAgICAoZG9j LXZpZXctcGRmL3BzLT5wbmcgcGRmIHBuZy1maWxlKSkpKSkKICAgICAgOzsgVGhlIGRvYy12aWV3 LW1vZGUtcCBjaGVjayBlbnN1cmVzIHRoYXQgZXB1YiwgY2J6LCBmYjIgYW5kCiAgICAgIDs7IChv KXhwcyBhcmUgaGFuZGxlZCB3aXRoIG11dG9vbAogICAgICAoKG9yICdwZGYgJ2RqdnUgJ2VwdWIg J2NieiAnZmIyICd4cHMgJ294cHMpCiAgICAgICAobGV0ICgocGFnZXMgKGRvYy12aWV3LWFjdGl2 ZS1wYWdlcykpKQogICAgICAgICA7OyBDb252ZXJ0IGRvYyB0byBiaXRtYXAgaW1hZ2VzIHN0YXJ0 aW5nIHdpdGggdGhlIGFjdGl2ZSBwYWdlcy4KICAgICAgICAgKGRvYy12aWV3LWRvY3VtZW50LT5i aXRtYXAgZG9jLXZpZXctLWJ1ZmZlci1maWxlLW5hbWUgcG5nLWZpbGUgcGFnZXMpKSkKICAgICAg KF8KICAgICAgIDs7IENvbnZlcnQgdG8gUE5HIGltYWdlcy4KICAgICAgIChkb2Mtdmlldy1wZGYv cHMtPnBuZyBkb2Mtdmlldy0tYnVmZmVyLWZpbGUtbmFtZSBwbmctZmlsZSkpKSkpCgo7Ozs7IFNs aWNpbmcKCihkZWNsYXJlLWZ1bmN0aW9uIGltYWdlLXNpemUgImltYWdlLmMiIChzcGVjICZvcHRp b25hbCBwaXhlbHMgZnJhbWUpKQoKKGRlZnVuIGRvYy12aWV3LXNldC1zbGljZSAoeCB5IHdpZHRo IGhlaWdodCkKICAiU2V0IHRoZSBzbGljZSBvZiB0aGUgaW1hZ2VzIHRoYXQgc2hvdWxkIGJlIGRp c3BsYXllZC4KWW91IGNhbiB1c2UgdGhpcyBmdW5jdGlvbiB0byB0ZWxsIGRvYy12aWV3IG5vdCB0 byBkaXNwbGF5IHRoZQptYXJnaW5zIG9mIHRoZSBkb2N1bWVudC4gIEl0IHByb21wdHMgZm9yIHRo ZSB0b3AtbGVmdCBjb3JuZXIgKFgKYW5kIFkpIG9mIHRoZSBzbGljZSB0byBkaXNwbGF5IGFuZCBp dHMgV0lEVEggYW5kIEhFSUdIVC4KClNlZSBgZG9jLXZpZXctc2V0LXNsaWNlLXVzaW5nLW1vdXNl JyBhbmQKYGRvYy12aWV3LXNldC1zbGljZS1mcm9tLWJvdW5kaW5nLWJveCcgZm9yIG1vcmUgY29u dmVuaWVudCB3YXlzCnRvIGRvIHRoYXQuICBUbyByZXNldCB0aGUgc2xpY2UgdXNlIGBkb2Mtdmll dy1yZXNldC1zbGljZScuIgogIChpbnRlcmFjdGl2ZQogICAobGV0KiAoKHNpemUgKGltYWdlLXNp emUgKGRvYy12aWV3LWN1cnJlbnQtaW1hZ2UpIHQpKQoJICAoYSAocmVhZC1udW1iZXIgKGZvcm1h dCAiVG9wLWxlZnQgWCAoMC4uJWQpOiAiIChjYXIgc2l6ZSkpKSkKCSAgKGIgKHJlYWQtbnVtYmVy IChmb3JtYXQgIlRvcC1sZWZ0IFkgKDAuLiVkKTogIiAoY2RyIHNpemUpKSkpCgkgIChjIChyZWFk LW51bWJlciAoZm9ybWF0ICJXaWR0aCAoMC4uJWQpOiAiICgtIChjYXIgc2l6ZSkgYSkpKSkKCSAg KGQgKHJlYWQtbnVtYmVyIChmb3JtYXQgIkhlaWdodCAoMC4uJWQpOiAiICgtIChjZHIgc2l6ZSkg YikpKSkpCiAgICAgKGxpc3QgYSBiIGMgZCkpKQogIChzZXRmIChkb2Mtdmlldy1jdXJyZW50LXNs aWNlKSAobGlzdCB4IHkgd2lkdGggaGVpZ2h0KSkKICA7OyBSZWRpc3BsYXkKICAoZG9jLXZpZXct Z290by1wYWdlIChkb2Mtdmlldy1jdXJyZW50LXBhZ2UpKSkKCihkZWZ1biBkb2Mtdmlldy1zZXQt c2xpY2UtdXNpbmctbW91c2UgKCkKICAiU2V0IHRoZSBzbGljZSBvZiB0aGUgaW1hZ2VzIHRoYXQg c2hvdWxkIGJlIGRpc3BsYXllZC4KWW91IHNldCB0aGUgc2xpY2UgYnkgcHJlc3NpbmcgbW91c2Ut MSBhdCBpdHMgdG9wLWxlZnQgY29ybmVyIGFuZApkcmFnZ2luZyBpdCB0byBpdHMgYm90dG9tLXJp Z2h0IGNvcm5lci4gIFNlZSBhbHNvCmBkb2Mtdmlldy1zZXQtc2xpY2UnIGFuZCBgZG9jLXZpZXct cmVzZXQtc2xpY2UnLiIKICAoaW50ZXJhY3RpdmUpCiAgKGxldCAoeCB5IHcgaCBkb25lKQogICAg KHdoaWxlIChub3QgZG9uZSkKICAgICAgKGxldCAoKGUgKHJlYWQtZXZlbnQKCQkoY29uY2F0ICJQ cmVzcyBtb3VzZS0xIGF0IHRoZSB0b3AtbGVmdCBjb3JuZXIgYW5kICIKCQkJImRyYWcgaXQgdG8g dGhlIGJvdHRvbS1yaWdodCBjb3JuZXIhIikpKSkKCSh3aGVuIChlcSAoY2FyIGUpICdkcmFnLW1v dXNlLTEpCgkgIChzZXRxIHggKGNhciAocG9zbi1vYmplY3QteC15IChldmVudC1zdGFydCBlKSkp KQoJICAoc2V0cSB5IChjZHIgKHBvc24tb2JqZWN0LXgteSAoZXZlbnQtc3RhcnQgZSkpKSkKCSAg KHNldHEgdyAoLSAoY2FyIChwb3NuLW9iamVjdC14LXkgKGV2ZW50LWVuZCBlKSkpIHgpKQoJICAo c2V0cSBoICgtIChjZHIgKHBvc24tb2JqZWN0LXgteSAoZXZlbnQtZW5kIGUpKSkgeSkpCgkgIChz ZXRxIGRvbmUgdCkpKSkKICAgIChkb2Mtdmlldy1zZXQtc2xpY2UgeCB5IHcgaCkpKQoKKGRlZnVu IGRvYy12aWV3LWdldC1ib3VuZGluZy1ib3ggKCkKICAiR2V0IHRoZSBCb3VuZGluZ0JveCBpbmZv cm1hdGlvbiBvZiB0aGUgY3VycmVudCBwYWdlLiIKICAobGV0ICgocGFnZSAoZG9jLXZpZXctY3Vy cmVudC1wYWdlKSkKCShkb2MgKGxldCAoKGNhY2hlLWRvYyAoZG9jLXZpZXctY3VycmVudC1jYWNo ZS1kb2MtcGRmKSkpCgkgICAgICAgKGlmIChmaWxlLWV4aXN0cy1wIGNhY2hlLWRvYykKCQkgICBj YWNoZS1kb2MKCQkgZG9jLXZpZXctLWJ1ZmZlci1maWxlLW5hbWUpKSkpCiAgICAod2l0aC10ZW1w LWJ1ZmZlcgogICAgICAod2hlbiAoZXEgMCAoaWdub3JlLWVycm9ycwoJCSAgICAocHJvY2Vzcy1m aWxlIGRvYy12aWV3LWdob3N0c2NyaXB0LXByb2dyYW0gbmlsIHQKCQkJCSAgbmlsICItZFNBRkVS IiAiLWRCQVRDSCIgIi1kTk9QQVVTRSIgIi1xIgoJCQkJICAiLXNERVZJQ0U9YmJveCIKCQkJCSAg KGZvcm1hdCAiLWRGaXJzdFBhZ2U9JXMiIHBhZ2UpCgkJCQkgIChmb3JtYXQgIi1kTGFzdFBhZ2U9 JXMiIHBhZ2UpCgkJCQkgIGRvYykpKQoJKGdvdG8tY2hhciAocG9pbnQtbWluKSkKCShzYXZlLW1h dGNoLWRhdGEKCSAgKHdoZW4gKHJlLXNlYXJjaC1mb3J3YXJkCgkJIChjb25jYXQgIiUlQm91bmRp bmdCb3g6ICIKCQkJICJcXChbWzpkaWdpdDpdXStcXCkgXFwoW1s6ZGlnaXQ6XV0rXFwpICIKCQkJ ICJcXChbWzpkaWdpdDpdXStcXCkgXFwoW1s6ZGlnaXQ6XV0rXFwpIikKICAgICAgICAgICAgICAg ICBuaWwgdCkKCSAgICAobWFwY2FyICMnc3RyaW5nLXRvLW51bWJlcgoJCSAgICAobGlzdCAobWF0 Y2gtc3RyaW5nIDEpCgkJCSAgKG1hdGNoLXN0cmluZyAyKQoJCQkgIChtYXRjaC1zdHJpbmcgMykK CQkJICAobWF0Y2gtc3RyaW5nIDQpKSkpKSkpKSkKCihkZWZ2YXIgZG9jLXZpZXctcGFwZXItc2l6 ZXMKICAnKChhNCA1OTUgODQyKQogICAgKGE0LWxhbmRzY2FwZSA4NDIgNTk1KQogICAgKGxldHRl ciA2MTIgNzkyKQogICAgKGxldHRlci1sYW5kc2NhcGUgNzkyIDYxMikKICAgIChsZWdhbCA2MTIg MTAwOCkKICAgIChsZWdhbC1sYW5kc2NhcGUgMTAwOCA2MTIpCiAgICAoYTMgODQyIDExOTEpCiAg ICAoYTMtbGFuZHNjYXBlIDExOTEgODQyKQogICAgKHRhYmxvaWQgNzkyIDEyMjQpCiAgICAobGVk Z2VyIDEyMjQgNzkyKSkKICAiQW4gYWxpc3QgZnJvbSBwYXBlciBzaXplIG5hbWVzIHRvIGRpbWVu c2lvbnMuIikKCihkZWZ1biBkb2Mtdmlldy1ndWVzcy1wYXBlci1zaXplIChpdyBpaCkKICAiR3Vl c3MgdGhlIHBhcGVyIHNpemUgYWNjb3JkaW5nIHRvIHRoZSBhc3BlY3QgcmF0aW8uIgogIChjbC1s YWJlbHMgKChkaXYgKHggeSkKCQkocm91bmQgKC8gKCogMTAwLjAgeCkgeSkpKSkKICAgIChsZXQg KChhciAoZGl2IGl3IGloKSkKCSAgKGFsIChtYXBjYXIgKGxhbWJkYSAobCkKCQkJKGxpc3QgKGRp diAobnRoIDEgbCkgKG50aCAyIGwpKSAoY2FyIGwpKSkKCQkgICAgICBkb2Mtdmlldy1wYXBlci1z aXplcykpKQogICAgICAoY2FkciAoYXNzb2MgYXIgYWwpKSkpKQoKKGRlZnVuIGRvYy12aWV3LXNj YWxlLWJvdW5kaW5nLWJveCAocHMgaXcgaWggYmIpCiAgKGxpc3QgKC8gKCogKG50aCAwIGJiKSBp dykgKG50aCAxIChhc3NvYyBwcyBkb2Mtdmlldy1wYXBlci1zaXplcykpKQoJKC8gKCogKG50aCAx IGJiKSBpaCkgKG50aCAyIChhc3NvYyBwcyBkb2Mtdmlldy1wYXBlci1zaXplcykpKQoJKC8gKCog KG50aCAyIGJiKSBpdykgKG50aCAxIChhc3NvYyBwcyBkb2Mtdmlldy1wYXBlci1zaXplcykpKQoJ KC8gKCogKG50aCAzIGJiKSBpaCkgKG50aCAyIChhc3NvYyBwcyBkb2Mtdmlldy1wYXBlci1zaXpl cykpKSkpCgooZGVmdW4gZG9jLXZpZXctc2V0LXNsaWNlLWZyb20tYm91bmRpbmctYm94ICgmb3B0 aW9uYWwgZm9yY2UtcGFwZXItc2l6ZSkKICAiU2V0IHRoZSBzbGljZSBmcm9tIHRoZSBkb2N1bWVu dCdzIEJvdW5kaW5nQm94IGluZm9ybWF0aW9uLgpUaGUgcmVzdWx0IGlzIHRoYXQgdGhlIG1hcmdp bnMgYXJlIGFsbW9zdCBjb21wbGV0ZWx5IGNyb3BwZWQsCm11Y2ggbW9yZSBhY2N1cmF0ZSB0aGFu IGNvdWxkIGJlIGRvbmUgbWFudWFsbHkgdXNpbmcKYGRvYy12aWV3LXNldC1zbGljZS11c2luZy1t b3VzZScuIgogIChpbnRlcmFjdGl2ZSAiUCIpCiAgKGxldCAoKGJiIChkb2Mtdmlldy1nZXQtYm91 bmRpbmctYm94KSkpCiAgICAoaWYgKG5vdCBiYikKCShtZXNzYWdlICJCb3VuZGluZ0JveCBjb3Vs ZG4ndCBiZSBkZXRlcm1pbmVkIikKICAgICAgKGxldCogKChpcyAoaW1hZ2Utc2l6ZSAoZG9jLXZp ZXctY3VycmVudC1pbWFnZSkgdCkpCgkgICAgIChpdyAoY2FyIGlzKSkKCSAgICAgKGloIChjZHIg aXMpKQoJICAgICAocHMgKG9yIChhbmQgKG51bGwgZm9yY2UtcGFwZXItc2l6ZSkKICAgICAgICAg ICAgICAgICAgICAgICAgICAoZG9jLXZpZXctZ3Vlc3MtcGFwZXItc2l6ZSBpdyBpaCkpCgkJICAg ICAoaW50ZXJuIChjb21wbGV0aW5nLXJlYWQgIlBhcGVyIHNpemU6ICIKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvYy12aWV3LXBhcGVyLXNpemVzCgkJCQkJ ICAgICAgbmlsIHQpKSkpCgkgICAgIChiYiAoZG9jLXZpZXctc2NhbGUtYm91bmRpbmctYm94IHBz IGl3IGloIGJiKSkKCSAgICAgKHgxIChudGggMCBiYikpCgkgICAgICh5MSAobnRoIDEgYmIpKQoJ ICAgICAoeDIgKG50aCAyIGJiKSkKCSAgICAgKHkyIChudGggMyBiYikpKQoJOzsgV2Uga2VlcCBh IDIgcGl4ZWwgbWFyZ2luLgoJKGRvYy12aWV3LXNldC1zbGljZSAoLSB4MSAyKSAoLSBpaCB5MiAy KQoJCQkgICAgKCsgKC0geDIgeDEpIDQpICgrICgtIHkyIHkxKSA0KSkpKSkpCgooZGVmdW4gZG9j LXZpZXctcmVzZXQtc2xpY2UgKCkKICAiUmVzZXQgdGhlIGN1cnJlbnQgc2xpY2UuCkFmdGVyIGNh bGxpbmcgdGhpcyBmdW5jdGlvbiB3aG9sZSBwYWdlcyB3aWxsIGJlIHZpc2libGUgYWdhaW4uIgog IChpbnRlcmFjdGl2ZSkKICAoc2V0ZiAoZG9jLXZpZXctY3VycmVudC1zbGljZSkgbmlsKQogIDs7 IFJlZGlzcGxheQogIChkb2Mtdmlldy1nb3RvLXBhZ2UgKGRvYy12aWV3LWN1cnJlbnQtcGFnZSkp KQoKOzs7OyBDb250aW51b3VzIHNjcm9sbCBtaW5vciBtb2RlICh1c2luZyBpbWFnZS1yb2xsLmVs KQoKKGRlZmluZS1taW5vci1tb2RlIGRvYy12aWV3LWNvbnRpbnVvdXMtc2Nyb2xsLW1pbm9yLW1v ZGUKICAiSWYgZW5hYmxlZCBkaXNwbGF5IGRvY3VtZW50IG9uIGEgdmlydHVhbCBzY3JvbGwgcHJv dmlkaW5nCmNvbnRpbnVvdXMgc2Nyb2xsaW5nLiIKICA6bGlnaHRlciAiIENvbnRpbnVvdXMiCiAg OmtleW1hcCBgKCgsKGtiZCAiPGRvd24+IikgLiBpbWFnZS1yb2xsLXNjcm9sbC1mb3J3YXJkKQog ICAgICAgICAgICAoLChrYmQgIjx1cD4iKSAuIGltYWdlLXJvbGwtc2Nyb2xsLWJhY2t3YXJkKQog ICAgICAgICAgICAoLChrYmQgIjxuZXh0PiIpIC4gaW1hZ2Utcm9sbC1uZXh0LXBhZ2UpCiAgICAg ICAgICAgICgsKGtiZCAiPHByaW9yPiIpIC4gaW1hZ2Utcm9sbC1wcmV2aW91cy1wYWdlKQogICAg ICAgICAgICAoLChrYmQgIlMtPG5leHQ+IikgLiBpbWFnZS1yb2xsLXNjcm9sbC1zY3JlZW4tZm9y d2FyZCkKICAgICAgICAgICAgKCwoa2JkICJTLTxwcmlvcj4iKSAuIGltYWdlLXJvbGwtc2Nyb2xs LXNjcmVlbi1iYWNrd2FyZCkpCiAgOnZlcnNpb24gMjkuMAoKICAoc2V0cS1sb2NhbCBkb2Mtdmll dy1zY2FsZS1pbnRlcm5hbGx5IG5pbCkKCiAgKHNldHEtbG9jYWwgaW1hZ2Utcm9sbC1kaXNwbGF5 LXBhZ2UgJ2RvYy12aWV3LWluc2VydC1pbWFnZQogICAgICAgICAgICAgIGltYWdlLXJvbGwtbnVt YmVyLW9mLXBhZ2VzLWZ1bmN0aW9uICdkb2Mtdmlldy1sYXN0LXBhZ2UtbnVtYmVyCiAgICAgICAg ICAgICAgaW1hZ2Utcm9sbC1wYWdlLXNpemVzLWZ1bmN0aW9uICdkb2Mtdmlldy1kZXNpcmVkLXBh Z2Utc2l6ZXMKICAgICAgICAgICAgICBpbWFnZS1yb2xsLWNlbnRlciB0KQoKICA7OyAodW5sZXNz IChkb2Mtdmlldy1hbHJlYWR5LWNvbnZlcnRlZC1wKQogIDs7ICAgKHVzZXItZXJyb3IgIkRvY3Vt ZW50IGNvbnZlcnNpb24gbm90IGZpbmlzaGVkIHlldCIpKQoKICAoYWRkLWhvb2sgJ3dpbmRvdy1j b25maWd1cmF0aW9uLWNoYW5nZS1ob29rICdpbWFnZS1yb2xsLS1yZWRpc3BsYXkgbmlsIHQpCiAg KGFkZC1ob29rICdpbWFnZS1tb2RlLW5ldy13aW5kb3ctZnVuY3Rpb25zICdpbWFnZS1yb2xsLS1u ZXctd2luZG93LWZ1bmN0aW9uIG5pbCB0KQogICh1bmxlc3MgKGxpc3RwIGltYWdlLW1vZGUtd2lu cHJvcHMtYWxpc3QpCiAgICAoc2V0cSBpbWFnZS1tb2RlLXdpbnByb3BzLWFsaXN0IG5pbCkpCgog IChsZXQgKChpbmhpYml0LXJlYWQtb25seSB0KSkKICAgIChlcmFzZS1idWZmZXIpCiAgICAoaW1h Z2Utcm9sbC0tbmV3LXdpbmRvdy1mdW5jdGlvbiAobGlzdCAoc2VsZWN0ZWQtd2luZG93KSkpKQog IChpbWFnZS1yb2xsLS1yZWRpc3BsYXkpKQoKOzs7OyBEaXNwbGF5CgooZGVmdW4gZG9jLXZpZXct ZGVzaXJlZC1wYWdlLXNpemUgKHBhZ2UgJm9wdGlvbmFsIGFyZ3MpCiAgOzsgRnVuY3Rpb24gb25s eSB1c2VzIGZvciBpbWFnZS1yb2xsIG1pbm9yIG1vZGUuIFRha2VuIGZyb20KICA7OyBkb2Mtdmll dy1nb3RvLXBhZ2UgYW5kIGRvYy12aWV3LWluc2VydC1pbWFnZS4KICAobGV0KiAoKGZpbGUgKGV4 cGFuZC1maWxlLW5hbWUKICAgICAgICAgICAgICAgIChmb3JtYXQgZG9jLXZpZXctLWltYWdlLWZp bGUtcGF0dGVybiBwYWdlKQogICAgICAgICAgICAgICAgKGRvYy12aWV3LS1jdXJyZW50LWNhY2hl LWRpcikpKQogICAgICAgICAoaW1hZ2UgKGlmIChhbmQgZmlsZSAoZmlsZS1yZWFkYWJsZS1wIGZp bGUpKQoJCQkgICAgICAgICAgICAgIChpZiAobm90IGRvYy12aWV3LXNjYWxlLWludGVybmFsbHkp CgkJCSAgICAgICAgICAgICAgICAgIChhcHBseSAjJ2NyZWF0ZS1pbWFnZSBmaWxlIGRvYy12aWV3 LS1pbWFnZS10eXBlIG5pbCBhcmdzKQoJCQkgICAgICAgICAgICAgICAgKHVubGVzcyAobWVtYmVy IDp3aWR0aCBhcmdzKQoJCQkgICAgICAgICAgICAgICAgICAoc2V0cSBhcmdzIGAoLEBhcmdzIDp3 aWR0aCAsZG9jLXZpZXctaW1hZ2Utd2lkdGgpKSkKICAgICAgICAgICAgICAgICAgICAgICh1bmxl c3MgKG1lbWJlciA6dHJhbnNmb3JtLXNtb290aGluZyBhcmdzKQogICAgICAgICAgICAgICAgICAg ICAgICAoc2V0cSBhcmdzIGAoLEBhcmdzIDp0cmFuc2Zvcm0tc21vb3RoaW5nIHQpKSkKCQkJICAg ICAgICAgICAgICAgIChhcHBseSAjJ2NyZWF0ZS1pbWFnZSBmaWxlIGRvYy12aWV3LS1pbWFnZS10 eXBlIG5pbCBhcmdzKSkpKQoJICAgICAgIChzbGljZSAoZG9jLXZpZXctY3VycmVudC1zbGljZSkp CiAgICAgICAgICAgICAgIChzaXplIChpbWFnZS1zaXplIGltYWdlIHQpKQogICAgICAgICAgICAg ICAoYXNwZWN0LXJhdGlvICgvIChmbG9hdCAoY2RyIHNpemUpKSAoY2FyIHNpemUpKSkKCSAgICAg ICAoaW1nLXdpZHRoIChhbmQgaW1hZ2UgKGNhciBzaXplKSkpCgkgICAgICAgKGRpc3BsYXllZC1p bWctd2lkdGggKGlmIChhbmQgaW1hZ2Ugc2xpY2UpCgkJCQkgICAgICAgICAgICAgICAgICAgICAg ICAgICgqICgvIChmbG9hdCAobnRoIDIgc2xpY2UpKQoJCQkJCSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIChjYXIgKGltYWdlLXNpemUgaW1hZ2UgJ3BpeGVscykpKQoJCQkJCSAgICAgICAg ICAgICAgICAgICAgICAgICAgIGltZy13aWR0aCkKCQkJCSAgICAgICAgICAgICAgICAgICAgICAg IGltZy13aWR0aCkpKQogICAgKGNvbnMgZGlzcGxheWVkLWltZy13aWR0aAogICAgICAgICAgKCog YXNwZWN0LXJhdGlvIGRpc3BsYXllZC1pbWctd2lkdGgpKSkpCgooZGVmdW4gZG9jLXZpZXctZGVz aXJlZC1wYWdlLXNpemVzICgpCiAgOzsgRnVuY3Rpb24gb25seSB1c2VzIGZvciBpbWFnZS1yb2xs IG1pbm9yIG1vZGUKICAobGV0IChwYWdlLXNpemVzKQogICAgKGRvdGltZXMgKGkgKGRvYy12aWV3 LWxhc3QtcGFnZS1udW1iZXIpKQogICAgICAocHVzaCAoZG9jLXZpZXctZGVzaXJlZC1wYWdlLXNp emUgKDErIGkpKQogICAgICAgICAgICBwYWdlLXNpemVzKSkKICAgIChucmV2ZXJzZSBwYWdlLXNp emVzKSkpCgooZGVmdW4gZG9jLXZpZXctaW5zZXJ0LWltYWdlIChmaWxlICZyZXN0IGFyZ3MpCiAg Ikluc2VydCB0aGUgZ2l2ZW4gcG5nIEZJTEUuCldoZW4gYGRvYy12aWV3LWNvbnRpbnVvdXMtc2Ny b2xsLW1pbm9yLW1vZGUnIGlzIG5vbi1uaWwsIEZJTEUKc2hvdWxkIGJlIGEgcGFnZSBudW1iZXIu IEFSR1MgaXMgYSBsaXN0IG9mIGltYWdlIGRlc2NyaXB0b3JzLiIKICAod2hlbiBkb2Mtdmlldy0t cGVuZGluZy1jYWNoZS1mbHVzaAogICAgKGNsZWFyLWltYWdlLWNhY2hlKQogICAgKHNldHEgZG9j LXZpZXctLXBlbmRpbmctY2FjaGUtZmx1c2ggbmlsKSkKICAobGV0KiAoKG9sIChpZiBkb2Mtdmll dy1jb250aW51b3VzLXNjcm9sbC1taW5vci1tb2RlCiAgICAgICAgICAgICAgICAgKGltYWdlLXJv bGwtcGFnZS1vdmVybGF5IGZpbGUpCiAgICAgICAgICAgICAgIChkb2Mtdmlldy1jdXJyZW50LW92 ZXJsYXkpKSkpCiAgICAod2hlbiBkb2Mtdmlldy1jb250aW51b3VzLXNjcm9sbC1taW5vci1tb2Rl CiAgICAgIChzZXRxIGZpbGUgKGV4cGFuZC1maWxlLW5hbWUKICAgICAgICAgICAgICAgICAgKGZv cm1hdCBkb2Mtdmlldy0taW1hZ2UtZmlsZS1wYXR0ZXJuIGZpbGUpCiAgICAgICAgICAgICAgICAg IChkb2Mtdmlldy0tY3VycmVudC1jYWNoZS1kaXIpKSkpCiAgICA7OyBPbmx5IGluc2VydCB0aGUg aW1hZ2UgaWYgdGhlIGJ1ZmZlciBpcyB2aXNpYmxlLgogICAgKHdoZW4gKHdpbmRvdy1saXZlLXAg KG92ZXJsYXktZ2V0IG9sICd3aW5kb3cpKQogICAgICAobGV0KiAoKGltYWdlIChpZiAoYW5kIGZp bGUgKGZpbGUtcmVhZGFibGUtcCBmaWxlKSkKCQkJKGlmIChub3QgZG9jLXZpZXctc2NhbGUtaW50 ZXJuYWxseSkKCQkJICAgIChhcHBseSAjJ2NyZWF0ZS1pbWFnZSBmaWxlIGRvYy12aWV3LS1pbWFn ZS10eXBlIG5pbCBhcmdzKQoJCQkgICh1bmxlc3MgKG1lbWJlciA6d2lkdGggYXJncykKCQkJICAg IChzZXRxIGFyZ3MgYCgsQGFyZ3MgOndpZHRoICxkb2Mtdmlldy1pbWFnZS13aWR0aCkpKQogICAg ICAgICAgICAgICAgICAgICAgICAgICh1bmxlc3MgKG1lbWJlciA6dHJhbnNmb3JtLXNtb290aGlu ZyBhcmdzKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNldHEgYXJncyBgKCxAYXJncyA6 dHJhbnNmb3JtLXNtb290aGluZyB0KSkpCgkJCSAgKGFwcGx5ICMnY3JlYXRlLWltYWdlIGZpbGUg ZG9jLXZpZXctLWltYWdlLXR5cGUgbmlsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IChhcHBlbmQgYXJncyAod2hlbiBkb2Mtdmlldy1jb250aW51b3VzLXNjcm9sbC1taW5vci1tb2Rl CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsaXN0IDpt YXJnaW4gaW1hZ2Utcm9sbC12ZXJ0aWNhbC1tYXJnaW4pKSkpKSkpCgkgICAgIChzbGljZSAoZG9j LXZpZXctY3VycmVudC1zbGljZSkpCgkgICAgIChpbWctd2lkdGggKGFuZCBpbWFnZSAoY2FyIChp bWFnZS1zaXplIGltYWdlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAod2hlbiBkb2Mtdmlldy1jb250aW51b3VzLXNjcm9sbC1taW5vci1tb2RlCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQpKSkp KQoJICAgICAoZGlzcGxheWVkLWltZy13aWR0aCAoaWYgKGFuZCBpbWFnZSBzbGljZSkKCQkJCSAg ICAgICgqICgvIChmbG9hdCAobnRoIDIgc2xpY2UpKQoJCQkJCSAgICAoY2FyIChpbWFnZS1zaXpl IGltYWdlICdwaXhlbHMpKSkKCQkJCQkgaW1nLXdpZHRoKQoJCQkJICAgIGltZy13aWR0aCkpCgkg ICAgICh3aW5kb3ctd2lkdGggKGlmIGRvYy12aWV3LWNvbnRpbnVvdXMtc2Nyb2xsLW1pbm9yLW1v ZGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh3aW5kb3ctcGl4ZWwtd2lkdGgpCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKHdpbmRvdy13aWR0aCkpKSkKCShzZXRmIChkb2Mt dmlldy1jdXJyZW50LWltYWdlKSBpbWFnZSkKCSh1bmxlc3MgZG9jLXZpZXctY29udGludW91cy1z Y3JvbGwtbWlub3ItbW9kZQogICAgICAgICAgKG1vdmUtb3ZlcmxheSBvbCAocG9pbnQtbWluKSAo cG9pbnQtbWF4KSkpCgk7OyBJbiBjYXNlIHRoZSB3aW5kb3cgaXMgd2lkZXIgdGhhbiB0aGUgaW1h Z2UsIGNlbnRlciB0aGUgaW1hZ2UKCTs7IGhvcml6b250YWxseS4KICAgICAgICAobGV0ICgocGl4 LXNwZWMgKGlmIGRvYy12aWV3LWNvbnRpbnVvdXMtc2Nyb2xsLW1pbm9yLW1vZGUKICAgICAgICAg ICAgICAgICAgICAgICAgICAgIChsaXN0IGRpc3BsYXllZC1pbWctd2lkdGgpCiAgICAgICAgICAg ICAgICAgICAgICAgICAgZGlzcGxheWVkLWltZy13aWR0aCkpKQoJICAob3ZlcmxheS1wdXQgb2wg J2JlZm9yZS1zdHJpbmcKCQkgICAgICAgKHdoZW4gKGFuZCBpbWFnZSAoPiB3aW5kb3ctd2lkdGgg ZGlzcGxheWVkLWltZy13aWR0aCkpCgkJICAgICAgICAgKHByb3BlcnRpemUgIiAiICdkaXNwbGF5 CgkJCQkgICAgIGAoc3BhY2UgOmFsaWduLXRvICgrIGNlbnRlciAoLTAuNSAuICxwaXgtc3BlYykp KSkpKSkKCShvdmVybGF5LXB1dCBvbCAnZGlzcGxheQoJCSAgICAgKGNvbmQKCQkgICAgICAoaW1h Z2UKCQkgICAgICAgKGlmIHNsaWNlCgkJCSAgIChsaXN0IChjb25zICdzbGljZSBzbGljZSkgaW1h Z2UpCgkJCSBpbWFnZSkpCgkJICAgICAgOzsgV2UncmUgdHJ5aW5nIHRvIGRpc3BsYXkgYSBwYWdl IHRoYXQgZG9lc24ndCBleGlzdC4KCQkgICAgICAoZG9jLXZpZXctLWN1cnJlbnQtY29udmVydGVy LXByb2Nlc3NlcwoJCSAgICAgICA7OyBNYXliZSB0aGUgcGFnZSBkb2Vzbid0IGV4aXN0ICp5ZXQq LgoJCSAgICAgICAiQ2Fubm90IGRpc3BsYXkgdGhpcyBwYWdlICh5ZXQpISIpCgkJICAgICAgKHQK CQkgICAgICAgOzsgVHlwaWNhbGx5IGhhcHBlbnMgaWYgdGhlIGNvbnZlcnNpb24gcHJvY2VzcyBz b21laG93CgkJICAgICAgIDs7IGZhaWxlZC4gIEJldHRlciBub3Qgc2lnbmFsIGFuIGVycm9yIGhl cmUgYmVjYXVzZSBpdAoJCSAgICAgICA7OyBjb3VsZCBwcmV2ZW50IGEgc3Vic2VxdWVudCByZWNv bnZlcnNpb24gZnJvbSBmaXhpbmcKCQkgICAgICAgOzsgdGhlIHByb2JsZW0uCgkJICAgICAgIChj b25jYXQgIkNhbm5vdCBkaXNwbGF5IHRoaXMgcGFnZSFcbiIKCQkJICAgICAgICJNYXliZSBiZWNh dXNlIG9mIGEgY29udmVyc2lvbiBmYWlsdXJlISIpKSkpCgkodW5sZXNzIGRvYy12aWV3LWNvbnRp bnVvdXMtc2Nyb2xsLW1pbm9yLW1vZGUKICAgICAgICAgIChsZXQgKCh3aW4gKG92ZXJsYXktZ2V0 IG9sICd3aW5kb3cpKSkKCSAgIChpZiAoc3RyaW5ncCAob3ZlcmxheS1nZXQgb2wgJ2Rpc3BsYXkp KQoJICAgICAgIChwcm9nbiAgICAgICAgICAgIDtNYWtlIHN1cmUgdGhlIHRleHQgaXMgbm90IHNj cm9sbGVkIG91dCBvZiB2aWV3LgoJCSAoc2V0LXdpbmRvdy1oc2Nyb2xsIHdpbiAwKQoJCSAoc2V0 LXdpbmRvdy12c2Nyb2xsIHdpbiAwKSkKCSAgICAgKGxldCAoKGhzY3JvbGwgKGltYWdlLW1vZGUt d2luZG93LWdldCAnaHNjcm9sbCB3aW4pKQoJCSAgICh2c2Nyb2xsIChpbWFnZS1tb2RlLXdpbmRv dy1nZXQgJ3ZzY3JvbGwgd2luKSkpCgkgICAgICAgOzsgUmVzZXQgc2Nyb2xsIHNldHRpbmdzLCBp biBjYXNlIHRoZXkgd2VyZSBjaGFuZ2VkLgoJICAgICAgIChpZiBoc2Nyb2xsIChzZXQtd2luZG93 LWhzY3JvbGwgd2luIGhzY3JvbGwpKQoJICAgICAgIChpZiB2c2Nyb2xsIChzZXQtd2luZG93LXZz Y3JvbGwgd2luIHZzY3JvbGwgdCkpKSkpKSkpKSkKCihkZWZ1biBkb2Mtdmlldy1zb3J0IChhIGIp CiAgIlJldHVybiBub24tbmlsIGlmIEEgc2hvdWxkIGJlIHNvcnRlZCBiZWZvcmUgQi4KUHJlZGlj YXRlIGZvciBzb3J0aW5nIGBkb2Mtdmlldy0tY3VycmVudC1maWxlcycuIgogIChvciAoPCAobGVu Z3RoIGEpIChsZW5ndGggYikpCiAgICAgIChhbmQgKD0gKGxlbmd0aCBhKSAobGVuZ3RoIGIpKQog ICAgICAgICAgIChzdHJpbmc8IGEgYikpKSkKCihkZWZ1biBkb2Mtdmlldy1kaXNwbGF5IChidWZm ZXIgJm9wdGlvbmFsIGZvcmNlKQogICJTdGFydCB2aWV3aW5nIHRoZSBkb2N1bWVudCBpbiBCVUZG RVIuCklmIEZPUkNFIGlzIG5vbi1uaWwsIHN0YXJ0IHZpZXdpbmcgZXZlbiBpZiB0aGUgZG9jdW1l bnQgZG9lcyBub3QKaGF2ZSB0aGUgcGFnZSB3ZSB3YW50IHRvIHZpZXcuIgogICh3aXRoLWN1cnJl bnQtYnVmZmVyIGJ1ZmZlcgogICAgKGxldCAoKHByZXYtcGFnZXMgZG9jLXZpZXctLWN1cnJlbnQt ZmlsZXMpKQogICAgICAoc2V0cSBkb2Mtdmlldy0tY3VycmVudC1maWxlcwogICAgICAgICAgICAo c29ydCAoZGlyZWN0b3J5LWZpbGVzIChkb2Mtdmlldy0tY3VycmVudC1jYWNoZS1kaXIpIHQKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZm9ybWF0IGRvYy12aWV3LS1pbWFnZS1m aWxlLXBhdHRlcm4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJb MC05XSsiKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQpCiAgICAgICAgICAg ICAgICAgICdkb2Mtdmlldy1zb3J0KSkKICAgICAgKHVubGVzcyAoZXEgKGxlbmd0aCBwcmV2LXBh Z2VzKSAobGVuZ3RoIGRvYy12aWV3LS1jdXJyZW50LWZpbGVzKSkKCShmb3JjZS1tb2RlLWxpbmUt dXBkYXRlKSkKICAgICAgKGRvbGlzdCAod2luIChvciAoZ2V0LWJ1ZmZlci13aW5kb3ctbGlzdCBi dWZmZXIgbmlsIHQpCgkJICAgICAgIChsaXN0IHQpKSkKCShsZXQqICgocGFnZSAoZG9jLXZpZXct Y3VycmVudC1wYWdlIHdpbikpCgkgICAgICAgKHBhZ2VmaWxlIChleHBhbmQtZmlsZS1uYW1lCiAg ICAgICAgICAgICAgICAgICAgICAgICAgKGZvcm1hdCBkb2Mtdmlldy0taW1hZ2UtZmlsZS1wYXR0 ZXJuIHBhZ2UpCiAgICAgICAgICAgICAgICAgICAgICAgICAgKGRvYy12aWV3LS1jdXJyZW50LWNh Y2hlLWRpcikpKSkKCSAgKHdoZW4gKG9yIGZvcmNlCgkJICAgIChhbmQgKG5vdCAobWVtYmVyIHBh Z2VmaWxlIHByZXYtcGFnZXMpKQoJCQkgKG1lbWJlciBwYWdlZmlsZSBkb2Mtdmlldy0tY3VycmVu dC1maWxlcykpKQoJICAgIChpZiAod2luZG93cCB3aW4pCgkJKHdpdGgtc2VsZWN0ZWQtd2luZG93 IHdpbgoJCSAgKGNsLWFzc2VydCAoZXEgKGN1cnJlbnQtYnVmZmVyKSBidWZmZXIpIHQpCgkJICAo ZG9jLXZpZXctZ290by1wYWdlIHBhZ2UpKQoJICAgICAgKGRvYy12aWV3LWdvdG8tcGFnZSBwYWdl KSkpKSkpKSkKCihkZWZ1biBkb2Mtdmlldy1idWZmZXItbWVzc2FnZSAoKQogIDs7IE9ubHkgc2hv dyB0aGlzIG1lc3NhZ2UgaW5pdGlhbGx5LCBub3Qgd2hlbiByZWZyZXNoaW5nIHRoZSBidWZmZXIg KGluIHdoaWNoCiAgOzsgY2FzZSBpdCdzIGJldHRlciB0byBrZWVwIGRpc3BsYXlpbmcgdGhlICJz dGFsZSIgcGFnZSB3aGlsZSBjb21wdXRpbmcKICA7OyB0aGUgZnJlc2ggbmV3IG9uZXMpLgogICh1 bmxlc3MgKG92ZXJsYXktZ2V0IChkb2Mtdmlldy1jdXJyZW50LW92ZXJsYXkpICdkaXNwbGF5KQog ICAgKG92ZXJsYXktcHV0IChkb2Mtdmlldy1jdXJyZW50LW92ZXJsYXkpICdkaXNwbGF5CiAgICAg ICAgICAgICAgICAgKGNvbmNhdCAocHJvcGVydGl6ZSAiV2VsY29tZSB0byBEb2NWaWV3ISIgJ2Zh Y2UgJ2JvbGQpCiAgICAgICAgICAgICAgICAgICAgICAgICAiXG4iCiAgICAgICAgICAgICAgICAg ICAgICAgICAoc3Vic3RpdHV0ZS1jb21tYW5kLWtleXMgIgpJZiB5b3Ugc2VlIHRoaXMgYnVmZmVy IGl0IG1lYW5zIHRoYXQgdGhlIGRvY3VtZW50IHlvdSB3YW50IHRvIHZpZXcgaXMgYmVpbmcKY29u dmVydGVkIHRvIFBORyBhbmQgdGhlIGNvbnZlcnNpb24gb2YgdGhlIGZpcnN0IHBhZ2UgaGFzbid0 IGZpbmlzaGVkIHlldCBvcgpgZG9jLXZpZXctY29udmVyc2lvbi1yZWZyZXNoLWludGVydmFsJyBp cyBzZXQgdG8gbmlsLgoKRm9yIG5vdyB0aGVzZSBrZXlzIGFyZSB1c2VmdWw6ClxcPGRvYy12aWV3 LW1vZGUtbWFwPgpcXFtxdWl0LXdpbmRvd10gOiBCdXJ5IHRoaXMgYnVmZmVyLiAgQ29udmVyc2lv biB3aWxsIGdvIG9uIGluIGJhY2tncm91bmQuClxcW2ltYWdlLWtpbGwtYnVmZmVyXSA6IEtpbGwg dGhlIGNvbnZlcnNpb24gcHJvY2VzcyBhbmQgdGhpcyBidWZmZXIuClxcW2RvYy12aWV3LWtpbGwt cHJvY10gOiBLaWxsIHRoZSBjb252ZXJzaW9uIHByb2Nlc3MuXG4iKSkpKSkKCihkZWNsYXJlLWZ1 bmN0aW9uIHRvb2x0aXAtc2hvdyAidG9vbHRpcCIgKHRleHQgJm9wdGlvbmFsIHVzZS1lY2hvLWFy ZWEpKQoKKGRlZnVuIGRvYy12aWV3LXNob3ctdG9vbHRpcCAoKQogIChpbnRlcmFjdGl2ZSkKICAo dG9vbHRpcC1zaG93IChkb2Mtdmlldy1jdXJyZW50LWluZm8pKSkKCjs7IFdlIGRlZmluZSBhbiBv d24gbWFqb3IgbW9kZSBmb3IgRG9jVmlldydzIHRleHQgZGlzcGxheSBzbyB0aGF0IHdlCjs7IGNh biBlYXNpbHkgZGlzdGluZ3Vpc2ggd2hlbiB3ZSB3YW50IHRvIHRvZ2dsZSBiYWNrIGJlY2F1c2UK OzsgdGV4dC1tb2RlIGlzIGEgbGlrZWx5IGNhbmRpZGF0ZSBmb3IgYSBkZWZhdWx0IG1ham9yLW1v ZGUKOzsgKGJ1ZyMzNDQ1MSkuCihkZWZpbmUtZGVyaXZlZC1tb2RlIGRvYy12aWV3LS10ZXh0LXZp ZXctbW9kZSB0ZXh0LW1vZGUgIkRWL1RleHQiCiAgIlZpZXcgbW9kZSB1c2VkIGluIERvY1ZpZXcn cyB0ZXh0IGJ1ZmZlcnMuIgogICh2aWV3LW1vZGUpKQoKKGRlZnVuIGRvYy12aWV3LW9wZW4tdGV4 dCAoKQogICJEaXNwbGF5IHRoZSBjdXJyZW50IGRvYydzIGNvbnRlbnRzIGFzIHRleHQuIgogIChp bnRlcmFjdGl2ZSkKICAoaWYgZG9jLXZpZXctLWN1cnJlbnQtY29udmVydGVyLXByb2Nlc3Nlcwog ICAgICAobWVzc2FnZSAiRG9jVmlldzogcGxlYXNlIHdhaXQgdGlsbCBjb252ZXJzaW9uIGZpbmlz aGVkLiIpCiAgICAobGV0ICgodHh0IChleHBhbmQtZmlsZS1uYW1lICJkb2MudHh0IiAoZG9jLXZp ZXctLWN1cnJlbnQtY2FjaGUtZGlyKSkpCiAgICAgICAgICAocGFnZSAoZG9jLXZpZXctY3VycmVu dC1wYWdlKSkpCiAgICAgIChpZiAoZmlsZS1yZWFkYWJsZS1wIHR4dCkKCSAgKGxldCAoKGluaGli aXQtcmVhZC1vbmx5IHQpCgkJKGJ1ZmZlci11bmRvLWxpc3QgdCkKCQkoZHYtYmZuIGRvYy12aWV3 LS1idWZmZXItZmlsZS1uYW1lKSkKCSAgICAoZXJhc2UtYnVmZmVyKQogICAgICAgICAgICA7OyBG SVhNRTogUmVwbGFjaW5nIHRoZSBidWZmZXIncyBQREYgY29udGVudCB3aXRoIGl0cyB0eHQgcmVu ZGVyaW5nCiAgICAgICAgICAgIDs7IGlzIHByZXR0eSByaXNreS4gIFdlIHNob3VsZCBwcm9iYWJs eSB1c2UgKmFub3RoZXIqCiAgICAgICAgICAgIDs7IGJ1ZmZlciBpbnN0ZWFkLCBzbyB0aGVyZSdz IG11Y2ggbGVzcyByaXNrIG9mCiAgICAgICAgICAgIDs7IG92ZXJ3cml0aW5nIHRoZSBQREYgZmls ZSB3aXRoIHNvbWUgdGV4dCByZW5kZXJpbmcuCgkgICAgKHNldC1idWZmZXItbXVsdGlieXRlIHQp CgkgICAgKGluc2VydC1maWxlLWNvbnRlbnRzIHR4dCkKCSAgICAoZG9jLXZpZXctLXRleHQtdmll dy1tb2RlKQoJICAgIChzZXRxLWxvY2FsIGRvYy12aWV3LS1idWZmZXItZmlsZS1uYW1lIGR2LWJm bikKCSAgICAoc2V0LWJ1ZmZlci1tb2RpZmllZC1wIG5pbCkKCSAgICAoZG9jLXZpZXctbWlub3It bW9kZSkKICAgICAgICAgICAgKGdvdG8tY2hhciAocG9pbnQtbWluKSkKICAgICAgICAgICAgOzsg UHV0IHBvaW50IGF0IHRoZSBzdGFydCBvZiB0aGUgcGFnZSB0aGUgdXNlciB3YXMKICAgICAgICAg ICAgOzsgcmVhZGluZy4gIFBhZ2VzIGFyZSBzZXBhcmF0ZWQgYnkgQ29udHJvbC1MIGNoYXJhY3Rl cnMuCiAgICAgICAgICAgIChyZS1zZWFyY2gtZm9yd2FyZCBwYWdlLWRlbGltaXRlciBuaWwgdCAo MS0gcGFnZSkpCgkgICAgKGFkZC1ob29rICd3cml0ZS1maWxlLWZ1bmN0aW9ucwoJCSAgICAgIChs YW1iZGEgKCkKICAgICAgICAgICAgICAgICAgICAgICAgOzsgRklYTUU6IElmIHRoZSB1c2VyIGNo YW5nZXMgbWFqb3IgbW9kZSBhbmQgdGhlbgogICAgICAgICAgICAgICAgICAgICAgICA7OyBzYXZl cyB0aGUgYnVmZmVyLCB0aGUgUERGIGZpbGUgd2lsbCBiZSBjbG9iYmVyZWQKICAgICAgICAgICAg ICAgICAgICAgICAgOzsgd2l0aCBpdHMgdHh0IHJlbmRlcmluZyEKCQkJKHdoZW4gKGVxIG1ham9y LW1vZGUgJ2RvYy12aWV3LS10ZXh0LXZpZXctbW9kZSkKCQkJICAoZXJyb3IgIkNhbm5vdCBzYXZl IHRleHQgY29udGVudHMgb2YgZG9jdW1lbnQgJXMiCgkJCQkgYnVmZmVyLWZpbGUtbmFtZSkpKQoJ CSAgICAgIG5pbCB0KSkKCShkb2Mtdmlldy1kb2MtPnR4dCB0eHQgJ2RvYy12aWV3LW9wZW4tdGV4 dCkpKSkpCgo7Ozs7OyBUb2dnbGUgYmV0d2VlbiBlZGl0aW5nIGFuZCB2aWV3aW5nCgooZGVmdmFy LWxvY2FsIGRvYy12aWV3LXNhdmVkLXNldHRpbmdzIG5pbAogICJEb2MtdmlldyBzZXR0aW5ncyBz YXZlZCB3aGlsZSBpbiBzb21lIG90aGVyIG1vZGUuIikKKHB1dCAnZG9jLXZpZXctc2F2ZWQtc2V0 dGluZ3MgJ3Blcm1hbmVudC1sb2NhbCB0KQoKKGRlZnVuIGRvYy12aWV3LXRvZ2dsZS1kaXNwbGF5 ICgpCiAgIlRvZ2dsZSBiZXR3ZWVuIGVkaXRpbmcgYSBkb2N1bWVudCBhcyB0ZXh0IG9yIHZpZXdp bmcgaXQuIgogIChpbnRlcmFjdGl2ZSkKICAoY29uZAogICAoKGVxIG1ham9yLW1vZGUgJ2RvYy12 aWV3LW1vZGUpCiAgICA7OyBTd2l0Y2ggdG8gZWRpdGluZyBtb2RlCiAgICAoZG9jLXZpZXcta2ls bC1wcm9jKQogICAgKHNldHEgYnVmZmVyLXJlYWQtb25seSBuaWwpCiAgICA7OyBTd2l0Y2ggdG8g dGhlIHByZXZpb3VzbHkgdXNlZCBtYWpvciBtb2RlIG9yIGZhbGwgYmFjayB0bwogICAgOzsgbm9y bWFsIG1vZGUuCiAgICAoZG9jLXZpZXctZmFsbGJhY2stbW9kZSkKICAgIChkb2Mtdmlldy1taW5v ci1tb2RlIDEpKQogICAoKGVxIG1ham9yLW1vZGUgJ2RvYy12aWV3LS10ZXh0LXZpZXctbW9kZSkK ICAgIChsZXQgKChidWZmZXItdW5kby1saXN0IHQpKQogICAgICA7OyBXZSdyZSBjdXJyZW50bHkg dmlld2luZyB0aGUgZG9jdW1lbnQncyB0ZXh0IGNvbnRlbnRzLCBzbyBzd2l0Y2gKICAgICAgOzsg YmFjayB0byAuCiAgICAgIChzZXRxIGJ1ZmZlci1yZWFkLW9ubHkgbmlsKQogICAgICAoaW5zZXJ0 LWZpbGUtY29udGVudHMgZG9jLXZpZXctLWJ1ZmZlci1maWxlLW5hbWUgbmlsIG5pbCBuaWwgdCkK ICAgICAgKGRvYy12aWV3LWZhbGxiYWNrLW1vZGUpCiAgICAgIChkb2Mtdmlldy1taW5vci1tb2Rl IDEpCiAgICAgIChzZXQtYnVmZmVyLW1vZGlmaWVkLXAgbmlsKSkpCiAgICh0CiAgICA7OyBTd2l0 Y2ggdG8gZG9jLXZpZXctbW9kZQogICAgKHdoZW4gKGFuZCAoYnVmZmVyLW1vZGlmaWVkLXApCgkg ICAgICAgKHktb3Itbi1wICJUaGUgYnVmZmVyIGhhcyBiZWVuIG1vZGlmaWVkLiAgU2F2ZSB0aGUg Y2hhbmdlcz8gIikpCiAgICAgIChzYXZlLWJ1ZmZlcikpCiAgICAoZG9jLXZpZXctbW9kZSkpKSkK Cjs7OzsgU2VhcmNoaW5nCgoKKGRlZnVuIGRvYy12aWV3LXNlYXJjaC1pbnRlcm5hbCAocmVnZXhw IGZpbGUpCiAgIlJldHVybiBhIGxpc3Qgb2YgRklMRSdzIHBhZ2VzIHRoYXQgY29udGFpbiB0ZXh0 IG1hdGNoaW5nIFJFR0VYUC4KVGhlIHZhbHVlIGlzIGFuIGFsaXN0IG9mIHRoZSBmb3JtIChQQUdF IENPTlRFWFRTKSB3aGVyZSBQQUdFIGlzCnRoZSBwYWdlbnVtYmVyIGFuZCBDT05URVhUUyBhcmUg YWxsIGxpbmVzIG9mIHRleHQgY29udGFpbmluZyBhIG1hdGNoLiIKICAod2l0aC10ZW1wLWJ1ZmZl cgogICAgKGluc2VydC1maWxlLWNvbnRlbnRzIGZpbGUpCiAgICAobGV0ICgocGFnZSAxKQoJICAo bGFzdHBhZ2UgMSkKCSAgbWF0Y2hlcykKICAgICAgKHdoaWxlIChyZS1zZWFyY2gtZm9yd2FyZCAo Y29uY2F0ICJcXCg/OlxcKFsMXVxcKVxcfFxcKCIKCQkJCQlyZWdleHAgIlxcKVxcKSIpIG5pbCB0 KQoJKHdoZW4gKG1hdGNoLXN0cmluZyAxKSAoc2V0cSBwYWdlICgxKyBwYWdlKSkpCgkod2hlbiAo bWF0Y2gtc3RyaW5nIDIpCgkgIChpZiAoLz0gcGFnZSBsYXN0cGFnZSkKCSAgICAgIChwdXNoIChj b25zIHBhZ2UKCQkJICAobGlzdCAoYnVmZmVyLXN1YnN0cmluZwoJCQkJIChsaW5lLWJlZ2lubmlu Zy1wb3NpdGlvbikKCQkJCSAobGluZS1lbmQtcG9zaXRpb24pKSkpCgkJICAgIG1hdGNoZXMpCgkg ICAgKHNldHEgbWF0Y2hlcyAoY29ucwoJCQkgICAoYXBwZW5kCgkJCSAgICAob3IKCQkJICAgICA7 OyBUaGlzIHBhZ2UgYWxyZWFkeSBpcyBhIG1hdGNoLgoJCQkgICAgIChjYXIgbWF0Y2hlcykKCQkJ ICAgICA7OyBUaGlzIGlzIHRoZSBmaXJzdCBtYXRjaCBvbiBwYWdlLgoJCQkgICAgIChsaXN0IHBh Z2UpKQoJCQkgICAgKGxpc3QgKGJ1ZmZlci1zdWJzdHJpbmcKCQkJCSAgIChsaW5lLWJlZ2lubmlu Zy1wb3NpdGlvbikKCQkJCSAgIChsaW5lLWVuZC1wb3NpdGlvbikpKSkKCQkJICAgKGNkciBtYXRj aGVzKSkpKQoJICAoc2V0cSBsYXN0cGFnZSBwYWdlKSkpCiAgICAgIChucmV2ZXJzZSBtYXRjaGVz KSkpKQoKKGRlZnVuIGRvYy12aWV3LXNlYXJjaC1uby1vZi1tYXRjaGVzIChsaXN0KQogICJFeHRy YWN0IHRoZSBudW1iZXIgb2YgbWF0Y2hlcyBmcm9tIHRoZSBzZWFyY2ggcmVzdWx0IExJU1QuIgog IChsZXQgKChubyAwKSkKICAgIChkb2xpc3QgKHAgbGlzdCkKICAgICAgKHNldHEgbm8gKCsgbm8g KDEtIChsZW5ndGggcCkpKSkpCiAgICBubykpCgooZGVmdW4gZG9jLXZpZXctc2VhcmNoLWJhY2t3 YXJkIChuZXctcXVlcnkpCiAgIkNhbGwgYGRvYy12aWV3LXNlYXJjaCcgZm9yIGJhY2t3YXJkIHNl YXJjaC4KSWYgcHJlZml4IE5FVy1RVUVSWSBpcyBnaXZlbiwgYXNrIGZvciBhIG5ldyByZWdleHAu IgogIChpbnRlcmFjdGl2ZSAiUCIpCiAgKGRvYy12aWV3LXNlYXJjaCBuZXctcXVlcnkgdCkpCgoo ZGVmdW4gZG9jLXZpZXctc2VhcmNoIChuZXctcXVlcnkgJm9wdGlvbmFsIGJhY2t3YXJkKQogICJK dW1wIHRvIHRoZSBuZXh0IG1hdGNoIG9yIGluaXRpYXRlIGEgbmV3IHNlYXJjaCBpZiBORVctUVVF UlkgaXMgZ2l2ZW4uCklmIHRoZSBjdXJyZW50IGRvY3VtZW50IGhhc24ndCBiZWVuIHRyYW5zZm9y bWVkIHRvIHBsYWluIHRleHQKdGlsbCBub3cgZG8gdGhhdCBmaXJzdC4KSWYgQkFDS1dBUkQgaXMg bm9uLW5pbCwganVtcCB0byB0aGUgcHJldmlvdXMgbWF0Y2guIgogIChpbnRlcmFjdGl2ZSAiUCIp CiAgKGlmIChhbmQgKG5vdCBuZXctcXVlcnkpCgkgICBkb2Mtdmlldy0tY3VycmVudC1zZWFyY2gt bWF0Y2hlcykKICAgICAgKGlmIGJhY2t3YXJkCgkgIChkb2Mtdmlldy1zZWFyY2gtcHJldmlvdXMt bWF0Y2ggMSkKCShkb2Mtdmlldy1zZWFyY2gtbmV4dC1tYXRjaCAxKSkKICAgIDs7IE5ldyBzZWFy Y2gsIHNvIGZvcmdldCB0aGUgb2xkIHJlc3VsdHMuCiAgICAoc2V0cSBkb2Mtdmlldy0tY3VycmVu dC1zZWFyY2gtbWF0Y2hlcyBuaWwpCiAgICAobGV0ICgodHh0IChleHBhbmQtZmlsZS1uYW1lICJk b2MudHh0IgoJCQkJIChkb2Mtdmlldy0tY3VycmVudC1jYWNoZS1kaXIpKSkpCiAgICAgIChpZiAo ZmlsZS1yZWFkYWJsZS1wIHR4dCkKCSAgKHByb2duCgkgICAgKHNldHEgZG9jLXZpZXctLWN1cnJl bnQtc2VhcmNoLW1hdGNoZXMKCQkgIChkb2Mtdmlldy1zZWFyY2gtaW50ZXJuYWwKCQkgICAocmVh ZC1mcm9tLW1pbmlidWZmZXIgIlJlZ2V4cDogIikKCQkgICB0eHQpKQoJICAgIChtZXNzYWdlICJE b2NWaWV3OiBzZWFyY2ggeWllbGRlZCAlZCBtYXRjaGVzLiIKCQkgICAgIChkb2Mtdmlldy1zZWFy Y2gtbm8tb2YtbWF0Y2hlcwoJCSAgICAgIGRvYy12aWV3LS1jdXJyZW50LXNlYXJjaC1tYXRjaGVz KSkpCgk7OyBXZSBtdXN0IGNvbnZlcnQgdG8gVFhUIGZpcnN0IQoJKGlmIGRvYy12aWV3LS1jdXJy ZW50LWNvbnZlcnRlci1wcm9jZXNzZXMKCSAgICAobWVzc2FnZSAiRG9jVmlldzogcGxlYXNlIHdh aXQgdGlsbCBjb252ZXJzaW9uIGZpbmlzaGVkLiIpCgkgIChkb2Mtdmlldy1kb2MtPnR4dCB0eHQg KGxhbWJkYSAoKSAoZG9jLXZpZXctc2VhcmNoIG5pbCkpKSkpKSkpCgooZGVmdW4gZG9jLXZpZXct c2VhcmNoLW5leHQtbWF0Y2ggKGFyZykKICAiR28gdG8gdGhlIEFSR3RoIG5leHQgbWF0Y2hpbmcg cGFnZS4iCiAgKGludGVyYWN0aXZlICJwIikKICAobGV0KiAoKG5leHQtcGFnZXMgKGNsLXJlbW92 ZS1pZgoJCSAgICAgIChsYW1iZGEgKGkpICg8PSAoY2FyIGkpIChkb2Mtdmlldy1jdXJyZW50LXBh Z2UpKSkKCQkgICAgICBkb2Mtdmlldy0tY3VycmVudC1zZWFyY2gtbWF0Y2hlcykpCgkgKHBhZ2Ug KGNhciAobnRoICgxLSBhcmcpIG5leHQtcGFnZXMpKSkpCiAgICAoaWYgcGFnZQoJKGRvYy12aWV3 LWdvdG8tcGFnZSBwYWdlKQogICAgICAod2hlbiAoYW5kCgkgICAgIGRvYy12aWV3LS1jdXJyZW50 LXNlYXJjaC1tYXRjaGVzCgkgICAgICh5LW9yLW4tcCAiTm8gbW9yZSBtYXRjaGVzIGFmdGVyIGN1 cnJlbnQgcGFnZS4gIFdyYXAgdG8gZmlyc3QgbWF0Y2g/ICIpKQoJKGRvYy12aWV3LWdvdG8tcGFn ZSAoY2FhciBkb2Mtdmlldy0tY3VycmVudC1zZWFyY2gtbWF0Y2hlcykpKSkpKQoKKGRlZnVuIGRv Yy12aWV3LXNlYXJjaC1wcmV2aW91cy1tYXRjaCAoYXJnKQogICJHbyB0byB0aGUgQVJHdGggcHJl dmlvdXMgbWF0Y2hpbmcgcGFnZS4iCiAgKGludGVyYWN0aXZlICJwIikKICAobGV0KiAoKHByZXYt cGFnZXMgKGNsLXJlbW92ZS1pZgoJCSAgICAgIChsYW1iZGEgKGkpICg+PSAoY2FyIGkpIChkb2Mt dmlldy1jdXJyZW50LXBhZ2UpKSkKCQkgICAgICBkb2Mtdmlldy0tY3VycmVudC1zZWFyY2gtbWF0 Y2hlcykpCgkgKHBhZ2UgKGNhciAobnRoICgxLSBhcmcpIChucmV2ZXJzZSBwcmV2LXBhZ2VzKSkp KSkKICAgIChpZiBwYWdlCgkoZG9jLXZpZXctZ290by1wYWdlIHBhZ2UpCiAgICAgICh3aGVuIChh bmQKCSAgICAgZG9jLXZpZXctLWN1cnJlbnQtc2VhcmNoLW1hdGNoZXMKCSAgICAgKHktb3Itbi1w ICJObyBtb3JlIG1hdGNoZXMgYmVmb3JlIGN1cnJlbnQgcGFnZS4gIFdyYXAgdG8gbGFzdCBtYXRj aD8gIikpCgkoZG9jLXZpZXctZ290by1wYWdlIChjYWFyIChsYXN0IGRvYy12aWV3LS1jdXJyZW50 LXNlYXJjaC1tYXRjaGVzKSkpKSkpKQoKOzs7OyBVc2VyIGludGVyZmFjZSBjb21tYW5kcyBhbmQg dGhlIG1vZGUKCihwdXQgJ2RvYy12aWV3LW1vZGUgJ21vZGUtY2xhc3MgJ3NwZWNpYWwpCgooZGVm dW4gZG9jLXZpZXctYWxyZWFkeS1jb252ZXJ0ZWQtcCAoKQogICJSZXR1cm4gbm9uLW5pbCBpZiB0 aGUgY3VycmVudCBkb2Mgd2FzIGFscmVhZHkgY29udmVydGVkLiIKICAoYW5kIChmaWxlLWV4aXN0 cy1wIChkb2Mtdmlldy0tY3VycmVudC1jYWNoZS1kaXIpKQogICAgICAgOzsgQ2hlY2sgdGhhdCB0 aGUgcmVzb2x1dGlvbiBpbmZvIGlzIHRoZXJlLCBvdGhlcndpc2UgaXQgbWVhbnMKICAgICAgIDs7 IHRoZSBjb252ZXJzaW9uIGlzIGluY29tcGxldGUuCiAgICAgICAoZmlsZS1yZWFkYWJsZS1wIChl eHBhbmQtZmlsZS1uYW1lICJyZXNvbHV0aW9uLmVsIgogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAoZG9jLXZpZXctLWN1cnJlbnQtY2FjaGUtZGlyKSkpCiAgICAgICAo PiAobGVuZ3RoIChkaXJlY3RvcnktZmlsZXMKICAgICAgICAgICAgICAgICAgIChkb2Mtdmlldy0t Y3VycmVudC1jYWNoZS1kaXIpCiAgICAgICAgICAgICAgICAgICBuaWwgKGZvcm1hdCBkb2Mtdmll dy0taW1hZ2UtZmlsZS1wYXR0ZXJuICJbMC05XSsiKSkpCiAgICAgICAgICAwKSkpCgooZGVmdW4g ZG9jLXZpZXctaW5pdGlhdGUtZGlzcGxheSAoKQogIDs7IFN3aXRjaCB0byBpbWFnZSBkaXNwbGF5 IGlmIHBvc3NpYmxlLgogIChpZiAoZG9jLXZpZXctbW9kZS1wIGRvYy12aWV3LWRvYy10eXBlKQog ICAgICAocHJvZ24KCShkb2Mtdmlldy1idWZmZXItbWVzc2FnZSkKCShzZXRmIChkb2Mtdmlldy1j dXJyZW50LXBhZ2UpIChvciAoZG9jLXZpZXctY3VycmVudC1wYWdlKSAxKSkKCShpZiAoZG9jLXZp ZXctYWxyZWFkeS1jb252ZXJ0ZWQtcCkKCSAgICAocHJvZ24KCSAgICAgIChtZXNzYWdlICJEb2NW aWV3OiB1c2luZyBjYWNoZWQgZmlsZXMhIikKCSAgICAgIDs7IExvYWQgdGhlIHNhdmVkIHJlc29s dXRpb24uCgkgICAgICAobGV0KiAoKHJlcy1maWxlCiAgICAgICAgICAgICAgICAgICAgICAoZXhw YW5kLWZpbGUtbmFtZSAicmVzb2x1dGlvbi5lbCIKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIChkb2Mtdmlldy0tY3VycmVudC1jYWNoZS1kaXIpKSkKICAgICAgICAgICAg ICAgICAgICAgKHJlcwogICAgICAgICAgICAgICAgICAgICAgKHdpdGgtdGVtcC1idWZmZXIKICAg ICAgICAgICAgICAgICAgICAgICAgKHdoZW4gKGZpbGUtcmVhZGFibGUtcCByZXMtZmlsZSkKICAg ICAgICAgICAgICAgICAgICAgICAgICAoaW5zZXJ0LWZpbGUtY29udGVudHMgcmVzLWZpbGUpCiAg ICAgICAgICAgICAgICAgICAgICAgICAgKHJlYWQgKGN1cnJlbnQtYnVmZmVyKSkpKSkpCiAgICAg ICAgICAgICAgICAod2hlbiAobnVtYmVycCByZXMpCgkJICAoc2V0cS1sb2NhbCBkb2Mtdmlldy1y ZXNvbHV0aW9uIHJlcykpKQoJICAgICAgKGRvYy12aWV3LWRpc3BsYXkgKGN1cnJlbnQtYnVmZmVy KSAnZm9yY2UpKQoJICAoZG9jLXZpZXctY29udmVydC1jdXJyZW50LWRvYykpCgkobWVzc2FnZQoJ ICIlcyIKCSAoc3Vic3RpdHV0ZS1jb21tYW5kLWtleXMKCSAgKGNvbmNhdCAiVHlwZSBcXFtkb2Mt dmlldy10b2dnbGUtZGlzcGxheV0gdG8gdG9nZ2xlIGJldHdlZW4gIgoJCSAgImVkaXRpbmcgb3Ig dmlld2luZyB0aGUgZG9jdW1lbnQuIikpKSkKICAgIChpZiAoaW1hZ2UtdHlwZS1hdmFpbGFibGUt cCAncG5nKQogICAgICAgIChtZXNzYWdlICJDb252ZXJzaW9uIHV0aWxpdHkgXCIlc1wiIG5vdCBh dmFpbGFibGUgZm9yICVzIgogICAgICAgICAgICAgICAgIGRvYy12aWV3LWdob3N0c2NyaXB0LXBy b2dyYW0KCSAgICAgICAgIChmaWxlLW5hbWUtZXh0ZW5zaW9uIGRvYy12aWV3LS1idWZmZXItZmls ZS1uYW1lKSkKICAgICAgKG1lc3NhZ2UgIlBORyBzdXBwb3J0IG5vdCBhdmFpbGFibGU7IGNhbid0 IHZpZXcgZG9jdW1lbnQiKSkKICAgIChpZiAoYW5kIChleGVjdXRhYmxlLWZpbmQgZG9jLXZpZXct cGRmdG90ZXh0LXByb2dyYW0pCgkgICAgICh5LW9yLW4tcAoJICAgICAgIlVuYWJsZSB0byByZW5k ZXIgZmlsZS4gIFZpZXcgZXh0cmFjdGVkIHRleHQgaW5zdGVhZD8gIikpCgkoZG9jLXZpZXctb3Bl bi10ZXh0KQogICAgICAoZG9jLXZpZXctdG9nZ2xlLWRpc3BsYXkpKSkpCgooZGVmdmFyIGJvb2tt YXJrLW1ha2UtcmVjb3JkLWZ1bmN0aW9uKQoKKGRlZnVuIGRvYy12aWV3LWNsb25lLWJ1ZmZlci1o b29rICgpCiAgOzsgRklYTUU6IFRoZXJlIGFyZSBzZXZlcmFsIHBvdGVudGlhbCBwcm9ibGVtcyBs aW5rZWQgd2l0aCByZWNvbnZlcnNpb24KICA7OyBhbmQgYXV0by1yZXZlcnQgd2hlbiB3ZSBoYXZl IGluZGlyZWN0IGJ1ZmZlcnMgYmVjYXVzZSB0aGV5IHNoYXJlIHRoZWlyCiAgOzsgL3RtcCBjYWNo ZSBkaXJlY3RvcnkuICBUaGlzIHNoYXJpbmcgaXMgZ29vZCAoeW91J2QgcmF0aGVyIG5vdCByZWNv bnZlcnQKICA7OyBmb3IgZWFjaCBjbG9uZSksIGJ1dCB0aGF0IG1lYW5zIHRoYXQgY2xvbmVzIG5l ZWQgdG8gY29sbGFib3JhdGUgYSBiaXQuCiAgOzsgSSBndWVzcyBpdCBtb3N0bHkgbWVhbnM6IGRl dGVjdCB3aGVuIGEgcmVjb252ZXJzaW9uIHByb2Nlc3MgaXMgYWxyZWFkeQogIDs7IHJ1bm5pbmcs IGFuZCBydW4gdGhlIHNlbnRpbmVsIGluIGFsbCBjbG9uZXMuCiAgOzsKICA7OyBNYXliZSB0aGUg Y2xvbmVzIHNob3VsZCByZWFsbHkgaGF2ZSBhIHNlcGFyYXRlIC90bXAgZGlyZWN0b3J5CiAgOzsg c28gdGhleSBjb3VsZCBoYXZlIGEgZGlmZmVyZW50IHJlc29sdXRpb24gYW5kIHlvdSBjb3VsZCB1 c2UgY2xvbmVzCiAgOzsgZm9yIHpvb21pbmcuCiAgKHJlbW92ZS1vdmVybGF5cyAocG9pbnQtbWlu KSAocG9pbnQtbWF4KSAnZG9jLXZpZXcgdCkKICAoaWYgKGNvbnNwIGltYWdlLW1vZGUtd2lucHJv cHMtYWxpc3QpIChzZXRxIGltYWdlLW1vZGUtd2lucHJvcHMtYWxpc3QgbmlsKSkpCgooZGVmdW4g ZG9jLXZpZXctc2V0LWRvYy10eXBlICgpCiAgIkZpZ3VyZSBvdXQgdGhlIGN1cnJlbnQgZG9jdW1l bnQgdHlwZSAoYGRvYy12aWV3LWRvYy10eXBlJykuIgogIChsZXQgKChuYW1lLXR5cGVzCgkgKHdo ZW4gYnVmZmVyLWZpbGUtbmFtZQoJICAgKGNkciAoYXNzb2Mtc3RyaW5nCiAgICAgICAgICAgICAg ICAgKGZpbGUtbmFtZS1leHRlbnNpb24gYnVmZmVyLWZpbGUtbmFtZSkKICAgICAgICAgICAgICAg ICAnKAogICAgICAgICAgICAgICAgICAgOzsgRFZJCiAgICAgICAgICAgICAgICAgICAoImR2aSIg ZHZpKQogICAgICAgICAgICAgICAgICAgOzsgUERGCiAgICAgICAgICAgICAgICAgICAoInBkZiIg cGRmKSAoImVwZGYiIHBkZikKICAgICAgICAgICAgICAgICAgIDs7IEVQVUIKICAgICAgICAgICAg ICAgICAgICgiZXB1YiIgZXB1YikKICAgICAgICAgICAgICAgICAgIDs7IFBvc3RTY3JpcHQKICAg ICAgICAgICAgICAgICAgICgicHMiIHBzKSAoImVwcyIgcHMpCiAgICAgICAgICAgICAgICAgICA7 OyBEalZ1CiAgICAgICAgICAgICAgICAgICAoImRqdnUiIGRqdnUpCiAgICAgICAgICAgICAgICAg ICA7OyBPcGVuRG9jdW1lbnQgZm9ybWF0cy4KICAgICAgICAgICAgICAgICAgICgib2R0IiBvZGYp ICgib2RzIiBvZGYpICgib2RwIiBvZGYpICgib2RnIiBvZGYpCiAgICAgICAgICAgICAgICAgICAo Im9kYyIgb2RmKSAoIm9kaSIgb2RmKSAoIm9kbSIgb2RmKSAoIm90dCIgb2RmKQogICAgICAgICAg ICAgICAgICAgKCJvdHMiIG9kZikgKCJvdHAiIG9kZikgKCJvdGciIG9kZikKICAgICAgICAgICAg ICAgICAgIDs7IE1pY3Jvc29mdCBPZmZpY2UgZm9ybWF0cyAoYWxzbyBoYW5kbGVkIGJ5IHRoZSBv ZGYKICAgICAgICAgICAgICAgICAgIDs7IGNvbnZlcnNpb24gY2hhaW4pLgogICAgICAgICAgICAg ICAgICAgKCJkb2MiIG9kZikgKCJkb2N4IiBvZGYpICgieGxzIiBvZGYpICgieGxzeCIgb2RmKQog ICAgICAgICAgICAgICAgICAgKCJwcHQiIG9kZikgKCJwcHMiIG9kZikgKCJwcHR4IiBvZGYpICgi cnRmIiBvZGYpCiAgICAgICAgICAgICAgICAgICA7OyBDQloKICAgICAgICAgICAgICAgICAgICgi Y2J6IiBjYnopCiAgICAgICAgICAgICAgICAgICA7OyBGQjIKICAgICAgICAgICAgICAgICAgICgi ZmIyIiBmYjIpCiAgICAgICAgICAgICAgICAgICA7OyAoT3BlbilYUFMKICAgICAgICAgICAgICAg ICAgICgieHBzIiB4cHMpICgib3hwcyIgb3hwcykpCgkJIHQpKSkpCgkoY29udGVudC10eXBlcwoJ IChzYXZlLWV4Y3Vyc2lvbgoJICAgKGdvdG8tY2hhciAocG9pbnQtbWluKSkKCSAgIChjb25kCgkg ICAgKChsb29raW5nLWF0ICIlISIpICcocHMpKQoJICAgICgobG9va2luZy1hdCAiJVBERiIpICco cGRmKSkKCSAgICAoKGxvb2tpbmctYXQgIlwzNjdcMDAyIikgJyhkdmkpKQoJICAgICgobG9va2lu Zy1hdCAiQVQmVEZPUk0iKSAnKGRqdnUpKQogICAgICAgICAgICA7OyBUaGUgZm9sbG93aW5nIHBh dHRlcm4gYWN0dWFsbHkgaXMgZm9yIHJlY29nbml6aW5nCiAgICAgICAgICAgIDs7IHppcC1hcmNo aXZlcywgc28gdGhhdCB0aGlzIHNhbWUgYXNzb2NpYXRpb24gaXMgdXNlZCBmb3IKICAgICAgICAg ICAgOzsgY2J6IGZpbGVzLiBUaGlzIGlzIGZpbmUsIGFzIGNieiBmaWxlcyBzaG91bGQgYmUgaGFu ZGxlZAogICAgICAgICAgICA7OyBsaWtlIGVwdWIgYW55d2F5LgogICAgICAgICAgICAoKGxvb2tp bmctYXQgIlBLIikgJyhlcHViIG9kZikpKSkpKQogICAgKHNldHEtbG9jYWwKICAgICBkb2Mtdmll dy1kb2MtdHlwZQogICAgIChjYXIgKG9yIChucmV2ZXJzZSAoc2VxLWludGVyc2VjdGlvbiBuYW1l LXR5cGVzIGNvbnRlbnQtdHlwZXMgIydlcSkpCiAgICAgICAgICAgICAgKHdoZW4gKGFuZCBuYW1l LXR5cGVzIGNvbnRlbnQtdHlwZXMpCiAgICAgICAgICAgICAgICAoZXJyb3IgIkNvbmZsaWN0aW5n IHR5cGVzOiBuYW1lIHNheXMgJXMgYnV0IGNvbnRlbnQgc2F5cyAlcyIKICAgICAgICAgICAgICAg ICAgICAgICBuYW1lLXR5cGVzIGNvbnRlbnQtdHlwZXMpKQogICAgICAgICAgICAgIG5hbWUtdHlw ZXMgY29udGVudC10eXBlcwogICAgICAgICAgICAgIChlcnJvciAiQ2Fubm90IGRldGVybWluZSB0 aGUgZG9jdW1lbnQgdHlwZSIpKSkpKSkKCihkZWZ1biBkb2Mtdmlldy1zZXQtdXAtc2luZ2xlLWNv bnZlcnRlciAoKQogICJGaW5kIHRoZSByaWdodCBzaW5nbGUtcGFnZSBjb252ZXJ0ZXIgZm9yIHRo ZSBjdXJyZW50IGRvY3VtZW50IHR5cGUuIgogIChwY2FzZS1sZXQgKChgKCxjb252LWZ1bmN0aW9u ICx0eXBlICxleHRlbnNpb24pCiAgICAgICAgICAgICAgIChwY2FzZSBkb2Mtdmlldy1kb2MtdHlw ZQogICAgICAgICAgICAgICAgICgnZGp2dSAobGlzdCAjJ2RvYy12aWV3LWRqdnUtPnRpZmYtY29u dmVydGVyLWRkanZ1ICd0aWZmICJ0aWYiKSkKICAgICAgICAgICAgICAgICAoXyAgICAgKGxpc3Qg ZG9jLXZpZXctcGRmLT5wbmctY29udmVydGVyLWZ1bmN0aW9uICAncG5nICAicG5nIikpKSkpCiAg ICAoc2V0cS1sb2NhbCBkb2Mtdmlldy1zaW5nbGUtcGFnZS1jb252ZXJ0ZXItZnVuY3Rpb24gY29u di1mdW5jdGlvbikKICAgIChzZXRxLWxvY2FsIGRvYy12aWV3LS1pbWFnZS10eXBlIHR5cGUpCiAg ICAoc2V0cS1sb2NhbCBkb2Mtdmlldy0taW1hZ2UtZmlsZS1wYXR0ZXJuIChjb25jYXQgInBhZ2Ut JXMuIiBleHRlbnNpb24pKSkpCgo7OyBkZXNrdG9wLmVsIGludGVncmF0aW9uCgooZGVmdW4gZG9j LXZpZXctZGVza3RvcC1zYXZlLWJ1ZmZlciAoX2Rlc2t0b3AtZGlybmFtZSkKICA7OyBGSVhNRTog VGhpcyBpcyB3cm9uZywgc2luY2UgdGhpcyBpbmZvIGlzIHBlci13aW5kb3cgYnV0IHdlIG9ubHkg ZG8gaXQgb25jZQogIDs7IGhlcmUgZm9yIHRoZSBidWZmZXIuICBJT1cgaXQgc2hvdWxkIGJlIHNh dmVkIHZpYSBzb21ldGhpbmcgbGlrZQogIDs7IGB3aW5kb3ctcGVyc2lzdGVudC1wYXJhbWV0ZXJz Jy4KICBgKChwYWdlIC4gLChkb2Mtdmlldy1jdXJyZW50LXBhZ2UpKQogICAgKHNsaWNlIC4gLChk b2Mtdmlldy1jdXJyZW50LXNsaWNlKSkpKQoKKGRlY2xhcmUtZnVuY3Rpb24gZGVza3RvcC1yZXN0 b3JlLWZpbGUtYnVmZmVyICJkZXNrdG9wIgogICAgICAgICAgICAgICAgICAoYnVmZmVyLWZpbGVu YW1lIGJ1ZmZlci1uYW1lIGJ1ZmZlci1taXNjKSkKCihkZWZ1biBkb2Mtdmlldy1yZXN0b3JlLWRl c2t0b3AtYnVmZmVyIChmaWxlIG5hbWUgbWlzYykKICAobGV0ICgocGFnZSAgKGNkciAoYXNzcSAn cGFnZSBtaXNjKSkpCgkoc2xpY2UgKGNkciAoYXNzcSAnc2xpY2UgbWlzYykpKSkKICAgIChkZXNr dG9wLXJlc3RvcmUtZmlsZS1idWZmZXIgZmlsZSBuYW1lIG1pc2MpCiAgICA7OyBGSVhNRTogV2Ug bmVlZCB0byBydW4gdGhpcyBjb2RlIGFmdGVyIGRpc3BsYXlpbmcgdGhlIGJ1ZmZlci4KICAgICh3 aXRoLXNlbGVjdGVkLXdpbmRvdyAob3IgKGdldC1idWZmZXItd2luZG93IChjdXJyZW50LWJ1ZmZl cikgMCkKCQkJICAgICAgKHNlbGVjdGVkLXdpbmRvdykpCiAgICAgIDs7IEZJWE1FOiBUaGlzIHNo b3VsZCBiZSBkb25lIGZvciBhbGwgd2luZG93cyByZXN0b3JlZCB0aGF0IHNob3cKICAgICAgOzsg dGhpcyBidWZmZXIuICBCYXNpY2FsbHksIHRoZSBwYWdlL3NsaWNlIHNob3VsZCBiZSBzYXZlZCBh cwogICAgICA7OyB3aW5kb3ctcGFyYW1ldGVycyBpbiB0aGUgd2luZG93LXN0YXRlKHMpIGFuZCB0 aGVuIHJlc3RvcmluZyB0aGlzCiAgICAgIDs7IHdpbmRvdy1zdGF0ZSBzaG91bGQgY2FsbCB1cyBi YWNrICh0byBpbnRlcnByZXQvdXNlIHRob3NlIHBhcmFtZXRlcnMpLgogICAgICAoZG9jLXZpZXct Z290by1wYWdlIHBhZ2UpCiAgICAgICh3aGVuIHNsaWNlIChhcHBseSAjJ2RvYy12aWV3LXNldC1z bGljZSBzbGljZSkpCiAgICAgIChjdXJyZW50LWJ1ZmZlcikpKSkKCihhZGQtdG8tbGlzdCAnZGVz a3RvcC1idWZmZXItbW9kZS1oYW5kbGVycwoJICAgICAnKGRvYy12aWV3LW1vZGUgLiBkb2Mtdmll dy1yZXN0b3JlLWRlc2t0b3AtYnVmZmVyKSkKCjs7OyMjI2F1dG9sb2FkCihkZWZ1biBkb2Mtdmll dy1tb2RlICgpCiAgIk1ham9yIG1vZGUgaW4gRG9jVmlldyBidWZmZXJzLgoKRG9jVmlldyBNb2Rl IGlzIGFuIEVtYWNzIGRvY3VtZW50IHZpZXdlci4gIEl0IGRpc3BsYXlzIFBERiwgUFMKYW5kIERW SSBmaWxlcyAoYXMgUE5HIGltYWdlcykgaW4gRW1hY3MgYnVmZmVycy4KCllvdSBjYW4gdXNlIFxc PGRvYy12aWV3LW1vZGUtbWFwPlxcW2RvYy12aWV3LXRvZ2dsZS1kaXNwbGF5XSB0bwp0b2dnbGUg YmV0d2VlbiBkaXNwbGF5aW5nIHRoZSBkb2N1bWVudCBvciBlZGl0aW5nIGl0IGFzIHRleHQuClxc e2RvYy12aWV3LW1vZGUtbWFwfSIKICAoaW50ZXJhY3RpdmUpCgogIChpZiAoPSAocG9pbnQtbWlu KSAocG9pbnQtbWF4KSkKICAgICAgOzsgVGhlIGRvYyBpcyBlbXB0eSBvciBkb2Vzbid0IGV4aXN0 IGF0IGFsbCwgc28gZmFsbGJhY2sgdG8KICAgICAgOzsgYW5vdGhlciBtb2RlLiAgV2UgdXNlZCB0 byBhbHNvIGNoZWNrIGZpbGUtZXhpc3RzLXAsIGJ1dCB0aGlzCiAgICAgIDs7IHJldHVybnMgbmls IGZvciB0YXIgbWVtYmVycy4KICAgICAgKGRvYy12aWV3LWZhbGxiYWNrLW1vZGUpCgogICAgKG1h am9yLW1vZGUtc3VzcGVuZCkKCiAgICAoZG9saXN0ICh2YXIgZG9jLXZpZXctc2F2ZWQtc2V0dGlu Z3MpCiAgICAgIChzZXQgKG1ha2UtbG9jYWwtdmFyaWFibGUgKGNhciB2YXIpKSAoY2RyIHZhcikp KQoKICAgIDs7IEZpZ3VyZSBvdXQgdGhlIGRvY3VtZW50IHR5cGUuCiAgICAodW5sZXNzIGRvYy12 aWV3LWRvYy10eXBlCiAgICAgIChkb2Mtdmlldy1zZXQtZG9jLXR5cGUpKQogICAgKGRvYy12aWV3 LXNldC11cC1zaW5nbGUtY29udmVydGVyKQogICAgKHVubGVzcyAobWVtcSBkb2Mtdmlldy1kb2Mt dHlwZSAnKHBzKSkKICAgICAgKHNldHEtbG9jYWwgcmVxdWlyZS1maW5hbC1uZXdsaW5lIG5pbCkp CgogICAgOzsgVGhlc2UgbW9kZXMgd2lsbCBqdXN0IGRpc3BsYXkgIjEiLCBzbyB0aGV5J3JlIG5v dCB2ZXJ5IHVzZWZ1bAogICAgOzsgaW4gdGhpcyBtb2RlLgogICAgKHNldHEtbG9jYWwgZ2xvYmFs LWxpbnVtLW1vZGUgbmlsCiAgICAgICAgICAgICAgICBkaXNwbGF5LWxpbmUtbnVtYmVycy1tb2Rl IG5pbCkKCiAgICAoZG9jLXZpZXctbWFrZS1zYWZlLWRpciBkb2Mtdmlldy1jYWNoZS1kaXJlY3Rv cnkpCiAgICA7OyBIYW5kbGUgY29tcHJlc3NlZCBmaWxlcywgcmVtb3RlIGZpbGVzLCBmaWxlcyBp bnNpZGUgYXJjaGl2ZXMKICAgIChzZXRxLWxvY2FsIGRvYy12aWV3LS1idWZmZXItZmlsZS1uYW1l CgkJKGNvbnZlcnQtc3RhbmRhcmQtZmlsZW5hbWUKICAgICAgICAgICAgICAgICAoY29uZAogICAg ICAgICAgICAgICAgICAoamthLWNvbXByLXJlYWxseS1kby1jb21wcmVzcwogICAgICAgICAgICAg ICAgICAgOzsgRklYTUU6IHRoZXJlJ3MgYSByaXNrIG9mIG5hbWUgY29uZmxpY3RzIGhlcmUuCiAg ICAgICAgICAgICAgICAgICAoZXhwYW5kLWZpbGUtbmFtZQogICAgICAgICAgICAgICAgICAgIChm aWxlLW5hbWUtbm9uZGlyZWN0b3J5CiAgICAgICAgICAgICAgICAgICAgIChmaWxlLW5hbWUtc2Fu cy1leHRlbnNpb24gYnVmZmVyLWZpbGUtbmFtZSkpCiAgICAgICAgICAgICAgICAgICAgZG9jLXZp ZXctY2FjaGUtZGlyZWN0b3J5KSkKICAgICAgICAgICAgICAgICAgOzsgSXMgdGhlIGZpbGUgcmVh ZGFibGUgYnkgbG9jYWwgcHJvY2Vzc2VzPwogICAgICAgICAgICAgICAgICA7OyBXZSB1c2VkIHRv IHVzZSBgZmlsZS1yZW1vdGUtcCcgYnV0IGl0J3MgdW5jbGVhciB3aGF0IGl0J3MKICAgICAgICAg ICAgICAgICAgOzsgc3VwcG9zZWQgdG8gcmV0dXJuIG5pbCBmb3IgdGhpbmdzIGxpa2UgbG9jYWwg ZmlsZXMgYWNjZXNzZWQKICAgICAgICAgICAgICAgICAgOzsgdmlhIGBzdScgb3IgdmlhIGZpbGU6 Ly8uLi4KICAgICAgICAgICAgICAgICAgKChsZXQgKChmaWxlLW5hbWUtaGFuZGxlci1hbGlzdCBu aWwpKQogICAgICAgICAgICAgICAgICAgICAobm90IChhbmQgYnVmZmVyLWZpbGUtbmFtZQogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZpbGUtcmVhZGFibGUtcCBidWZmZXItZmlsZS1u YW1lKSkpKQogICAgICAgICAgICAgICAgICAgOzsgRklYTUU6IHRoZXJlJ3MgYSByaXNrIG9mIG5h bWUgY29uZmxpY3RzIGhlcmUuCiAgICAgICAgICAgICAgICAgICAoZXhwYW5kLWZpbGUtbmFtZQog ICAgICAgICAgICAgICAgICAgIChpZiBidWZmZXItZmlsZS1uYW1lCgkJCShmaWxlLW5hbWUtbm9u ZGlyZWN0b3J5IGJ1ZmZlci1maWxlLW5hbWUpCiAgICAgICAgICAgICAgICAgICAgICAoYnVmZmVy LW5hbWUpKQogICAgICAgICAgICAgICAgICAgIGRvYy12aWV3LWNhY2hlLWRpcmVjdG9yeSkpCiAg ICAgICAgICAgICAgICAgICh0IGJ1ZmZlci1maWxlLW5hbWUpKSkpCiAgICAod2hlbiAobm90IChz dHJpbmc9IGRvYy12aWV3LS1idWZmZXItZmlsZS1uYW1lIGJ1ZmZlci1maWxlLW5hbWUpKQogICAg ICAod3JpdGUtcmVnaW9uIG5pbCBuaWwgZG9jLXZpZXctLWJ1ZmZlci1maWxlLW5hbWUpKQoKICAg IChhZGQtZnVuY3Rpb24gOmFyb3VuZCAobG9jYWwgJ3JldmVydC1idWZmZXItZnVuY3Rpb24pICMn ZG9jLXZpZXctLXJldmVydC1idWZmZXIpCgogICAgKGFkZC1ob29rICdjaGFuZ2UtbWFqb3ItbW9k ZS1ob29rCgkgICAgICAobGFtYmRhICgpCgkJKGRvYy12aWV3LWtpbGwtcHJvYykKCQkocmVtb3Zl LW92ZXJsYXlzIChwb2ludC1taW4pIChwb2ludC1tYXgpICdkb2MtdmlldyB0KSkKCSAgICAgIG5p bCB0KQogICAgKGFkZC1ob29rICdjbG9uZS1pbmRpcmVjdC1idWZmZXItaG9vayAjJ2RvYy12aWV3 LWNsb25lLWJ1ZmZlci1ob29rIG5pbCB0KQogICAgKGFkZC1ob29rICdraWxsLWJ1ZmZlci1ob29r ICMnZG9jLXZpZXcta2lsbC1wcm9jIG5pbCB0KQogICAgKHNldHEtbG9jYWwgZGVza3RvcC1zYXZl LWJ1ZmZlciAjJ2RvYy12aWV3LWRlc2t0b3Atc2F2ZS1idWZmZXIpCgogICAgKHJlbW92ZS1vdmVy bGF5cyAocG9pbnQtbWluKSAocG9pbnQtbWF4KSAnZG9jLXZpZXcgdCkgO0p1c3QgaW4gY2FzZS4K ICAgIDs7IEtlZXAgdHJhY2sgb2YgZGlzcGxheSBpbmZvIChbdmhdc2Nyb2xsLCBwYWdlIG51bWJl ciwgb3ZlcmxheSwKICAgIDs7IC4uLikgIGZvciBlYWNoIHdpbmRvdyBpbiB3aGljaCB0aGlzIGRv Y3VtZW50IGlzIHNob3duLgogICAgKGFkZC1ob29rICdpbWFnZS1tb2RlLW5ldy13aW5kb3ctZnVu Y3Rpb25zCgkgICAgICAjJ2RvYy12aWV3LW5ldy13aW5kb3ctZnVuY3Rpb24gbmlsIHQpCiAgICAo aW1hZ2UtbW9kZS1zZXR1cC13aW5wcm9wcykKCiAgICAoc2V0cS1sb2NhbCBtb2RlLWxpbmUtcG9z aXRpb24KICAgICAgICAgICAgICAgICcoIiBQIiAoOmV2YWwgKG51bWJlci10by1zdHJpbmcgKGRv Yy12aWV3LWN1cnJlbnQtcGFnZSkpKQogICAgICAgICAgICAgICAgICAiLyIgKDpldmFsIChudW1i ZXItdG8tc3RyaW5nIChkb2Mtdmlldy1sYXN0LXBhZ2UtbnVtYmVyKSkpKSkKICAgIDs7IERvbid0 IHNjcm9sbCB1bmxlc3MgdGhlIHVzZXIgc3BlY2lmaWNhbGx5IGFza2VkIGZvciBpdC4KICAgIChz ZXRxLWxvY2FsIGF1dG8taHNjcm9sbC1tb2RlIG5pbCkKICAgIChpZiAoYm91bmRwICdtd2hlZWwt c2Nyb2xsLXVwLWZ1bmN0aW9uKSA7IG5vdCAtLXdpdGhvdXQteCBidWlsZAogICAgICAgIChzZXRx LWxvY2FsIG13aGVlbC1zY3JvbGwtdXAtZnVuY3Rpb24KICAgICAgICAgICAgICAgICAgICAjJ2Rv Yy12aWV3LXNjcm9sbC11cC1vci1uZXh0LXBhZ2UpKQogICAgKGlmIChib3VuZHAgJ213aGVlbC1z Y3JvbGwtZG93bi1mdW5jdGlvbikKICAgICAgICAoc2V0cS1sb2NhbCBtd2hlZWwtc2Nyb2xsLWRv d24tZnVuY3Rpb24KICAgICAgICAgICAgICAgICAgICAjJ2RvYy12aWV3LXNjcm9sbC1kb3duLW9y LXByZXZpb3VzLXBhZ2UpKQogICAgKHNldHEtbG9jYWwgY3Vyc29yLXR5cGUgbmlsKQogICAgKHVz ZS1sb2NhbC1tYXAgZG9jLXZpZXctbW9kZS1tYXApCiAgICAoYWRkLWhvb2sgJ2FmdGVyLXJldmVy dC1ob29rICMnZG9jLXZpZXctcmVjb252ZXJ0LWRvYyBuaWwgdCkKICAgIChzZXRxLWxvY2FsIGJv b2ttYXJrLW1ha2UtcmVjb3JkLWZ1bmN0aW9uCiAgICAgICAgICAgICAgICAjJ2RvYy12aWV3LWJv b2ttYXJrLW1ha2UtcmVjb3JkKQogICAgKHNldHEgbW9kZS1uYW1lICJEb2NWaWV3IgoJICBidWZm ZXItcmVhZC1vbmx5IHQKCSAgbWFqb3ItbW9kZSAnZG9jLXZpZXctbW9kZSkKICAgIChkb2Mtdmll dy1pbml0aWF0ZS1kaXNwbGF5KQogICAgOzsgU3dpdGNoIG9mZiB2aWV3LW1vZGUgZXhwbGljaXRs eSwgYmVjYXVzZSBkb2Mtdmlldy1tb2RlIGlzIHRoZQogICAgOzsgY2Fub25pY2FsIHZpZXcgbW9k ZSBmb3IgUERGL1BTL0RWSSBmaWxlcy4gIFRoaXMgY291bGQgYmUKICAgIDs7IHN3aXRjaGVkIG9u IGF1dG9tYXRpY2FsbHkgZGVwZW5kaW5nIG9uIHRoZSB2YWx1ZSBvZgogICAgOzsgYHZpZXctcmVh ZC1vbmx5Jy4KICAgIChzZXRxLWxvY2FsIHZpZXctcmVhZC1vbmx5IG5pbCkKICAgIChydW4tbW9k ZS1ob29rcyAnZG9jLXZpZXctbW9kZS1ob29rKSkpCgooZGVmdW4gZG9jLXZpZXctZmFsbGJhY2st bW9kZSAoKQogICJGYWxsYmFjayB0byB0aGUgcHJldmlvdXMgb3IgbmV4dCBiZXN0IG1ham9yIG1v ZGUuIgogIChsZXQgKCh2YXJzIChpZiAoZGVyaXZlZC1tb2RlLXAgJ2RvYy12aWV3LW1vZGUpCiAg ICAgICAgICAgICAgICAgIChtYXBjYXIgKGxhbWJkYSAodmFyKSAoY29ucyB2YXIgKHN5bWJvbC12 YWx1ZSB2YXIpKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAnKGRvYy12aWV3LXJlc29sdXRp b24KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlLW1vZGUtd2lucHJvcHMtYWxpc3Qp KSkpKQogICAgKHJlbW92ZS1vdmVybGF5cyAocG9pbnQtbWluKSAocG9pbnQtbWF4KSAnZG9jLXZp ZXcgdCkKICAgIChtYWpvci1tb2RlLXJlc3RvcmUgJyhkb2Mtdmlldy1tb2RlLW1heWJlIGRvYy12 aWV3LW1vZGUpKQogICAgKHdoZW4gdmFycwogICAgICAoc2V0cS1sb2NhbCBkb2Mtdmlldy1zYXZl ZC1zZXR0aW5ncyB2YXJzKSkpKQoKOzs7IyMjYXV0b2xvYWQKKGRlZnVuIGRvYy12aWV3LW1vZGUt bWF5YmUgKCkKICAiU3dpdGNoIHRvIGBkb2Mtdmlldy1tb2RlJyBpZiBwb3NzaWJsZS4KSWYgdGhl IHJlcXVpcmVkIGV4dGVybmFsIHRvb2xzIGFyZSBub3QgYXZhaWxhYmxlLCB0aGVuIGZhbGxiYWNr CnRvIHRoZSBuZXh0IGJlc3QgbW9kZS4iCiAgKGNvbmRpdGlvbi1jYXNlIG5pbAogICAgICAoZG9j LXZpZXctc2V0LWRvYy10eXBlKQogICAgKGVycm9yIChkb2Mtdmlldy1mYWxsYmFjay1tb2RlKSkp CiAgKGlmIChkb2Mtdmlldy1tb2RlLXAgZG9jLXZpZXctZG9jLXR5cGUpCiAgICAgIChkb2Mtdmll dy1tb2RlKQogICAgKGRvYy12aWV3LWZhbGxiYWNrLW1vZGUpKSkKCjs7OyMjI2F1dG9sb2FkCihk ZWZpbmUtbWlub3ItbW9kZSBkb2Mtdmlldy1taW5vci1tb2RlCiAgIlRvZ2dsZSBkaXNwbGF5aW5n IGJ1ZmZlciB2aWEgRG9jIFZpZXcgKERvYyBWaWV3IG1pbm9yIG1vZGUpLgoKU2VlIHRoZSBjb21t YW5kIGBkb2Mtdmlldy1tb2RlJyBmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiB0aGlzIG1vZGUuIgog IDpsaWdodGVyICIgRG9jVmlldyIKICAod2hlbiBkb2Mtdmlldy1taW5vci1tb2RlCiAgICAoYWRk LWhvb2sgJ2NoYW5nZS1tYWpvci1tb2RlLWhvb2sgKGxhbWJkYSAoKSAoZG9jLXZpZXctbWlub3It bW9kZSAtMSkpIG5pbCB0KQogICAgKG1lc3NhZ2UKICAgICAiJXMiCiAgICAgKHN1YnN0aXR1dGUt Y29tbWFuZC1rZXlzCiAgICAgICJUeXBlIFxcW2RvYy12aWV3LXRvZ2dsZS1kaXNwbGF5XSB0byB0 b2dnbGUgYmV0d2VlbiBlZGl0aW5nIG9yIHZpZXdpbmcgdGhlIGRvY3VtZW50LiIpKSkpCgooZGVm dW4gZG9jLXZpZXctY2xlYXItY2FjaGUgKCkKICAiRGVsZXRlIHRoZSB3aG9sZSBjYWNoZSAoYGRv Yy12aWV3LWNhY2hlLWRpcmVjdG9yeScpLiIKICAoaW50ZXJhY3RpdmUpCiAgKGRpcmVkLWRlbGV0 ZS1maWxlIGRvYy12aWV3LWNhY2hlLWRpcmVjdG9yeSAnYWx3YXlzKSkKCihkZWZ1biBkb2Mtdmll dy1kaXJlZC1jYWNoZSAoKQogICJPcGVuIGBkaXJlZCcgaW4gYGRvYy12aWV3LWNhY2hlLWRpcmVj dG9yeScuIgogIChpbnRlcmFjdGl2ZSkKICAoZGlyZWQgZG9jLXZpZXctY2FjaGUtZGlyZWN0b3J5 KSkKCjs7OzsgUHJlc2VudGF0aW9uIG1vZGUKCihkZWZ2YXIgZG9jLXZpZXctcHJlc2VudGF0aW9u LW1vZGUtbWFwCiAgKGxldCAoKG1hcCAobWFrZS1zcGFyc2Uta2V5bWFwKSkpCiAgICAoZGVmaW5l LWtleSBtYXAgIlxlIiAnZG9jLXZpZXctcHJlc2VudGF0aW9uLWV4aXQpCiAgICAoZGVmaW5lLWtl eSBtYXAgInEiICdkb2Mtdmlldy1wcmVzZW50YXRpb24tZXhpdCkKICAgIDs7IChkZWZpbmUta2V5 IG1hcCAiQyIgJ2RvYy12aWV3LWNvbnZlcnQtYWxsLXBhZ2VzKQogICAgbWFwKSkKCihkZWZ2YXIt bG9jYWwgZG9jLXZpZXctcHJlc2VudGF0aW9uLS1zcmMtZGF0YSBuaWwpCgooZGVmdW4gZG9jLXZp ZXctcHJlc2VudGF0aW9uLWV4aXQgKCkKICAiTGVhdmUgRG9jLVZpZXcncyBwcmVzZW50YXRpb24g bW9kZS4iCiAgKGludGVyYWN0aXZlKQogIChkb2Mtdmlldy1wcmVzZW50YXRpb24tbW9kZSAtMSkp CgooZGVmaW5lLW1pbm9yLW1vZGUgZG9jLXZpZXctcHJlc2VudGF0aW9uLW1vZGUKICAiTWlub3Ig bW9kZSB1c2VkIHdoaWxlIGluIHByZXNlbnRhdGlvbiBtb2RlLiIKICA6aW5pdC12YWx1ZSBuaWwg OmtleW1hcCBkb2Mtdmlldy1wcmVzZW50YXRpb24tbW9kZS1tYXAKICAoaWYgZG9jLXZpZXctcHJl c2VudGF0aW9uLW1vZGUKICAgICAgKHByb2duCiAgICAgICAgKHNldHEtbG9jYWwgbW9kZS1saW5l LWZvcm1hdCBuaWwpCiAgICAgICAgKGRvYy12aWV3LWZpdC1wYWdlLXRvLXdpbmRvdykKICAgICAg ICA7OyAoZG9jLXZpZXctY29udmVydC1hbGwtcGFnZXMpCiAgICAgICAgKQogICAgKGtpbGwtbG9j YWwtdmFyaWFibGUgJ21vZGUtbGluZS1mb3JtYXQpCiAgICAobGV0ICgocG4gKGRvYy12aWV3LWN1 cnJlbnQtcGFnZSkpCiAgICAgICAgICAod2luIChzZWxlY3RlZC13aW5kb3cpKSkKICAgICAgKGRv Yy12aWV3LXByZXNlbnRhdGlvbi0tcHJvcGFnYXRlLXBuIGRvYy12aWV3LXByZXNlbnRhdGlvbi0t c3JjLWRhdGEgcG4pCiAgICAgIChzZXRxIGRvYy12aWV3LXByZXNlbnRhdGlvbi0tc3JjLWRhdGEg bmlsKQogICAgICAod2l0aC1zZWxlY3RlZC13aW5kb3cgd2luCiAgICAgICAgKGlmIChhbmQgKG9u ZS13aW5kb3ctcCkgKHdpbmRvdy1kZWRpY2F0ZWQtcCkpCiAgICAgICAgICAgIChkZWxldGUtZnJh bWUpKSkpKSkKCihkZWZ1biBkb2Mtdmlldy1wcmVzZW50YXRpb24tLXByb3BhZ2F0ZS1wbiAoc3Jj LWRhdGEgcG4pCiAgKHdoZW4gc3JjLWRhdGEKICAgIChsZXQgKCh3aW4gKGNhciBzcmMtZGF0YSkp KQogICAgICAod2hlbiAoYW5kICh3aW5kb3ctbGl2ZS1wIHdpbikKICAgICAgICAgICAgICAgICAo ZXEgKGN1cnJlbnQtYnVmZmVyKSAod2luZG93LWJ1ZmZlciB3aW4pKSkKICAgICAgICAoc2VsZWN0 LXdpbmRvdyB3aW4pKQogICAgICAod2hlbiAoZXEgKGRvYy12aWV3LWN1cnJlbnQtcGFnZSkgKGNk ciBzcmMtZGF0YSkpCiAgICAgICAgKGRvYy12aWV3LWdvdG8tcGFnZSBwbikpKSkpCgooZGVmdW4g ZG9jLXZpZXctcHJlc2VudGF0aW9uICgpCiAgIlB1dCBEb2MtVmlldyBpbiBwcmVzZW50YXRpb24g bW9kZS4iCiAgKGludGVyYWN0aXZlKQogIChsZXQqICgoc3JjLWRhdGEgKGNvbnMgKHNlbGVjdGVk LXdpbmRvdykgKGRvYy12aWV3LWN1cnJlbnQtcGFnZSkpKQogICAgICAgICAobWFsIChkaXNwbGF5 LW1vbml0b3ItYXR0cmlidXRlcy1saXN0KSkKICAgICAgICAgKG1vbml0b3ItdG9wIDApCiAgICAg ICAgIChtb25pdG9yLWxlZnQgMCkKICAgICAgICAgKG1vbml0b3ItaGVpZ2h0IChkaXNwbGF5LXBp eGVsLWhlaWdodCkpCiAgICAgICAgIChtb25pdG9yLXdpZHRoIChkaXNwbGF5LXBpeGVsLXdpZHRo KSkpCiAgICAoZG9saXN0IChhdHRycyBtYWwpCiAgICAgICh3aGVuIChtZW1xIChzZWxlY3RlZC1m cmFtZSkgKGFsaXN0LWdldCAnZnJhbWVzIGF0dHJzKSkKICAgICAgICAobGV0ICgoZ2VvbSAoYWxp c3QtZ2V0ICdnZW9tZXRyeSBhdHRycykpKQogICAgICAgICAgKHdoZW4gZ2VvbQogICAgICAgICAg ICAoc2V0cSBtb25pdG9yLWxlZnQgKG50aCAwIGdlb20pKQogICAgICAgICAgICAoc2V0cSBtb25p dG9yLXRvcCAobnRoIDEgZ2VvbSkpCiAgICAgICAgICAgIChzZXRxIG1vbml0b3Itd2lkdGggKG50 aCAyIGdlb20pKQogICAgICAgICAgICAoc2V0cSBtb25pdG9yLWhlaWdodCAobnRoIDMgZ2VvbSkp KSkpKQogICAgKGxldCAoKGZyYW1lIChtYWtlLWZyYW1lCiAgICAgICAgICAgICAgICAgIGAoKG1p bmlidWZmZXIgLiBuaWwpCiAgICAgICAgICAgICAgICAgICAgKGZ1bGxzY3JlZW4gLiBmdWxsYm90 aCkKICAgICAgICAgICAgICAgICAgICAoaGVpZ2h0IC4gLChjZWlsaW5nIG1vbml0b3ItaGVpZ2h0 IChmcmFtZS1jaGFyLWhlaWdodCkpKQogICAgICAgICAgICAgICAgICAgIDs7IERvbid0IHVzZSBg Y2VpbGluZycgaGVyZSBzaW5jZSBkb2MtdmlldyB3aWxsIGNlbnRlciB0aGUKICAgICAgICAgICAg ICAgICAgICA7OyBpbWFnZSBpbnN0ZWFkLgogICAgICAgICAgICAgICAgICAgICh3aWR0aCAuICwo Y2VpbGluZyBtb25pdG9yLXdpZHRoIChmcmFtZS1jaGFyLXdpZHRoKSkpCiAgICAgICAgICAgICAg ICAgICAgKG5hbWUgLiAiRG9jLVZpZXctUHJlc2VudGF0aW9uIikKICAgICAgICAgICAgICAgICAg ICAodG9wIC4gLG1vbml0b3ItdG9wKSAobGVmdCAuICxtb25pdG9yLWxlZnQpICh1c2VyLXBvc2l0 aW9uIC4gdCkKICAgICAgICAgICAgICAgICAgICAodmVydGljYWwtc2Nyb2xsLWJhcnMgLiBuaWwp CiAgICAgICAgICAgICAgICAgICAgKGxlZnQtZnJpbmdlIC4gMCkgKHJpZ2h0LWZyaW5nZSAuIDAp CiAgICAgICAgICAgICAgICAgICAgKG1lbnUtYmFyLWxpbmVzIC4gMCkKICAgICAgICAgICAgICAg ICAgICAodG9vbC1iYXItbGluZXMgLiAwKSkpKSkKICAgICAgKHNlbGVjdC13aW5kb3cgKGZyYW1l LXJvb3Qtd2luZG93IGZyYW1lKSkKICAgICAgKHNldHEgZG9jLXZpZXctcHJlc2VudGF0aW9uLS1z cmMtZGF0YSBzcmMtZGF0YSkKICAgICAgKHNldC13aW5kb3ctZGVkaWNhdGVkLXAgKHNlbGVjdGVk LXdpbmRvdykgdCkKICAgICAgKGRvYy12aWV3LXByZXNlbnRhdGlvbi1tb2RlIDEpKSkpCgoKOzs7 OyBCb29rbWFyayBpbnRlZ3JhdGlvbgoKKGRlY2xhcmUtZnVuY3Rpb24gYm9va21hcmstbWFrZS1y ZWNvcmQtZGVmYXVsdAogICAgICAgICAgICAgICAgICAiYm9va21hcmsiICgmb3B0aW9uYWwgbm8t ZmlsZSBuby1jb250ZXh0IHBvc24pKQooZGVjbGFyZS1mdW5jdGlvbiBib29rbWFyay1wcm9wLWdl dCAiYm9va21hcmsiIChib29rbWFyayBwcm9wKSkKKGRlY2xhcmUtZnVuY3Rpb24gYm9va21hcmst ZGVmYXVsdC1oYW5kbGVyICJib29rbWFyayIgKGJtaykpCgooZGVmdW4gZG9jLXZpZXctYm9va21h cmstbWFrZS1yZWNvcmQgKCkKICAobmNvbmMgKGJvb2ttYXJrLW1ha2UtcmVjb3JkLWRlZmF1bHQp CiAgICAgICAgIGAoKHBhZ2UgICAgIC4gLChkb2Mtdmlldy1jdXJyZW50LXBhZ2UpKQogICAgICAg ICAgIChoYW5kbGVyICAuIGRvYy12aWV3LWJvb2ttYXJrLWp1bXApKSkpCgo7OzsjIyNhdXRvbG9h ZAooZGVmdW4gZG9jLXZpZXctYm9va21hcmstanVtcCAoYm1rKQogIDs7IFRoaXMgaW1wbGVtZW50 cyB0aGUgYGhhbmRsZXInIGZ1bmN0aW9uIGludGVyZmFjZSBmb3IgcmVjb3JkIHR5cGUKICA7OyBy ZXR1cm5lZCBieSBgZG9jLXZpZXctYm9va21hcmstbWFrZS1yZWNvcmQnLCB3aGljaCBzZWUuCiAg KGxldCAoKHBhZ2UgKGJvb2ttYXJrLXByb3AtZ2V0IGJtayAncGFnZSkpCgkoc2hvdy1mbi1zeW0g KG1ha2Utc3ltYm9sICJkb2Mtdmlldy1ib29rbWFyay1hZnRlci1qdW1wLWhvb2siKSkpCiAgICAo ZnNldCBzaG93LWZuLXN5bQoJICAobGFtYmRhICgpCgkgICAgKHJlbW92ZS1ob29rICdib29rbWFy ay1hZnRlci1qdW1wLWhvb2sgc2hvdy1mbi1zeW0pCgkgICAgKHdoZW4gKG5vdCAoZXEgbWFqb3It bW9kZSAnZG9jLXZpZXctbW9kZSkpCgkgICAgICAoZG9jLXZpZXctdG9nZ2xlLWRpc3BsYXkpKQoJ ICAgICh3aXRoLXNlbGVjdGVkLXdpbmRvdwoJCShvciAoZ2V0LWJ1ZmZlci13aW5kb3cgKGN1cnJl bnQtYnVmZmVyKSAwKQoJCSAgICAoc2VsZWN0ZWQtd2luZG93KSkKCSAgICAgIChkb2Mtdmlldy1n b3RvLXBhZ2UgcGFnZSkpKSkKICAgIChhZGQtaG9vayAnYm9va21hcmstYWZ0ZXItanVtcC1ob29r IHNob3ctZm4tc3ltKQogICAgKGJvb2ttYXJrLWRlZmF1bHQtaGFuZGxlciBibWspKSkKCihwdXQg J2RvYy12aWV3LWJvb2ttYXJrLWp1bXAgJ2Jvb2ttYXJrLWhhbmRsZXItdHlwZSAiRG9jdmlldyIp Cgo7OyBPYnNvbGV0ZS4KCihkZWZ1biBkb2Mtdmlldy1pbnRlcnNlY3Rpb24gKGwxIGwyKQogIChk ZWNsYXJlIChvYnNvbGV0ZSBzZXEtaW50ZXJzZWN0aW9uICIyOC4xIikpCiAgKG5yZXZlcnNlIChz ZXEtaW50ZXJzZWN0aW9uIGwxIGwyICMnZXEpKSkKCihwcm92aWRlICdkb2MtdmlldykKCjs7IExv Y2FsIFZhcmlhYmxlczoKOzsgZXZhbDogKG91dGxpbmUtbWlub3ItbW9kZSAxKQo7OyBFbmQ6Cgo7 OzsgZG9jLXZpZXcuZWwgZW5kcyBoZXJlCg== --000000000000efbb0a05ddc8c527--