Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtp (Exim 4.84_2) (envelope-from ) id 1awVSU-0004Ez-1c for pgadmin-hackers@arkaria.postgresql.org; Sat, 30 Apr 2016 14:01:22 +0000 Received: from localhost ([127.0.0.1] helo=postgresql.org) by malur.postgresql.org with smtp (Exim 4.84_2) (envelope-from ) id 1awVST-00084n-FJ for pgadmin-hackers@arkaria.postgresql.org; Sat, 30 Apr 2016 14:01:21 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1aw9Yt-00013a-Fb for pgadmin-hackers@postgresql.org; Fri, 29 Apr 2016 14:38:31 +0000 Received: from mail-wm0-x22c.google.com ([2a00:1450:400c:c09::22c]) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.84_2) (envelope-from ) id 1aw9Yj-00084w-WD for pgadmin-hackers@postgresql.org; Fri, 29 Apr 2016 14:38:30 +0000 Received: by mail-wm0-x22c.google.com with SMTP id a17so39894034wme.0 for ; Fri, 29 Apr 2016 07:38:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=enterprisedb-com.20150623.gappssmtp.com; s=20150623; h=mime-version:from:date:message-id:subject:to; bh=sU7m14o2tLC7c6k6e+zIVet7pSiYCNOTfqMVM02ucRw=; b=ClufXQnQZEikiWRNj+AaQ2YQDjKXC4ayEmA4dr9B7SZ83aK28sRZNeIgCdMXXRBTMt xUyZzR49iTL+ebKCbv3mkVRxW40Sw6CmxfMUzulsHO7nwmfekPIcOnQDXRdoEU3DQ0e2 K8vUM0GuPdwG/vKxe2o8Ewukku6jxEc3SllIouP55AuqV60puRzI+VzfKQ0gN3Gd9Ima 4fEwq7/ApqRoD3aCg5vMO78u+UDeDWX715r/27PIzdSkifWICZxVoLJuFfGirDe1BOwW W5uguD6X9hmaqr8uujP6uMp8vDVtkip5zNT+Ye2A470XsOzX3o7PTBSb9lJhJnGrmIMc 8e7A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=sU7m14o2tLC7c6k6e+zIVet7pSiYCNOTfqMVM02ucRw=; b=FwCIgSOKFoDdPtM8ckRWqfmcLvD+7VfgYalS8HKVq3bslE+Q5j8frqvVSA35D+C3q6 11ptDeDskSfzlWWrTav7DtvQneU8oniZsiyWkLhfVx77cCuxSaQRTcwjodEwV6JXCYnc JwzkCQF67TbNVmR+Wgj9xljAr7KWVjpmn/19p7bzVrxEzdirU76JQMcP/87gB6glzYg5 pKsEo/ytbq1IOKcmq4cXo+BiJTwjFuwNTFQPPhmli6DkjzNZn9FgBEaDG0kmVWU0r396 QzAytWPRC6PYrhRcOwrcDb6sN6qievLQvoA8NNF+pusuI/1ikJVJXiykJlS5i6kbhwI0 oxqg== X-Gm-Message-State: AOPr4FWuizHHtQRiizQZYuDwHJwHjaeWSvr/FUKLET+yQ+JqWM+Jku2B1zqUPzcrmWmDtgeD+oqje4zbrBahsghn X-Received: by 10.194.61.134 with SMTP id p6mr21532252wjr.67.1461940700917; Fri, 29 Apr 2016 07:38:20 -0700 (PDT) MIME-Version: 1.0 Received: by 10.28.53.133 with HTTP; Fri, 29 Apr 2016 07:37:51 -0700 (PDT) From: Surinder Kumar Date: Fri, 29 Apr 2016 20:07:51 +0530 Message-ID: Subject: [pgAdmin4][Patch]: View and Materialised View Nodes To: pgadmin-hackers Content-Type: multipart/mixed; boundary=047d7ba9742229e9c40531a098c9 X-Pg-Spam-Score: -2.6 (--) List-Archive: List-Help: List-ID: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: X-Mailing-List: pgadmin-hackers Precedence: bulk Sender: pgadmin-hackers-owner@postgresql.org --047d7ba9742229e9c40531a098c9 Content-Type: multipart/alternative; boundary=047d7ba9742229e9be0531a098c7 --047d7ba9742229e9be0531a098c7 Content-Type: text/plain; charset=UTF-8 Hi, PFA patch for View and Materialised View Nodes. This patch is dependent on *tables node* and its subnodes patch. Please test this patch once latest tables node patch is submitted. I have merged one other patch: *"Don't show Security group of node if it is under Catalogs"* http://www.postgresql.org/message-id/CAM5-9D8RNZXRG0ygvuRqf2wQAEnye-rqBHSrwcr34dnLCemy3w@mail.gmail.com Below are the fix for the review comments given by Dave: *Views*: - Please add sqlCreateHelp and sqlAlterHelp properties to all nodes. *I have added these in View and Materialised View. * - Some of the SQL templates have inconsistent indenting (i.e. not 4 chars), e.g. CREATE OR REPLACE VIEW pem.avail_agents AS ... *Fixed* - When creating any object, the Owner, Schema and Tablespace should have default values. *Fixed* - Property labels should only have the first word capitalised, e.g. Security barrier Check options *Fixed* - The Definition box on the View dialogue should start at a single line and expand as needed - see the Function dialogue *Fixed* - The Cancel button doesn't work on the View dialog. Please check them all. *In latest code pull, It **seems to be** fixed. not reproducible at my end.* - The Save button doesn't close the View dialog, nor does it add the tree node. *In latest code pull, It **seems to be** fixed. not reproducible at my end.* - Dependencies and Dependents don't show icons, and have very tall rows. This issue likely comes from elsewhere as I'm seeing it on other object types as well. Yes, it is general, previously images were visible. It is regression of some commit. I will check it. - Reverse engineered SQL for a column on a view is shown like: -- Column: id -- ALTER TABLE pem.avail_agents DROP COLUMN id; ALTER TABLE pem.avail_agents ADD COLUMN id integer(4); (yes, it's displaying the HTML tags) *I pulled the latest code, but it is not reproducible.* - The ACL property should be called Privileges and be in the Security group (see functions, sequences etc). *Fixed* - The Schema should not be shown in "Properties" view. *Fixed* - Fields in the General section should be in the order: Name, OID, Owner, System xxx? (where appropriate), Comment *I have checked that In view Fields (Name, Owner, Schema & Comment) are in this order.* *I didn't got your point. Can you please give and example, if possible.* *Materialised Views:* - Selecting an MV results in: 2016-04-14 09:34:58,863: ERROR pgadmin: Exception on /browser/materialized_view/obj/1/1/24587/27424/107612 [GET] Traceback (most recent call last): File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site- packages/flask/app.py", line 1817, in wsgi_app response = self.full_dispatch_request() File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site- packages/flask/app.py", line 1477, in full_dispatch_request rv = self.handle_user_exception(e) File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site- packages/flask/app.py", line 1381, in handle_user_exception reraise(exc_type, exc_value, tb) File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site- packages/flask/app.py", line 1475, in full_dispatch_request rv = self.dispatch_request() File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site- packages/flask/app.py", line 1461, in dispatch_request return self.view_functions[rule.endpoint](**req.view_args) File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site- packages/flask/views.py", line 84, in view return self.dispatch_request(*args, **kwargs) File "/Users/dpage/git/pgadmin4/web/pgadmin/browser/utils.py", line 233, in dispatch_request return method(*args, **kwargs) File "/Users/dpage/git/pgadmin4/web/pgadmin/browser/server_ groups/servers/databases/schemas/views/__init__.py", line 185, in wrap return f(*args, **kwargs) File "/Users/dpage/git/pgadmin4/web/pgadmin/browser/server_ groups/servers/databases/schemas/views/__init__.py", line 1226, in properties self.conn, result, 'table') File "/Users/dpage/git/pgadmin4/web/pgadmin/browser/server_ groups/servers/databases/schemas/utils.py", line 357, in parse_vacuum_data vacuum_fields = render_template("vacuum_settings/vacuum_fields.json") File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site- packages/flask/templating.py", line 127, in render_template return _render(ctx.app.jinja_env.get_or_select_template(template_ name_or_list), File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site- packages/jinja2/environment.py", line 830, in get_or_select_template return self.get_template(template_name_or_list, parent, globals) File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site- packages/jinja2/environment.py", line 791, in get_template return self._load_template(name, self.make_globals(globals)) File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site- packages/jinja2/environment.py", line 765, in _load_template template = self.loader.load(self, name, globals) File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site- packages/jinja2/loaders.py", line 113, in load source, filename, uptodate = self.get_source(environment, name) File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site- packages/flask/templating.py", line 64, in get_source raise TemplateNotFound(template) TemplateNotFound: vacuum_settings/vacuum_fields.json *It seems this patch* http://www.postgresql.org/message-id/CAM5-9D-4DYgMMHFc5mzDDdK++h7XNvkiA5ojBbXi5sTHmecGCA@mail.gmail.com *wasn't applied properly. Now this patch is sent with tables patch.* - When creating an MV, an error is immediately shown telling me to specify a name. We do not normally show such errors until the field loses focus. *Now its fixed.* - No default owner is shown in create mode. *Fixed.* - "Please enter function definition." is shown as an error on the definition field. *It triggers this error message as it is mandatory.* - The Definition field is missing a label. If relying on the tab title to be the label, the control should fill the tab (as with Security options etc). *Fixed.* - No default tablespace is shown. *Fixed* - If I enable custom auto-vacuum, there is no way to add a row to specify options. *You can enable custom auto vacuum field and add new values in the auto vacuum settings.* - If I specify a comment on an MV, I get "ERROR: "mv_pg_tables" is not a view" *For some reason tablespace name was missing in generated sql.* - Save/Cancel buttons not working as expected (like other objects) *In latest code pull, It **seems to be** fixed. not reproducible at my end.* Thanks, Surinder Kumar --047d7ba9742229e9be0531a098c7 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
Hi,


PFA patch for View a= nd Materialised View Nodes.
This patch is dependent on=C2=A0ta= bles node=C2=A0and its subnodes=C2=A0patch.
Please tes= t this patch once latest tables node patch is submitted.

I have merged one other patch:
"Don'= ;t show Security group of node if it is under Catalogs"

Below are the fix for the review comments given= by Dave:

Views<= /b>:

- Pleas= e add sqlCreateHelp and sqlAlterHelp properties to all nodes.
<= div>I have added these in View and Materialised View.=C2=A0

- Some= of the SQL templates have inconsistent indenting (i.e. not 4 chars), e.g.<= /span>

CREATE OR REPLACE VIEW pem.avail_agents
=C2=A0AS
=C2=A0...
Fixed

- When creating any object, the Owner, = Schema and Tablespace should
have default values.
Fixed

- Property labels should only have the first word capitalis= ed, e.g.

=C2=A0 Security barrier
=C2=A0 Check options
Fixed

- The Definition box on the View di= alogue should start at a single
line and expand as needed - see the Function dialogu= e
Fixed

- The Cancel button doe= sn't work on the View dialog. Please check them all.
<= div>In latest code pull, It=C2=A0seems to be= =C2=A0fixed. not=C2=A0reproducible=C2=A0at my end.

- The Save button d= oesn't close the View dialog, nor does it add the tree node.
In latest code pull, It=C2=A0seems to be=C2=A0fixed. not=C2=A0reproducible=C2=A0at my = end.

- Dependencies and Dependents don't show icons, and have very ta= ll
rows. = This issue likely comes from elsewhere as I'm seeing it on other=
object types as= well.
Yes, it is general, = previously images were visible. It is regression of some commit. I will che= ck it.

- Reverse engineered SQL for a column on a= view is shown like:

<html><head></head&= gt;<body>-- Column: id -- ALTER TABLE pem.avail_agents
DROP COLUMN id; ALTER T= ABLE pem.avail_agents ADD COLUMN id
integer(4);</body></html>

(yes, it's displaying the HTML tags)
I pulled the latest code, but it is not reproducible.<= /b>

- The AC= L property should be called Privileges and be in the Security
group (see functions, = sequences etc).
Fixed

- The Sch= ema should not be shown in "Properties" view.
Fixed

= - Fields in the General section should be in= the order: Name, OID,
Owner, System xxx? (where appropriate), Comment
I have checked that In view Fields (Name, Owner, Schema &= Comment) are in this order.
I didn't got your = point. Can you please give and example, if possible.

=

Materialised Vi= ews:

- Selecting an MV results in:

2016-04-14 09:34:58,863: ERROR pgadmin: Exception on
/browser/materialized_vi= ew/obj/1/1/24587/27424/107612 [GET]
Traceback = (most recent call last):
=C2=A0 File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/flask/app.py",
line 1817, in wsgi_app
=C2=A0 =C2=A0 response =3D = self.full_dispatch_request()
=C2=A0 File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-
packages/flask/app.py",
line 1477, in full_dispatch_request=
=C2=A0 = =C2=A0 rv =3D self.handle_user_exception(e)
=C2=A0 File "/Users/dpage/.virtuale= nvs/pgadmin4/lib/python2.7/site-packages/flask/app.py",
line 1381, in handle_u= ser_exception
=C2=A0 =C2=A0 reraise(exc_type, exc_value, tb)
=C2=A0 File "/Users/dpage/.= virtualenvs/pgadmin4/lib/python2.7/si= te-packages/flask/app.py",
line 1475, in = full_dispatch_request
=C2=A0 =C2=A0 rv =3D self.dispatch_request()
=C2=A0 File "/Users= /dpage/.virtualenvs/pgadmin4/lib/pyth= on2.7/site-packages/flask/app.py"= ;,
line 1= 461, in dispatch_request
=C2=A0 =C2=A0 return self.view_functions[rule.endpoint](**req.view_args)
=C2=A0 File "/Users/dpage/.= virtualenvs/pgadmin4/lib/python2.7/si= te-packages/flask/views.py",
line 84, in = view
=C2= =A0 =C2=A0 return self.dispatch_request(*args, **kwargs)
=C2=A0 File "/Users/dp= age/git/pgadmin4/web/pgadmin/browser/= utils.py", line
233, in dispatch_request
=C2=A0 =C2=A0 return method(*args, **kwargs)

=C2=A0 File= "/Users/dpage/git/pgadmin4/web/= pgadmin/browser/server_groups/servers= /databases/schemas/views/__init__.py&= quot;,
li= ne 185, in wrap
=C2=A0 =C2=A0 return f(*args, **kwargs)
=C2=A0 File "/Users/dpage/git/pg= admin4/web/pgadmin/browser/server_groups/servers/databases/schemas/views/__init__.py",
line 1226, in properties
=C2=A0 =C2= =A0 self.conn, result, 'table')
= =C2=A0 File "/Users/dpage/git/pgadmin4/= web/pgadmin/browser/server_groups/servers/databases/
schemas/utils.py",
= line 357, in parse_vacuum_data
=C2=A0 =C2=A0 vacuum_f= ields =3D render_template("vacuum_settings/vacuum_fields.json")
=C2=A0 File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/flask/templating.py",

line 127, in render_te= mplate
= =C2=A0 =C2=A0 return _render(ctx.app.jinja_env.get_or_select_template(template_name_or_list),
=C2=A0 File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/jinja2/environment.py",
line 830, in get_or_select_template
<= span style=3D"font-size:13px">=C2=A0 =C2=A0 return self.get_template(templa= te_name_or_list, parent, globals)
=C2=A0 File = "/Users/dpage/.virtualenvs/pgadm= in4/lib/python2.7/site-packages/jinja= 2/environment.py",
line 791, in get_templ= ate
=C2= =A0 =C2=A0 return self._load_template(name, self.make_globals(globals))
=C2=A0 File = "/Users/dpage/.virtualenvs/pgadm= in4/lib/python2.7/site-packages/jinja= 2/environment.py",
line 765, in _load_tem= plate
=C2= =A0 =C2=A0 template =3D self.loader.load(self, name, globals)
=C2=A0 File "/Use= rs/dpage/.virtualenvs/pgadmin4/lib/py= thon2.7/site-packages/jinja2/loaders.= py",
line 113, in load
=C2=A0 =C2=A0 source, filename, uptodate =3D self.get_source(envi= ronment, name)
=C2=A0 File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/flask/templating.py",
= line 64, in get_source
=C2=A0 =C2=A0 raise TemplateNo= tFound(template)
TemplateNotFound: vacuum_settings/vacuum_fields.json

It se= ems this patch
wasn't applied properly= . Now this patch is sent with tables patch.

- When creating an MV, an er= ror is immediately shown telling me to
<= span style=3D"font-size:13px">specify a name. We do not normally show such = errors until the field
loses focus.
Now its fixed.
- No default owner is shown in create mode.
= Fixed.

= - "Please enter function definition.&qu= ot; is shown as an error on the
definition field.
It triggers= this error message as it is mandatory.

- The Definiti= on field is missing a label. If relying on the tab title
to be the label, the contro= l should fill the tab (as with Security
= options etc).
Fixed.<= /i>

- No default tablespace is shown.
= Fixed

<= span style=3D"font-size:13px">- If I enable custom auto-vacuum, there is no= way to add a row to
specify options.
You can enable custom a= uto vacuum field and add new values in the auto vacuum settings.
- If I specify a comment on an MV, I get "ERROR: "mv_p= g_tables" is not a view"
For some reason t= ablespace name was missing in generated sql.

- Save/Ca= ncel buttons not working as expected (like other objects)
<= div>In latest code pull, It=C2=A0seems to be= =C2=A0fixed. not=C2=A0reproducible=C2=A0at my end.

Thanks,
Surinder Kumar

<= /div>
--047d7ba9742229e9be0531a098c7-- --047d7ba9742229e9c40531a098c9 Content-Type: application/octet-stream; name="view_and_mat_view_nodes.patch" Content-Disposition: attachment; filename="view_and_mat_view_nodes.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_inlsub9t0 ZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3ZpZXdzL19faW5pdF9fLnB5 IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMv ZGF0YWJhc2VzL3NjaGVtYXMvdmlld3MvX19pbml0X18ucHkKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmU4YTIzZgotLS0gL2Rldi9u dWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9z ZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3ZpZXdzL19faW5pdF9fLnB5CkBA IC0wLDAgKzEsMTM0NCBAQAorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMKKyMKKyMgcGdBZG1pbiA0IC0gUG9zdGdyZVNRTCBUb29scworIworIyBD b3B5cmlnaHQgKEMpIDIwMTMgLSAyMDE2LCBUaGUgcGdBZG1pbiBEZXZlbG9w bWVudCBUZWFtCisjIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIg dGhlIFBvc3RncmVTUUwgTGljZW5jZQorIworIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMKKworIiIiSW1wbGVtZW50cyBWaWV3IGFuZCBNYXRlcmlh bGl6ZWQgVmlldyBOb2RlIiIiCisKK2ltcG9ydCBzaW1wbGVqc29uIGFzIGpz b24KK2Zyb20gZmxhc2sgaW1wb3J0IHJlbmRlcl90ZW1wbGF0ZSwgcmVxdWVz dCwganNvbmlmeQorZnJvbSBmbGFzay5leHQuYmFiZWwgaW1wb3J0IGdldHRl eHQKK2Zyb20gcGdhZG1pbi51dGlscy5hamF4IGltcG9ydCBtYWtlX2pzb25f cmVzcG9uc2UsIFwKKyAgICBtYWtlX3Jlc3BvbnNlIGFzIGFqYXhfcmVzcG9u c2UsIGludGVybmFsX3NlcnZlcl9lcnJvciwgXAorICAgIGJhZF9yZXF1ZXN0 Citmcm9tIHBnYWRtaW4uYnJvd3Nlci51dGlscyBpbXBvcnQgUEdDaGlsZE5v ZGVWaWV3CitpbXBvcnQgcGdhZG1pbi5icm93c2VyLnNlcnZlcl9ncm91cHMu c2VydmVycyBhcyBzZXJ2ZXJzCitmcm9tIHBnYWRtaW4uYnJvd3Nlci5zZXJ2 ZXJfZ3JvdXBzLnNlcnZlcnMuZGF0YWJhc2VzLnNjaGVtYXMudXRpbHMgaW1w b3J0IFwKKyAgICBTY2hlbWFDaGlsZE1vZHVsZSwgcGFyc2VfcnVsZV9kZWZp bml0aW9uLCBWYWN1dW1TZXR0aW5ncworZnJvbSBwZ2FkbWluLnV0aWxzLmFq YXggaW1wb3J0IHByZWNvbmRpdGlvbl9yZXF1aXJlZAorZnJvbSBwZ2FkbWlu LnV0aWxzLmRyaXZlciBpbXBvcnQgZ2V0X2RyaXZlcgorZnJvbSBjb25maWcg aW1wb3J0IFBHX0RFRkFVTFRfRFJJVkVSCitmcm9tIGZ1bmN0b29scyBpbXBv cnQgd3JhcHMKKworCisiIiIKKyAgICBUaGlzIG1vZHVsZSBpcyByZXNwb25z aWJsZSBmb3IgZ2VuZXJhdGluZyB0d28gbm9kZXMKKyAgICAxKSBWaWV3Cisg ICAgMikgTWF0ZXJpYWxpemVkIFZpZXcKKworICAgIFdlIGhhdmUgY3JlYXRl ZCBzaW5nbGUgZmlsZSBiZWNhdXNlIHZpZXcgJiBtYXRlcmlhbCB2aWV3IGhh cyBzYW1lCisgICAgZnVuY3Rpb25hbGl0eS4gSXQgYWxsb3dzIHVzIHRvIHNo YXJlIHRoZSBzYW1lIHN1Ym1vZHVsZXMgZm9yIGJvdGgKKyAgICB2aWV3LCBh bmQgbWF0ZXJpYWwgdmlldyBtb2R1bGVzLgorCisgICAgVGhpcyBtb2R1bGVz IHVzZXMgc2VwYXJhdGUgdGVtcGxhdGUgcGF0aHMgZm9yIGVhY2ggcmVzcGVj dGl2ZSBub2RlCisgICAgLSB0ZW1wbGF0ZXMvdmlldyBmb3IgVmlldyBub2Rl CisgICAgLSB0ZW1wbGF0ZXMvbWF0ZXJpYWxpemVkX3ZpZXcgZm9yIE1hdGVy aWFsaXplZFZpZXcgbm9kZQorCisgICAgW0VhY2ggcGF0aCBjb250YWlucyBu b2RlIHNwZWNpZmljIGpzIGZpbGVzIGFzIHdlbGwgYXMgc3FsIHRlbXBsYXRl IGZpbGVzLl0KKyIiIgorCisKK2NsYXNzIFZpZXdNb2R1bGUoU2NoZW1hQ2hp bGRNb2R1bGUpOgorICAgICIiIgorICAgIGNsYXNzIFZpZXdNb2R1bGUoU2No ZW1hQ2hpbGRNb2R1bGUpOgorCisgICAgICAgIEEgbW9kdWxlIGNsYXNzIGZv ciBWaWV3IG5vZGUgZGVyaXZlZCBmcm9tIFNjaGVtYUNoaWxkTW9kdWxlLgor CisgICAgTWV0aG9kczoKKyAgICAtLS0tLS0tCisgICAgKiBfX2luaXRfXygq YXJncywgKiprd2FyZ3MpCisgICAgICAtIE1ldGhvZCBpcyB1c2VkIHRvIGlu aXRpYWxpemUgdGhlIFZpZXcgYW5kIGl0J3MgYmFzZSBtb2R1bGUuCisKKyAg ICAqIGdldF9ub2RlcyhnaWQsIHNpZCwgZGlkLCBzY2lkKQorICAgICAgLSBN ZXRob2QgaXMgdXNlZCB0byBnZW5lcmF0ZSB0aGUgYnJvd3NlciBjb2xsZWN0 aW9uIG5vZGUuCisKKyAgICAqIG5vZGVfaW5vZGUoKQorICAgICAgLSBNZXRo b2QgaXMgb3ZlcnJpZGRlbiBmcm9tIGl0cyBiYXNlIGNsYXNzIHRvIG1ha2Ug dGhlIG5vZGUgYXMgbGVhZiBub2RlLgorCisgICAgKiBzY3JpcHRfbG9hZCgp CisgICAgICAtIExvYWQgdGhlIG1vZHVsZSBzY3JpcHQgZm9yIFZpZXcsIHdo ZW4gYW55IG9mIHRoZSBzZXJ2ZXIgbm9kZSBpcworICAgICAgICBpbml0aWFs aXplZC4KKyAgICAiIiIKKyAgICBOT0RFX1RZUEUgPSAndmlldycKKyAgICBD T0xMRUNUSU9OX0xBQkVMID0gZ2V0dGV4dCgiVmlld3MiKQorCisgICAgZGVm IF9faW5pdF9fKHNlbGYsICphcmdzLCAqKmt3YXJncyk6CisgICAgICAgICIi IgorICAgICAgICBNZXRob2QgaXMgdXNlZCB0byBpbml0aWFsaXplIHRoZSBW aWV3TW9kdWxlIGFuZCBpdCdzIGJhc2UgbW9kdWxlLgorCisgICAgICAgIEFy Z3M6CisgICAgICAgICAgICAqYXJnczoKKyAgICAgICAgICAgICoqa3dhcmdz OgorICAgICAgICAiIiIKKyAgICAgICAgc3VwZXIoVmlld01vZHVsZSwgc2Vs ZikuX19pbml0X18oKmFyZ3MsICoqa3dhcmdzKQorICAgICAgICBzZWxmLm1p bl92ZXIgPSBOb25lCisgICAgICAgIHNlbGYubWF4X3ZlciA9IE5vbmUKKwor ICAgIGRlZiBnZXRfbm9kZXMoc2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2NpZCk6 CisgICAgICAgICIiIgorICAgICAgICBHZW5lcmF0ZSB0aGUgY29sbGVjdGlv biBub2RlCisgICAgICAgICIiIgorICAgICAgICB5aWVsZCBzZWxmLmdlbmVy YXRlX2Jyb3dzZXJfY29sbGVjdGlvbl9ub2RlKHNjaWQpCisKKyAgICBAcHJv cGVydHkKKyAgICBkZWYgc2NyaXB0X2xvYWQoc2VsZik6CisgICAgICAgICIi IgorICAgICAgICBMb2FkIHRoZSBtb2R1bGUgc2NyaXB0IGZvciB2aWV3cywg d2hlbiBhbnkgZGF0YWJhc2Ugbm9kZSBpcworICAgICAgICBpbml0aWFsaXpl ZCwgVGhlIHJlYXNvbiBpcyB2aWV3cyBhcmUgYWxzbyBsaXN0ZWQgdW5kZXIg Y2F0YWxvZ3MKKyAgICAgICAgd2hpY2ggYXJlIGxvYWRlZCB1bmRlciBkYXRh YmFzZSBub2RlLgorICAgICAgICAiIiIKKyAgICAgICAgcmV0dXJuIHNlcnZl cnMuU2VydmVyTW9kdWxlLk5PREVfVFlQRQorCisgICAgQHByb3BlcnR5Cisg ICAgZGVmIGNzc3NuaXBwZXRzKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAg ICAgUmV0dXJucyBhIHNuaXBwZXQgb2YgY3NzIHRvIGluY2x1ZGUgaW4gdGhl IHBhZ2UKKyAgICAgICAgIiIiCisgICAgICAgIHNuaXBwZXRzID0gWworICAg ICAgICAgICAgICAgIHJlbmRlcl90ZW1wbGF0ZSgKKyAgICAgICAgICAgICAg ICAgICAgImJyb3dzZXIvY3NzL2NvbGxlY3Rpb24uY3NzIiwKKyAgICAgICAg ICAgICAgICAgICAgbm9kZV90eXBlPXNlbGYubm9kZV90eXBlLAorICAgICAg ICAgICAgICAgICAgICBfPWdldHRleHQKKyAgICAgICAgICAgICAgICAgICAg KSwKKyAgICAgICAgICAgICAgICByZW5kZXJfdGVtcGxhdGUoCisgICAgICAg ICAgICAgICAgICAgICJ2aWV3L2Nzcy92aWV3LmNzcyIsCisgICAgICAgICAg ICAgICAgICAgIG5vZGVfdHlwZT1zZWxmLm5vZGVfdHlwZSwKKyAgICAgICAg ICAgICAgICAgICAgXz1nZXR0ZXh0CisgICAgICAgICAgICAgICAgICAgICks CisgICAgICAgICAgICAgICAgcmVuZGVyX3RlbXBsYXRlKAorICAgICAgICAg ICAgICAgICAgICAibXZpZXcvY3NzL212aWV3LmNzcyIsCisgICAgICAgICAg ICAgICAgICAgIG5vZGVfdHlwZT0nbXZpZXcnLAorICAgICAgICAgICAgICAg ICAgICBfPWdldHRleHQKKyAgICAgICAgICAgICAgICAgICAgKQorICAgICAg ICAgICAgICAgIF0KKworICAgICAgICBmb3Igc3VibW9kdWxlIGluIHNlbGYu c3VibW9kdWxlczoKKyAgICAgICAgICAgIHNuaXBwZXRzLmV4dGVuZChzdWJt b2R1bGUuY3Nzc25pcHBldHMpCisKKyAgICAgICAgcmV0dXJuIHNuaXBwZXRz CisKKworY2xhc3MgTWF0ZXJpYWxpemVkVmlld01vZHVsZShWaWV3TW9kdWxl KToKKyAgICAiIiIKKyAgICAgY2xhc3MgTWF0ZXJpYWxpemVkVmlld01vZHVs ZShWaWV3TW9kdWxlKQorICAgICAgICBBIG1vZHVsZSBjbGFzcyBmb3IgdGhl IG1hdGVyaWFsaXplZCB2aWV3IGFuZCB2aWV3IG5vZGUgZGVyaXZlZAorICAg ICAgICBmcm9tIFZpZXdNb2R1bGUuCisgICAgIiIiCisKKyAgICBOT0RFX1RZ UEUgPSAnbXZpZXcnCisgICAgQ09MTEVDVElPTl9MQUJFTCA9IGdldHRleHQo Ik1hdGVyaWFsaXplZCBWaWV3cyIpCisKKyAgICBkZWYgX19pbml0X18oc2Vs ZiwgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgIiIiCisgICAgICAgIE1l dGhvZCBpcyB1c2VkIHRvIGluaXRpYWxpemUgdGhlIE1hdGVyaWFsaXplZFZp ZXdNb2R1bGUgYW5kCisgICAgICAgIGl0J3MgYmFzZSBtb2R1bGUuCisKKyAg ICAgICAgQXJnczoKKyAgICAgICAgICAgICphcmdzOgorICAgICAgICAgICAg Kiprd2FyZ3M6CisgICAgICAgICIiIgorICAgICAgICBzdXBlcihNYXRlcmlh bGl6ZWRWaWV3TW9kdWxlLCBzZWxmKS5fX2luaXRfXygqYXJncywgKiprd2Fy Z3MpCisgICAgICAgIHNlbGYubWluX3ZlciA9IDkwMzAwCisgICAgICAgIHNl bGYubWF4X3ZlciA9IE5vbmUKKwordmlld19ibHVlcHJpbnQgPSBWaWV3TW9k dWxlKF9fbmFtZV9fKQorbXZpZXdfYmx1ZXByaW50ID0gTWF0ZXJpYWxpemVk Vmlld01vZHVsZSgKKyAgICAgICAgX19uYW1lX18pCisKKworZGVmIGNoZWNr X3ByZWNvbmRpdGlvbihmKToKKyAgICAiIiIKKyAgICBUaGlzIGZ1bmN0aW9u IHdpbGwgYmVoYXZlIGFzIGEgZGVjb3JhdG9yIHdoaWNoIHdpbGwgY2hlY2tz CisgICAgZGF0YWJhc2UgY29ubmVjdGlvbiBiZWZvcmUgcnVubmluZyB2aWV3 LCBpdCB3aWxsIGFsc28gYXR0YWNoZXMKKyAgICBtYW5hZ2VyLGNvbm4gJiB0 ZW1wbGF0ZV9wYXRoIHByb3BlcnRpZXMgdG8gaW5zdGFuY2Ugb2YgdGhlIG1l dGhvZC4KKworICAgIEFzc3VtcHRpb25zOgorICAgICAgICBUaGlzIGZ1bmN0 aW9uIHdpbGwgYWx3YXlzIGJlIHVzZWQgYXMgZGVjb3JhdG9yIG9mIGEgY2xh c3MgbWV0aG9kLgorICAgICIiIgorICAgIEB3cmFwcyhmKQorICAgIGRlZiB3 cmFwKCphcmdzLCAqKmt3YXJncyk6CisKKyAgICAgICAgIyBIZXJlIGFyZ3Nb MF0gd2lsbCBob2xkIHNlbGYgJiBrd2FyZ3Mgd2lsbCBob2xkIGdpZCxzaWQs ZGlkCisgICAgICAgIHNlbGYgPSBhcmdzWzBdCisgICAgICAgIHNlbGYubWFu YWdlciA9IGdldF9kcml2ZXIoUEdfREVGQVVMVF9EUklWRVIpLmNvbm5lY3Rp b25fbWFuYWdlcigKKyAgICAgICAgICAgIGt3YXJnc1snc2lkJ10KKyAgICAg ICAgKQorICAgICAgICBzZWxmLmNvbm4gPSBzZWxmLm1hbmFnZXIuY29ubmVj dGlvbihkaWQ9a3dhcmdzWydkaWQnXSkKKyAgICAgICAgIyBJZiBEQiBub3Qg Y29ubmVjdGVkIHRoZW4gcmV0dXJuIGVycm9yIHRvIGJyb3dzZXIKKyAgICAg ICAgaWYgbm90IHNlbGYuY29ubi5jb25uZWN0ZWQoKToKKyAgICAgICAgICAg IHJldHVybiBwcmVjb25kaXRpb25fcmVxdWlyZWQoCisgICAgICAgICAgICAg ICAgZ2V0dGV4dCgiQ29ubmVjdGlvbiB0byB0aGUgc2VydmVyIGhhcyBiZWVu IGxvc3QhIikKKyAgICAgICAgICAgICkKKyAgICAgICAgc2VsZi5kYXRsYXN0 c3lzb2lkID0gc2VsZi5tYW5hZ2VyLmRiX2luZm9bCisgICAgICAgICAgICAg ICAga3dhcmdzWydkaWQnXV1bJ2RhdGxhc3RzeXNvaWQnXQorCisgICAgICAg ICMgU2V0IHRlbXBsYXRlIHBhdGggZm9yIHNxbCBzY3JpcHRzCisgICAgICAg IHNlbGYudGVtcGxhdGVfcGF0aCA9IHNlbGYudGVtcGxhdGVfaW5pdGlhbCAr ICcvJyArICgKKyAgICAgICAgICAgIHNlbGYucHBhc190ZW1wbGF0ZV9wYXRo KHNlbGYubWFuYWdlci52ZXJzaW9uKQorICAgICAgICAgICAgaWYgc2VsZi5t YW5hZ2VyLnNlcnZlcl90eXBlID09ICdwcGFzJyBlbHNlCisgICAgICAgICAg ICBzZWxmLnBnX3RlbXBsYXRlX3BhdGgoc2VsZi5tYW5hZ2VyLnZlcnNpb24p CisgICAgICAgICAgICApCisKKyAgICAgICAgcmV0dXJuIGYoKmFyZ3MsICoq a3dhcmdzKQorCisgICAgcmV0dXJuIHdyYXAKKworCitjbGFzcyBWaWV3Tm9k ZShQR0NoaWxkTm9kZVZpZXcsIFZhY3V1bVNldHRpbmdzKToKKyAgICAiIiIK KyAgICBUaGlzIGNsYXNzIGlzIHJlc3BvbnNpYmxlIGZvciBnZW5lcmF0aW5n IHJvdXRlcyBmb3IgdmlldyBub2RlLgorCisgICAgTWV0aG9kczoKKyAgICAt LS0tLS0tCisgICAgKiBfX2luaXRfXygqKmt3YXJncykKKyAgICAgIC0gTWV0 aG9kIGlzIHVzZWQgdG8gaW5pdGlhbGl6ZSB0aGUgVmlld05vZGUgYW5kIGl0 J3MgYmFzZSB2aWV3LgorCisgICAgKiBtb2R1bGVfanMoKQorICAgICAgLSBS ZXF1ZXN0IGhhbmRsZXIgZm9yIG1vZHVsZS5qcyByb3V0ZXMgZm9yIHRoZSB2 aWV3IG5vZGUgbW9kdWxlCisgICAgICBqYXZhc2NyaXB0LCB3aGljaCByZXR1 cm5zIGphdnNjcmlwdCBmb3IgdGhpcyBtb2R1bGUuCisKKyAgICAqIGxpc3Qo KQorICAgICAgLSBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gbGlzdCBhbGwg dGhlIHZpZXcgbm9kZXMgd2l0aGluIHRoZQorICAgICAgY29sbGVjdGlvbi4K KworICAgICogbm9kZXMoKQorICAgICAgLSBUaGlzIGZ1bmN0aW9uIHdpbGwg dXNlZCB0byBjcmVhdGUgYWxsIHRoZSBjaGlsZCBub2RlIHdpdGhpbiB0aGUK KyAgICAgICAgY29sbGVjdGlvbiwgSGVyZSBpdCB3aWxsIGNyZWF0ZSBhbGwg dGhlIHZpZXcgbm9kZS4KKworICAgICogcHJvcGVydGllcyhnaWQsIHNpZCwg ZGlkLCBzY2lkKQorICAgICAgLSBUaGlzIGZ1bmN0aW9uIHdpbGwgc2hvdyB0 aGUgcHJvcGVydGllcyBvZiB0aGUgc2VsZWN0ZWQgdmlldyBub2RlLgorCisg ICAgKiBjcmVhdGUoZ2lkLCBzaWQsIGRpZCwgc2NpZCkKKyAgICAgIC0gVGhp cyBmdW5jdGlvbiB3aWxsIGNyZWF0ZSB0aGUgbmV3IHZpZXcgb2JqZWN0Lgor CisgICAgKiB1cGRhdGUoZ2lkLCBzaWQsIGRpZCwgc2NpZCkKKyAgICAgIC0g VGhpcyBmdW5jdGlvbiB3aWxsIHVwZGF0ZSB0aGUgZGF0YSBmb3IgdGhlIHNl bGVjdGVkIHZpZXcgbm9kZS4KKworICAgICogZGVsZXRlKHNlbGYsIGdpZCwg c2lkLCBzY2lkKToKKyAgICAgIC0gVGhpcyBmdW5jdGlvbiB3aWxsIGRyb3Ag dGhlIHZpZXcgb2JqZWN0CisKKyAgICAqIG1zcWwoZ2lkLCBzaWQsIGRpZCwg c2NpZCkKKyAgICAgIC0gVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIHJldHVy biBtb2RpZmllZCBTUUwgZm9yIHRoZSBzZWxlY3RlZCB2aWV3CisgICAgICAg IG5vZGUuCisKKyAgICAqIGdldF9zcWwoZGF0YSwgc2NpZCkKKyAgICAgIC0g VGhpcyBmdW5jdGlvbiB3aWxsIGdlbmVyYXRlIHNxbCBmcm9tIG1vZGVsIGRh dGEKKworICAgICogc3FsKGdpZCwgc2lkLCBkaWQsIHNjaWQpOgorICAgICAg LSBUaGlzIGZ1bmN0aW9uIHdpbGwgZ2VuZXJhdGUgc3FsIHRvIHNob3cgaXQg aW4gc3FsIHBhbmUgZm9yIHRoZSB2aWV3CisgICAgICAgIG5vZGUuCisKKyAg ICAqIGRlcGVuZGVuY3koZ2lkLCBzaWQsIGRpZCwgc2NpZCk6CisgICAgICAt IFRoaXMgZnVuY3Rpb24gd2lsbCBnZW5lcmF0ZSBkZXBlbmRlbmN5IGxpc3Qg c2hvdyBpdCBpbiBkZXBlbmRlbmN5CisgICAgICAgIHBhbmUgZm9yIHRoZSBz ZWxlY3RlZCB2aWV3IG5vZGUuCisKKyAgICAqIGRlcGVuZGVudChnaWQsIHNp ZCwgZGlkLCBzY2lkKToKKyAgICAgIC0gVGhpcyBmdW5jdGlvbiB3aWxsIGdl bmVyYXRlIGRlcGVuZGVudCBsaXN0IHRvIHNob3cgaXQgaW4gZGVwZW5kZW50 CisgICAgICAgIHBhbmUgZm9yIHRoZSBzZWxlY3RlZCB2aWV3IG5vZGUuCisg ICAgIiIiCisgICAgbm9kZV90eXBlID0gdmlld19ibHVlcHJpbnQubm9kZV90 eXBlCisKKyAgICBwYXJlbnRfaWRzID0gWworICAgICAgICAgICAgeyd0eXBl JzogJ2ludCcsICdpZCc6ICdnaWQnfSwKKyAgICAgICAgICAgIHsndHlwZSc6 ICdpbnQnLCAnaWQnOiAnc2lkJ30sCisgICAgICAgICAgICB7J3R5cGUnOiAn aW50JywgJ2lkJzogJ2RpZCd9LAorICAgICAgICAgICAgeyd0eXBlJzogJ2lu dCcsICdpZCc6ICdzY2lkJ30KKyAgICAgICAgICAgIF0KKyAgICBpZHMgPSBb CisgICAgICAgICAgICB7J3R5cGUnOiAnaW50JywgJ2lkJzogJ3ZpZCd9Cisg ICAgICAgICAgICBdCisKKyAgICBvcGVyYXRpb25zID0gZGljdCh7CisgICAg ICAgICdvYmonOiBbCisgICAgICAgICAgICB7J2dldCc6ICdwcm9wZXJ0aWVz JywgJ2RlbGV0ZSc6ICdkZWxldGUnLCAncHV0JzogJ3VwZGF0ZSd9LAorICAg ICAgICAgICAgeydnZXQnOiAnbGlzdCcsICdwb3N0JzogJ2NyZWF0ZSd9Cisg ICAgICAgIF0sCisgICAgICAgICdjaGlsZHJlbic6IFt7CisgICAgICAgICAg ICAnZ2V0JzogJ2NoaWxkcmVuJworICAgICAgICB9XSwKKyAgICAgICAgJ2Rl bGV0ZSc6IFt7J2RlbGV0ZSc6ICdkZWxldGUnfV0sCisgICAgICAgICdub2Rl cyc6IFt7J2dldCc6ICdub2RlJ30sIHsnZ2V0JzogJ25vZGVzJ31dLAorICAg ICAgICAnc3FsJzogW3snZ2V0JzogJ3NxbCd9XSwKKyAgICAgICAgJ21zcWwn OiBbeydnZXQnOiAnbXNxbCd9LCB7J2dldCc6ICdtc3FsJ31dLAorICAgICAg ICAnc3RhdHMnOiBbeydnZXQnOiAnc3RhdGlzdGljcyd9XSwKKyAgICAgICAg J2RlcGVuZGVuY3knOiBbeydnZXQnOiAnZGVwZW5kZW5jaWVzJ31dLAorICAg ICAgICAnZGVwZW5kZW50JzogW3snZ2V0JzogJ2RlcGVuZGVudHMnfV0sCisg ICAgICAgICdtb2R1bGUuanMnOiBbe30sIHt9LCB7J2dldCc6ICdtb2R1bGVf anMnfV0sCisgICAgICAgICdjb25maWdzJzogW3snZ2V0JzogJ2NvbmZpZ3Mn fV0sCisgICAgICAgICdnZXRfdGJsc3BjJzogW3snZ2V0JzogJ2dldF90Ymxz cGMnfSwgeydnZXQnOiAnZ2V0X3RibHNwYyd9XSwKKyAgICAgICAgJ2dldF90 YWJsZV92YWN1dW0nOiBbCisgICAgICAgICAgeydnZXQnOiAnZ2V0X3RhYmxl X3ZhY3V1bSd9LAorICAgICAgICAgIHsnZ2V0JzogJ2dldF90YWJsZV92YWN1 dW0nfV0sCisgICAgICAgICdnZXRfdG9hc3RfdGFibGVfdmFjdXVtJzogWwor ICAgICAgICAgIHsnZ2V0JzogJ2dldF90b2FzdF90YWJsZV92YWN1dW0nfSwK KyAgICAgICAgICB7J2dldCc6ICdnZXRfdG9hc3RfdGFibGVfdmFjdXVtJ31d CisgICAgfSkKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqYXJncywgKipr d2FyZ3MpOgorICAgICAgICAiIiIKKyAgICAgICAgSW5pdGlhbGl6ZSB0aGUg dmFyaWFibGVzIHVzZWQgYnkgbWV0aG9kcyBvZiBWaWV3Tm9kZS4KKyAgICAg ICAgIiIiCisKKyAgICAgICAgc3VwZXIoVmlld05vZGUsIHNlbGYpLl9faW5p dF9fKCphcmdzLCAqKmt3YXJncykKKworICAgICAgICBzZWxmLm1hbmFnZXIg PSBOb25lCisgICAgICAgIHNlbGYuY29ubiA9IE5vbmUKKyAgICAgICAgc2Vs Zi50ZW1wbGF0ZV9wYXRoID0gTm9uZQorICAgICAgICBzZWxmLnRlbXBsYXRl X2luaXRpYWwgPSAndmlldycKKworICAgIEBzdGF0aWNtZXRob2QKKyAgICBk ZWYgcHBhc190ZW1wbGF0ZV9wYXRoKHZlcik6CisgICAgICAgICIiIgorICAg ICAgICBSZXR1cm5zIHRoZSB0ZW1wbGF0ZSBwYXRoIGZvciBQUEFTIHNlcnZl cnMuCisgICAgICAgICIiIgorICAgICAgICByZXR1cm4gJ3BwYXMvOS4zX3Bs dXMnCisKKyAgICBAc3RhdGljbWV0aG9kCisgICAgZGVmIHBnX3RlbXBsYXRl X3BhdGgodmVyKToKKyAgICAgICAgIiIiCisgICAgICAgIFJldHVybnMgdGhl IHRlbXBsYXRlIHBhdGggZm9yIFBvc3RncmVTUUwgc2VydmVycy4KKyAgICAg ICAgIiIiCisgICAgICAgIGlmIHZlciA+PSA5MDQwMDoKKyAgICAgICAgICAg IHJldHVybiAncGcvOS40X3BsdXMnCisgICAgICAgIGVsaWYgdmVyID49IDkw MzAwOgorICAgICAgICAgICAgcmV0dXJuICdwZy85LjNfcGx1cycKKyAgICAg ICAgZWxpZiB2ZXIgPj0gOTAyMDA6CisgICAgICAgICAgICByZXR1cm4gJ3Bn LzkuMl9wbHVzJworICAgICAgICBlbGlmIHZlciA+PSA5MDEwMDoKKyAgICAg ICAgICAgIHJldHVybiAncGcvOS4xX3BsdXMnCisgICAgICAgIHJldHVybiAn cGcvOS4xX3BsdXMnCisKKyAgICBAY2hlY2tfcHJlY29uZGl0aW9uCisgICAg ZGVmIGxpc3Qoc2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2NpZCk6CisgICAgICAg ICIiIgorICAgICAgICBGZXRjaGVzIGFsbCB2aWV3cyBwcm9wZXJ0aWVzIGFu ZCByZW5kZXIgaW50byBwcm9wZXJ0aWVzIHRhYgorICAgICAgICAiIiIKKyAg ICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKAorICAgICAg ICAgIFtzZWxmLnRlbXBsYXRlX3BhdGgsICdzcWwvcHJvcGVydGllcy5zcWwn XSksIHNjaWQ9c2NpZCkKKyAgICAgICAgc3RhdHVzLCByZXMgPSBzZWxmLmNv bm4uZXhlY3V0ZV9kaWN0KFNRTCkKKworICAgICAgICBpZiBub3Qgc3RhdHVz OgorICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihl cnJvcm1zZz1yZXMpCisgICAgICAgIHJldHVybiBhamF4X3Jlc3BvbnNlKAor ICAgICAgICAgICAgICAgIHJlc3BvbnNlPXJlc1sncm93cyddLAorICAgICAg ICAgICAgICAgIHN0YXR1cz0yMDAKKyAgICAgICAgICAgICAgICApCisKKyAg ICBAY2hlY2tfcHJlY29uZGl0aW9uCisgICAgZGVmIG5vZGVzKHNlbGYsIGdp ZCwgc2lkLCBkaWQsIHNjaWQpOgorICAgICAgICAiIiIKKyAgICAgICAgTGlz dHMgYWxsIHZpZXdzIHVuZGVyIHRoZSBWaWV3cyBDb2xsZWN0aW9uIG5vZGUK KyAgICAgICAgIiIiCisgICAgICAgIHJlcyA9IFtdCisgICAgICAgIFNRTCA9 IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbigKKyAgICAgICAgICBbc2VsZi50 ZW1wbGF0ZV9wYXRoLCAnc3FsL3Byb3BlcnRpZXMuc3FsJ10pLCBzY2lkPXNj aWQpCisgICAgICAgIHN0YXR1cywgcnNldCA9IHNlbGYuY29ubi5leGVjdXRl XzJkYXJyYXkoU1FMKQorICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAg ICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1y c2V0KQorCisgICAgICAgIGZvciByb3cgaW4gcnNldFsncm93cyddOgorICAg ICAgICAgICAgcmVzLmFwcGVuZCgKKyAgICAgICAgICAgICAgICAgICAgc2Vs Zi5ibHVlcHJpbnQuZ2VuZXJhdGVfYnJvd3Nlcl9ub2RlKAorICAgICAgICAg ICAgICAgICAgICAgICAgcm93WydvaWQnXSwKKyAgICAgICAgICAgICAgICAg ICAgICAgIHNjaWQsCisgICAgICAgICAgICAgICAgICAgICAgICByb3dbJ25h bWUnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGljb249Imljb24tdmll dyIKKyAgICAgICAgICAgICAgICAgICAgKSkKKworICAgICAgICByZXR1cm4g bWFrZV9qc29uX3Jlc3BvbnNlKAorICAgICAgICAgICAgICAgIGRhdGE9cmVz LAorICAgICAgICAgICAgICAgIHN0YXR1cz0yMDAKKyAgICAgICAgICAgICAg ICApCisKKyAgICBkZWYgcGFyc2Vfdmlld3NfcHJpdmlsZWdlcyhzZWxmLCBk Yl9wcml2aWxlZ2VzKToKKyAgICAgICAgIiIiCisgICAgICAgIFRoaXMgZnVu Y3Rpb24gZm9ybXMgYSBzZXBhcmF0ZSBsaXN0IG9mIGdyYW50YWJsZQorICAg ICAgICBhbmQgbm9uIGdyYW50YWJsZSBwcml2aWxlZ2VzLgorICAgICAgICAi IiIKKyAgICAgICAgYWNsID0geydncmFudG9yJzogZGJfcHJpdmlsZWdlc1sn Z3JhbnRvciddLAorICAgICAgICAgICAgICAgJ2dyYW50ZWUnOiBkYl9wcml2 aWxlZ2VzWydncmFudGVlJ10sCisgICAgICAgICAgICAgICAncHJpdmlsZWdl cyc6IFtdCisgICAgICAgICAgICAgICB9CisKKyAgICAgICAgcHJpdmlsZWdl cyA9IFtdCisgICAgICAgIGZvciBpZHgsIHByaXYgaW4gZW51bWVyYXRlKGRi X3ByaXZpbGVnZXNbJ3ByaXZpbGVnZXMnXSk6CisgICAgICAgICAgICBpZiBk Yl9wcml2aWxlZ2VzWydncmFudGFibGUnXVtpZHhdOgorICAgICAgICAgICAg ICAgIHByaXZpbGVnZXMuYXBwZW5kKHsicHJpdmlsZWdlX3R5cGUiOiBwcml2 LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicHJpdmls ZWdlIjogVHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIndpdGhfZ3JhbnQiOiBUcnVlCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIH0pCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAg ICAgICAgIHByaXZpbGVnZXMuYXBwZW5kKHsicHJpdmlsZWdlX3R5cGUiOiBw cml2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicHJp dmlsZWdlIjogVHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIndpdGhfZ3JhbnQiOiBGYWxzZQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB9KQorCisgICAgICAgIGFjbFsncHJpdmlsZWdl cyddID0gcHJpdmlsZWdlcworCisgICAgICAgIHJldHVybiBhY2wKKworICAg IEBjaGVja19wcmVjb25kaXRpb24KKyAgICBkZWYgcHJvcGVydGllcyhzZWxm LCBnaWQsIHNpZCwgZGlkLCBzY2lkLCB2aWQpOgorICAgICAgICAiIiIKKyAg ICAgICAgRmV0Y2hlcyB0aGUgcHJvcGVydGllcyBvZiBhbiBpbmRpdmlkdWFs IHZpZXcKKyAgICAgICAgYW5kIHJlbmRlciBpbiB0aGUgcHJvcGVydGllcyB0 YWIKKyAgICAgICAgIiIiCisgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0 ZSgiLyIuam9pbigKKyAgICAgICAgICAgIFtzZWxmLnRlbXBsYXRlX3BhdGgs ICdzcWwvcHJvcGVydGllcy5zcWwnXQorICAgICAgICAgICksIHZpZD12aWQs IGRhdGxhc3RzeXNvaWQ9c2VsZi5kYXRsYXN0c3lzb2lkKQorICAgICAgICBz dGF0dXMsIHJlcyA9IHNlbGYuY29ubi5leGVjdXRlX2RpY3QoU1FMKQorICAg ICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgcmV0dXJuIGludGVy bmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXMpCisKKyAgICAgICAgU1FM ID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKAorICAgICAgICAgIFtzZWxm LnRlbXBsYXRlX3BhdGgsICdzcWwvYWNsLnNxbCddKSwgdmlkPXZpZCkKKyAg ICAgICAgc3RhdHVzLCBkYXRhY2xyZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9k aWN0KFNRTCkKKyAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAg IHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQor CisgICAgICAgIGZvciByb3cgaW4gZGF0YWNscmVzWydyb3dzJ106CisgICAg ICAgICAgICBwcml2ID0gc2VsZi5wYXJzZV92aWV3c19wcml2aWxlZ2VzKHJv dykKKyAgICAgICAgICAgIGlmIHJvd1snZGVmdHlwZSddIGluIHJlc1sncm93 cyddWzBdOgorICAgICAgICAgICAgICAgIHJlc1sncm93cyddWzBdW3Jvd1sn ZGVmdHlwZSddXS5hcHBlbmQocHJpdikKKyAgICAgICAgICAgIGVsc2U6Cisg ICAgICAgICAgICAgICAgcmVzWydyb3dzJ11bMF1bcm93WydkZWZ0eXBlJ11d ID0gW3ByaXZdCisKKyAgICAgICAgcmVzdWx0ID0gcmVzWydyb3dzJ11bMF0K KworICAgICAgICAjIHNlbmRpbmcgcmVzdWx0IHRvIGZvcm10dGVyCisgICAg ICAgIGZybXRkX3Jlc2x0ID0gc2VsZi5mb3JtYXR0ZXIocmVzdWx0KQorCisg ICAgICAgICMgbWVyZ2luZyBmb3JtYXRlZCByZXN1bHQgd2l0aCBtYWluIHJl c3VsdCBhZ2FpbgorICAgICAgICByZXN1bHQudXBkYXRlKGZybXRkX3Jlc2x0 KQorCisgICAgICAgIHJldHVybiBhamF4X3Jlc3BvbnNlKAorICAgICAgICAg ICAgICAgIHJlc3BvbnNlPXJlc3VsdCwKKyAgICAgICAgICAgICAgICBzdGF0 dXM9MjAwCisgICAgICAgICAgICAgICAgKQorCisgICAgQHN0YXRpY21ldGhv ZAorICAgIGRlZiBmb3JtYXR0ZXIocmVzdWx0KToKKyAgICAgICAgIiIiIFRo aXMgZnVuY3Rpb24gZm9ybWF0cyBvdXRwdXQgZm9yIHNlY3VyaXR5IGxhYmVs ICYgdmFyaWFibGVzIiIiCisgICAgICAgIGZybXRkX3Jlc3VsdCA9IGRpY3Qo KQorICAgICAgICBzZWNfbGJscyA9IFtdCisgICAgICAgIGlmICdzZWNsYWJl bHMnIGluIHJlc3VsdCBhbmQgcmVzdWx0WydzZWNsYWJlbHMnXSBpcyBub3Qg Tm9uZToKKyAgICAgICAgICAgIGZvciBzZWMgaW4gcmVzdWx0WydzZWNsYWJl bHMnXToKKyAgICAgICAgICAgICAgICBpbXBvcnQgcmUKKyAgICAgICAgICAg ICAgICBzZWMgPSByZS5zZWFyY2gocicoW149XSspPSguKiQpJywgc2VjKQor ICAgICAgICAgICAgICAgIHNlY19sYmxzLmFwcGVuZCh7CisgICAgICAgICAg ICAgICAgICAgICdwcm92aWRlcic6IHNlYy5ncm91cCgxKSwKKyAgICAgICAg ICAgICAgICAgICAgJ3NlY3VyaXR5X2xhYmVsJzogc2VjLmdyb3VwKDIpCisg ICAgICAgICAgICAgICAgICAgIH0pCisKKyAgICAgICAgZnJtdGRfcmVzdWx0 LnVwZGF0ZSh7InNlY2xhYmVscyI6IHNlY19sYmxzfSkKKyAgICAgICAgcmV0 dXJuIGZybXRkX3Jlc3VsdAorCisgICAgQGNoZWNrX3ByZWNvbmRpdGlvbgor ICAgIGRlZiBjcmVhdGUoc2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2NpZCk6Cisg ICAgICAgICIiIgorICAgICAgICBUaGlzIGZ1bmN0aW9uIHdpbGwgY3JlYXRl IGEgbmV3IHZpZXcgb2JqZWN0CisgICAgICAgICIiIgorICAgICAgICByZXF1 aXJlZF9hcmdzID0gWworICAgICAgICAgICAgJ25hbWUnLAorICAgICAgICAg ICAgJ2RlZmluaXRpb24nCisgICAgICAgIF0KKworICAgICAgICBkYXRhID0g cmVxdWVzdC5mb3JtIGlmIHJlcXVlc3QuZm9ybSBlbHNlIFwKKyAgICAgICAg ICAgIGpzb24ubG9hZHMocmVxdWVzdC5kYXRhLmRlY29kZSgpKQorICAgICAg ICBmb3IgYXJnIGluIHJlcXVpcmVkX2FyZ3M6CisgICAgICAgICAgICBpZiBh cmcgbm90IGluIGRhdGE6CisgICAgICAgICAgICAgICAgcmV0dXJuIG1ha2Vf anNvbl9yZXNwb25zZSgKKyAgICAgICAgICAgICAgICAgICAgc3RhdHVzPTQx MCwKKyAgICAgICAgICAgICAgICAgICAgc3VjY2Vzcz0wLAorICAgICAgICAg ICAgICAgICAgICBlcnJvcm1zZz1nZXR0ZXh0KAorICAgICAgICAgICAgICAg ICAgICAgICAgIkNvdWxkbid0IGZpbmQgdGhlIHJlcXVpcmVkIHBhcmFtZXRl ciAoJXMpLiIgJSBhcmcKKyAgICAgICAgICAgICAgICAgICAgKQorICAgICAg ICAgICAgICAgICkKKworICAgICAgICBTUUwgPSBzZWxmLmdldFNRTChnaWQs IHNpZCwgZGF0YSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc3RhdHVz LCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9zY2FsYXIoU1FMKQorICAgICAg ICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgICAgICByZXR1cm4g aW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJlcykKKworICAgICAg ICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKAorICAgICAg ICAgICAgICAgICAgW3NlbGYudGVtcGxhdGVfcGF0aCwgJ3NxbC92aWV3X2lk LnNxbCddKSwgZGF0YT1kYXRhKQorICAgICAgICAgICAgc3RhdHVzLCB2aWV3 X2lkID0gc2VsZi5jb25uLmV4ZWN1dGVfc2NhbGFyKFNRTCkKKyAgICAgICAg ICAgIHJldHVybiBqc29uaWZ5KAorICAgICAgICAgICAgICAgIG5vZGU9c2Vs Zi5ibHVlcHJpbnQuZ2VuZXJhdGVfYnJvd3Nlcl9ub2RlKAorICAgICAgICAg ICAgICAgICAgdmlld19pZCwKKyAgICAgICAgICAgICAgICAgIHNjaWQsCisg ICAgICAgICAgICAgICAgICBkYXRhWyduYW1lJ10sCisgICAgICAgICAgICAg ICAgICBpY29uPSJpY29uLXZpZXciCisgICAgICAgICAgICAgICAgKQorICAg ICAgICAgICAgKQorCisgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToK KyAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJy b3Jtc2c9c3RyKGUpKQorCisgICAgQGNoZWNrX3ByZWNvbmRpdGlvbgorICAg IGRlZiB1cGRhdGUoc2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2NpZCwgdmlkKToK KyAgICAgICAgIiIiCisgICAgICAgIFRoaXMgZnVuY3Rpb24gd2lsbCB1cGRh dGUgYSB2aWV3IG9iamVjdAorICAgICAgICAiIiIKKyAgICAgICAgZGF0YSA9 IHJlcXVlc3QuZm9ybSBpZiByZXF1ZXN0LmZvcm0gZWxzZSBcCisgICAgICAg ICAgICBqc29uLmxvYWRzKHJlcXVlc3QuZGF0YS5kZWNvZGUoKSkKKyAgICAg ICAgU1FMID0gc2VsZi5nZXRTUUwoZ2lkLCBzaWQsIGRhdGEsIHZpZCkKKyAg ICAgICAgdHJ5OgorICAgICAgICAgICAgc3RhdHVzLCByZXMgPSBzZWxmLmNv bm4uZXhlY3V0ZV9zY2FsYXIoU1FMKQorICAgICAgICAgICAgaWYgbm90IHN0 YXR1czoKKyAgICAgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVy X2Vycm9yKGVycm9ybXNnPXJlcykKKworICAgICAgICAgICAgU1FMID0gcmVu ZGVyX3RlbXBsYXRlKCIvIi5qb2luKAorICAgICAgICAgICAgICAgICAgW3Nl bGYudGVtcGxhdGVfcGF0aCwgJ3NxbC92aWV3X2lkLnNxbCddKSwgZGF0YT1k YXRhKQorICAgICAgICAgICAgc3RhdHVzLCB2aWV3X2lkID0gc2VsZi5jb25u LmV4ZWN1dGVfc2NhbGFyKFNRTCkKKyAgICAgICAgICAgIHJldHVybiBqc29u aWZ5KAorICAgICAgICAgICAgICAgIG5vZGU9c2VsZi5ibHVlcHJpbnQuZ2Vu ZXJhdGVfYnJvd3Nlcl9ub2RlKAorICAgICAgICAgICAgICAgICAgdmlld19p ZCwKKyAgICAgICAgICAgICAgICAgIHNjaWQsCisgICAgICAgICAgICAgICAg ICBkYXRhWyduYW1lJ10sCisgICAgICAgICAgICAgICAgICBpY29uPSJpY29u LXZpZXciCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgKQorCisg ICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKKyAgICAgICAgICAgIHJl dHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9c3RyKGUpKQor CisgICAgQGNoZWNrX3ByZWNvbmRpdGlvbgorICAgIGRlZiBkZWxldGUoc2Vs ZiwgZ2lkLCBzaWQsIGRpZCwgc2NpZCwgdmlkKToKKyAgICAgICAgIiIiCisg ICAgICAgIFRoaXMgZnVuY3Rpb24gd2lsbCBkcm9wIGEgdmlldyBvYmplY3QK KyAgICAgICAgIiIiCisKKyAgICAgICAgIyBCZWxvdyB3aWxsIGRlY2lkZSBp ZiBpdCdzIHNpbXBsZSBkcm9wIG9yIGRyb3Agd2l0aCBjYXNjYWRlIGNhbGwK KyAgICAgICAgY2FzY2FkZSA9IFRydWUgaWYgc2VsZi5jbWQgPT0gJ2RlbGV0 ZScgZWxzZSBGYWxzZQorCisgICAgICAgIHRyeToKKworICAgICAgICAgICAg IyBHZXQgbmFtZSBmb3IgdmlldyBmcm9tIGRpZAorICAgICAgICAgICAgU1FM ID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKAorICAgICAgICAgICAgICBb c2VsZi50ZW1wbGF0ZV9wYXRoLCAnc3FsL2RlbGV0ZS5zcWwnXSksIHZpZD12 aWQpCisgICAgICAgICAgICBzdGF0dXMsIHJlc19kYXRhID0gc2VsZi5jb25u LmV4ZWN1dGVfZGljdChTUUwpCisgICAgICAgICAgICBpZiBub3Qgc3RhdHVz OgorICAgICAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJy b3IoZXJyb3Jtc2c9cmVzX2RhdGEpCisKKyAgICAgICAgICAgICMgZHJvcCB2 aWV3CisgICAgICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpv aW4oCisgICAgICAgICAgICAgIFtzZWxmLnRlbXBsYXRlX3BhdGgsICdzcWwv ZGVsZXRlLnNxbCddKSwKKyAgICAgICAgICAgICAgICBuc3BuYW1lPXJlc19k YXRhWydyb3dzJ11bMF1bJ25zcG5hbWUnXSwKKyAgICAgICAgICAgICAgICBu YW1lPXJlc19kYXRhWydyb3dzJ11bMF1bJ25hbWUnXSwgY2FzY2FkZT1jYXNj YWRlCisgICAgICAgICAgICAgICkKKyAgICAgICAgICAgIHN0YXR1cywgcmVz ID0gc2VsZi5jb25uLmV4ZWN1dGVfc2NhbGFyKFNRTCkKKyAgICAgICAgICAg IGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICAgICAgcmV0dXJuIGludGVy bmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXMpCisKKyAgICAgICAgICAg IHJldHVybiBtYWtlX2pzb25fcmVzcG9uc2UoCisgICAgICAgICAgICAgICAg c3VjY2Vzcz0xLAorICAgICAgICAgICAgICAgIGluZm89Z2V0dGV4dCgiVmll dyBkcm9wcGVkIiksCisgICAgICAgICAgICAgICAgZGF0YT17CisgICAgICAg ICAgICAgICAgICAgICdpZCc6IHZpZCwKKyAgICAgICAgICAgICAgICAgICAg J3NpZCc6IHNpZCwKKyAgICAgICAgICAgICAgICAgICAgJ2dpZCc6IGdpZCwK KyAgICAgICAgICAgICAgICAgICAgJ2RpZCc6IGRpZAorICAgICAgICAgICAg ICAgIH0KKyAgICAgICAgICAgICkKKworICAgICAgICBleGNlcHQgRXhjZXB0 aW9uIGFzIGU6CisgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVy X2Vycm9yKGVycm9ybXNnPXN0cihlKSkKKworICAgIGRlZiBfZ2V0X3NjaGVt YShzZWxmLCBzY2lkKToKKyAgICAgICAgIiIiCisgICAgICAgIFJldHVybnMg U2NoZW1hIE5hbWUgZnJvbSBpdHMgT0lELgorCisgICAgICAgIEFyZ3M6Cisg ICAgICAgICAgICBzY2lkOiBTY2hlbWEgSWQKKyAgICAgICAgIiIiCisgICAg ICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50ZW1w bGF0ZV9wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Nx bC9nZXRfc2NoZW1hLnNxbCddKSwgc2NpZD1zY2lkKQorCisgICAgICAgIHN0 YXR1cywgc2NoZW1hX25hbWUgPSBzZWxmLmNvbm4uZXhlY3V0ZV9zY2FsYXIo U1FMKQorCisgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICBy ZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXNjaGVtYV9u YW1lKQorCisgICAgICAgIHJldHVybiBzY2hlbWFfbmFtZQorCisgICAgQGNo ZWNrX3ByZWNvbmRpdGlvbgorICAgIGRlZiBtc3FsKHNlbGYsIGdpZCwgc2lk LCBkaWQsIHNjaWQsIHZpZD1Ob25lKToKKyAgICAgICAgIiIiCisgICAgICAg IFRoaXMgZnVuY3Rpb24gcmV0dXJucyBtb2RpZmllZCBTUUwKKyAgICAgICAg IiIiCisgICAgICAgIGRhdGEgPSB7fQorICAgICAgICBmb3IgaywgdiBpbiBy ZXF1ZXN0LmFyZ3MuaXRlbXMoKToKKyAgICAgICAgICAgIHRyeToKKyAgICAg ICAgICAgICAgICBkYXRhW2tdID0ganNvbi5sb2Fkcyh2KQorICAgICAgICAg ICAgZXhjZXB0IFZhbHVlRXJyb3I6CisgICAgICAgICAgICAgICAgZGF0YVtr XSA9IHYKKworICAgICAgICBTUUwgPSBzZWxmLmdldFNRTChnaWQsIHNpZCwg ZGF0YSwgdmlkKQorICAgICAgICBpZihTUUwpOgorICAgICAgICAgICAgcmV0 dXJuIG1ha2VfanNvbl9yZXNwb25zZSgKKyAgICAgICAgICAgICAgICAgICAg ZGF0YT1TUUwsCisgICAgICAgICAgICAgICAgICAgIHN0YXR1cz0yMDAKKyAg ICAgICAgICAgICAgICAgICAgKQorICAgICAgICBlbHNlOgorICAgICAgICAg ICAgcmV0dXJuIG1ha2VfanNvbl9yZXNwb25zZSgKKyAgICAgICAgICAgICAg ICAgICAgZGF0YT1nZXR0ZXh0KCItLSBOb3RoaW5nIGNoYW5nZWQiKSwKKyAg ICAgICAgICAgICAgICAgICAgc3RhdHVzPTIwMAorICAgICAgICAgICAgICAg ICAgICApCisKKyAgICBAc3RhdGljbWV0aG9kCisgICAgZGVmIHBhcnNlX3By aXZpbGVnZXMoc3RyX3ByaXZpbGVnZXMsIG9iamVjdF90eXBlPSdWSUVXJyk6 CisgICAgICAgICIiIlBhcnNlIFByaXZpbGVnZXMuIiIiCisgICAgICAgIGRi X3ByaXZpbGVnZXMgPSB7CisgICAgICAgICAgICAnYSc6ICdJTlNFUlQnLAor ICAgICAgICAgICAgJ3InOiAnU0VMRUNUJywKKyAgICAgICAgICAgICd3Jzog J1VQREFURScsCisgICAgICAgICAgICAnZCc6ICdERUxFVEUnLAorICAgICAg ICAgICAgJ0QnOiAnVFJVTkNBVEUnLAorICAgICAgICAgICAgJ3gnOiAnUkVG RVJFTkNFUycsCisgICAgICAgICAgICAndCc6ICdUUklHR0VSJworICAgICAg ICAgICAgfQorICAgICAgICBwcml2aWxlZ2VzID0gW10KKyAgICAgICAgZm9y IHByaXYgaW4gc3RyX3ByaXZpbGVnZXM6CisgICAgICAgICAgICBwcml2X3dp dGhfZ3JhbnQgPSBbXQorICAgICAgICAgICAgcHJpdl93aXRob3V0X2dyYW50 ID0gW10KKyAgICAgICAgICAgIGZvciBwcml2aWxlZ2UgaW4gcHJpdlsncHJp dmlsZWdlcyddOgorICAgICAgICAgICAgICAgIGlmIHByaXZpbGVnZVsnd2l0 aF9ncmFudCddOgorICAgICAgICAgICAgICAgICAgICBwcml2X3dpdGhfZ3Jh bnQuYXBwZW5kKAorICAgICAgICAgICAgICAgICAgICAgIGRiX3ByaXZpbGVn ZXNbcHJpdmlsZWdlWydwcml2aWxlZ2VfdHlwZSddXSkKKyAgICAgICAgICAg ICAgICBlbGlmIHByaXZpbGVnZVsncHJpdmlsZWdlJ106CisgICAgICAgICAg ICAgICAgICAgIHByaXZfd2l0aG91dF9ncmFudC5hcHBlbmQoCisgICAgICAg ICAgICAgICAgICAgICAgZGJfcHJpdmlsZWdlc1twcml2aWxlZ2VbJ3ByaXZp bGVnZV90eXBlJ11dKQorCisgICAgICAgICAgICAgICAgIyBJZiB3ZSBoYXZl IGFsbCBhY2wgdGhlbiBqdXN0IHJldHVybiBhbGwKKyAgICAgICAgICAgICAg ICBpZiBsZW4ocHJpdl93aXRoX2dyYW50KSA9PSBsZW4oZGJfcHJpdmlsZWdl cyk6CisgICAgICAgICAgICAgICAgICAgIHByaXZfd2l0aF9ncmFudCA9IFsn QUxMJ10KKyAgICAgICAgICAgICAgICBpZiBsZW4ocHJpdl93aXRob3V0X2dy YW50KSA9PSBsZW4oZGJfcHJpdmlsZWdlcyk6CisgICAgICAgICAgICAgICAg ICAgIHByaXZfd2l0aG91dF9ncmFudCA9IFsnQUxMJ10KKworICAgICAgICAg ICAgIyBTZXJ2ZXIgTGV2ZWwgdmFsaWRhdGlvbgorICAgICAgICAgICAgaWYg J2dyYW50ZWUnIGluIHByaXY6CisgICAgICAgICAgICAgICAgcHJpdmlsZWdl cy5hcHBlbmQoCisgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAg ICAgICAgICdncmFudGVlJzogcHJpdlsnZ3JhbnRlZSddIGlmICdncmFudGVl JyBpbiBwcml2IGVsc2UgJycsCisgICAgICAgICAgICAgICAgICAgICd3aXRo X2dyYW50JzogcHJpdl93aXRoX2dyYW50LAorICAgICAgICAgICAgICAgICAg ICAnd2l0aG91dF9ncmFudCc6IHByaXZfd2l0aG91dF9ncmFudAorICAgICAg ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAg IGVsc2U6CisgICAgICAgICAgICAgICAgcmV0dXJuICcnCisgICAgICAgIHJl dHVybiBwcml2aWxlZ2VzCisKKyAgICBkZWYgZ2V0U1FMKHNlbGYsIGdpZCwg c2lkLCBkYXRhLCB2aWQ9Tm9uZSk6CisgICAgICAgICIiIgorICAgICAgICBU aGlzIGZ1bmN0aW9uIHdpbGwgZ2VuZXJhdGUgc3FsIGZyb20gbW9kZWwgZGF0 YQorICAgICAgICAiIiIKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgaWYg dmlkIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIFNRTCA9IHJlbmRl cl90ZW1wbGF0ZSgiLyIuam9pbigKKyAgICAgICAgICAgICAgICAgICAgW3Nl bGYudGVtcGxhdGVfcGF0aCwgJ3NxbC9wcm9wZXJ0aWVzLnNxbCddKSwKKyAg ICAgICAgICAgICAgICAgIHZpZD12aWQsCisgICAgICAgICAgICAgICAgICBk YXRsYXN0c3lzb2lkPXNlbGYuZGF0bGFzdHN5c29pZAorICAgICAgICAgICAg ICAgICkKKyAgICAgICAgICAgICAgICBzdGF0dXMsIHJlcyA9IHNlbGYuY29u bi5leGVjdXRlX2RpY3QoU1FMKQorICAgICAgICAgICAgICAgIGlmIG5vdCBz dGF0dXM6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9z ZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQorICAgICAgICAgICAgICAgIG9s ZF9kYXRhID0gcmVzWydyb3dzJ11bMF0KKworICAgICAgICAgICAgICAgIGlm ICduYW1lJyBub3QgaW4gZGF0YToKKyAgICAgICAgICAgICAgICAgICAgZGF0 YVsnbmFtZSddID0gcmVzWydyb3dzJ11bMF1bJ25hbWUnXQorICAgICAgICAg ICAgICAgIGlmICdzY2hlbWEnIG5vdCBpbiBkYXRhOgorICAgICAgICAgICAg ICAgICAgICBkYXRhWydzY2hlbWEnXSA9IHJlc1sncm93cyddWzBdWydzY2hl bWEnXQorCisgICAgICAgICAgICAgICAga2V5ID0gJ2RhdGFjbCcKKyAgICAg ICAgICAgICAgICBpZiBrZXkgaW4gZGF0YSBhbmQgZGF0YVtrZXldIGlzIG5v dCBOb25lOgorICAgICAgICAgICAgICAgICAgICBpZiAnYWRkZWQnIGluIGRh dGFba2V5XToKKyAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFba2V5XVsn YWRkZWQnXSA9IHNlbGYucGFyc2VfcHJpdmlsZWdlcygKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgZGF0YVtrZXldWydhZGRlZCddKQorICAgICAgICAg ICAgICAgICAgICBpZiAnY2hhbmdlZCcgaW4gZGF0YVtrZXldOgorICAgICAg ICAgICAgICAgICAgICAgICAgZGF0YVtrZXldWydjaGFuZ2VkJ10gPSBzZWxm LnBhcnNlX3ByaXZpbGVnZXMoCisgICAgICAgICAgICAgICAgICAgICAgICAg IGRhdGFba2V5XVsnY2hhbmdlZCddKQorICAgICAgICAgICAgICAgICAgICBp ZiAnZGVsZXRlZCcgaW4gZGF0YVtrZXldOgorICAgICAgICAgICAgICAgICAg ICAgICAgZGF0YVtrZXldWydkZWxldGVkJ10gPSBzZWxmLnBhcnNlX3ByaXZp bGVnZXMoCisgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFba2V5XVsn ZGVsZXRlZCddKQorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAg ICAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKAorICAg ICAgICAgICAgICAgICAgICAgIFtzZWxmLnRlbXBsYXRlX3BhdGgsICdzcWwv dXBkYXRlLnNxbCddKSwgZGF0YT1kYXRhLAorICAgICAgICAgICAgICAgICAg ICAgICAgb19kYXRhPW9sZF9kYXRhLCBjb25uPXNlbGYuY29ubikKKyAgICAg ICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAg ICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jt c2c9c3RyKGUpKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAg ICByZXF1aXJlZF9hcmdzID0gWworICAgICAgICAgICAgICAgICAgICAnbmFt ZScsCisgICAgICAgICAgICAgICAgICAgICdzY2hlbWEnLAorICAgICAgICAg ICAgICAgICAgICAnZGVmaW5pdGlvbicKKyAgICAgICAgICAgICAgICBdCisg ICAgICAgICAgICAgICAgZm9yIGFyZyBpbiByZXF1aXJlZF9hcmdzOgorICAg ICAgICAgICAgICAgICAgICBpZiBhcmcgbm90IGluIGRhdGE6CisgICAgICAg ICAgICAgICAgICAgICAgICByZXR1cm4gIiAtLSBkZWZpbml0aW9uIGluY29t cGxldGUiCisKKyAgICAgICAgICAgICAgICAjIEdldCBTY2hlbWEgTmFtZSBm cm9tIGl0cyBPSUQuCisgICAgICAgICAgICAgICAgaWYgJ3NjaGVtYScgaW4g ZGF0YToKKyAgICAgICAgICAgICAgICAgICAgZGF0YVsnc2NoZW1hJ10gPSBz ZWxmLl9nZXRfc2NoZW1hKGRhdGFbJ3NjaGVtYSddKQorCisgICAgICAgICAg ICAgICAgaWYgJ2RhdGFjbCcgaW4gZGF0YSBhbmQgZGF0YVsnZGF0YWNsJ10g aXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgICAgIGRhdGFbJ2RhdGFj bCddID0gc2VsZi5wYXJzZV9wcml2aWxlZ2VzKGRhdGFbJ2RhdGFjbCddKQor ICAgICAgICAgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9p bigKKyAgICAgICAgICAgICAgICAgIFtzZWxmLnRlbXBsYXRlX3BhdGgsICdz cWwvY3JlYXRlLnNxbCddKSwgZGF0YT1kYXRhKQorICAgICAgICAgICAgICAg IGlmIGRhdGFbJ2RlZmluaXRpb24nXToKKyAgICAgICAgICAgICAgICAgICAg U1FMICs9ICJcbiIKKyAgICAgICAgICAgICAgICAgICAgU1FMICs9IHJlbmRl cl90ZW1wbGF0ZSgiLyIuam9pbigKKyAgICAgICAgICAgICAgICAgICAgICBb c2VsZi50ZW1wbGF0ZV9wYXRoLCAnc3FsL2dyYW50LnNxbCddKSwgZGF0YT1k YXRhKQorICAgICAgICAgICAgcmV0dXJuIFNRTAorCisgICAgICAgIGV4Y2Vw dCBFeGNlcHRpb24gYXMgZToKKyAgICAgICAgICAgIHJldHVybiBpbnRlcm5h bF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9c3RyKGUpKQorCisgICAgZGVmIGdl dF9pbmRleF9jb2x1bW5fZGV0YWlscyhzZWxmLCBpZHgsIGRhdGEpOgorICAg ICAgICAiIiIKKyAgICAgICAgVGhpcyBmdW5jdGlvbmFsIHdpbGwgZmV0Y2gg bGlzdCBvZiBjb2x1bW4gZGV0YWlscyBmb3IgaW5kZXgKKworICAgICAgICBB cmdzOgorICAgICAgICAgICAgaWR4OiBJbmRleCBPSUQKKyAgICAgICAgICAg IGRhdGE6IFByb3BlcnRpZXMgZGF0YQorCisgICAgICAgIFJldHVybnM6Cisg ICAgICAgICAgICBVcGRhdGVkIHByb3BlcnRpZXMgZGF0YSB3aXRoIGNvbHVt biBkZXRhaWxzCisgICAgICAgICIiIgorCisgICAgICAgIHNlbGYuaW5kZXhf dGVtcF9wYXRoID0gJ2luZGV4JworICAgICAgICBTUUwgPSByZW5kZXJfdGVt cGxhdGUoIi8iLmpvaW4oW3NlbGYuaW5kZXhfdGVtcF9wYXRoLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgJ3NxbC85LjFfcGx1cy9jb2x1bW5f ZGV0YWlscy5zcWwnXSksIGlkeD1pZHgpCisgICAgICAgIHN0YXR1cywgcnNl dCA9IHNlbGYuY29ubi5leGVjdXRlXzJkYXJyYXkoU1FMKQorICAgICAgICBp ZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3Nl cnZlcl9lcnJvcihlcnJvcm1zZz1yc2V0KQorCisgICAgICAgICMgJ2F0dGRl ZicgY29tZXMgd2l0aCBxdW90ZXMgZnJvbSBxdWVyeSBzbyB3ZSBuZWVkIHRv IHN0cmlwIHRoZW0KKyAgICAgICAgIyAnb3B0aW9ucycgd2UgbmVlZCB0cnVl L2ZhbHNlIHRvIHJlbmRlciBzd2l0Y2ggQVNDKGZhbHNlKS9ERVNDKHRydWUp CisgICAgICAgIGNvbHVtbnMgPSBbXQorICAgICAgICBjb2xzID0gW10KKyAg ICAgICAgZm9yIHJvdyBpbiByc2V0Wydyb3dzJ106CisKKyAgICAgICAgICAg ICMgV2UgbmVlZCBhbGwgZGF0YSBhcyBjb2xsZWN0aW9uIGZvciBDb2x1bW5z TW9kZWwKKyAgICAgICAgICAgIGNvbHNfZGF0YSA9IHsKKyAgICAgICAgICAg ICAgICAnY29sbmFtZSc6IHJvd1snYXR0ZGVmJ10uc3RyaXAoJyInKSwKKyAg ICAgICAgICAgICAgICAnY29sbHNwY25hbWUnOiByb3dbJ2NvbGxuc3BuYW1l J10sCisgICAgICAgICAgICAgICAgJ29wX2NsYXNzJzogcm93WydvcGNuYW1l J10sCisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiByb3dbJ29wdGlv bnMnXVswXSA9PSAnREVTQyc6CisgICAgICAgICAgICAgICAgY29sc19kYXRh Wydzb3J0X29yZGVyJ10gPSBUcnVlCisgICAgICAgICAgICBjb2x1bW5zLmFw cGVuZChjb2xzX2RhdGEpCisKKyAgICAgICAgICAgICMgV2UgbmVlZCBzYW1l IGRhdGEgYXMgc3RyaW5nIHRvIGRpc3BsYXkgaW4gcHJvcGVydGllcyB3aW5k b3cKKyAgICAgICAgICAgICMgSWYgbXVsdGlwbGUgY29sdW1uIHRoZW4gc2Vw YXJhdGUgaXQgYnkgY29sb24KKyAgICAgICAgICAgIGNvbHNfc3RyID0gcm93 WydhdHRkZWYnXQorICAgICAgICAgICAgaWYgcm93Wydjb2xsbnNwbmFtZSdd OgorICAgICAgICAgICAgICAgIGNvbHNfc3RyICs9ICcgQ09MTEFURSAnICsg cm93Wydjb2xsbnNwbmFtZSddCisgICAgICAgICAgICBpZiByb3dbJ29wY25h bWUnXToKKyAgICAgICAgICAgICAgICBjb2xzX3N0ciArPSAnICcgKyByb3db J29wY25hbWUnXQorICAgICAgICAgICAgaWYgcm93WydvcHRpb25zJ11bMF0g PT0gJ0RFU0MnOgorICAgICAgICAgICAgICAgIGNvbHNfc3RyICs9ICcgREVT QycKKyAgICAgICAgICAgIGNvbHMuYXBwZW5kKGNvbHNfc3RyKQorCisgICAg ICAgICMgUHVzaCBhcyBjb2xsZWN0aW9uCisgICAgICAgIGRhdGFbJ2NvbHVt bnMnXSA9IGNvbHVtbnMKKyAgICAgICAgIyBQdXNoIGFzIHN0cmluZworICAg ICAgICBkYXRhWydjb2xzJ10gPSAnLCAnLmpvaW4oY29scykKKworICAgICAg ICByZXR1cm4gZGF0YQorCisgICAgZGVmIGdldF90cmlnZ2VyX2NvbHVtbl9k ZXRhaWxzKHNlbGYsIHRpZCwgY2xpc3QpOgorICAgICAgICAiIiIKKyAgICAg ICAgVGhpcyBmdW5jdGlvbiB3aWxsIGZldGNoIGxpc3Qgb2YgY29sdW1uIGZv ciB0cmlnZ2VyCisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICAgIHRpZDog VGFibGUgT0lECisgICAgICAgICAgICBjbGlzdDogTGlzdCBvZiBjb2x1bW5z CisKKyAgICAgICAgUmV0dXJuczoKKyAgICAgICAgICAgIFVwZGF0ZWQgcHJv cGVydGllcyBkYXRhIHdpdGggY29sdW1uCisgICAgICAgICIiIgorCisgICAg ICAgIHNlbGYudHJpZ2dlcl90ZW1wX3BhdGggPSAnc2NoZW1hL3RyaWdnZXIn CisgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2Vs Zi50cmlnZ2VyX3RlbXBfcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAnZ2V0X2NvbHVtbnMuc3FsJ10pLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgdGlkPXRpZCwgY2xpc3Q9Y2xpc3Qp CisgICAgICAgIHN0YXR1cywgcnNldCA9IHNlbGYuY29ubi5leGVjdXRlXzJk YXJyYXkoU1FMKQorICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAg ICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yc2V0 KQorICAgICAgICAjICd0Z2F0dHInIGNvbnRhaW5zIGxpc3Qgb2YgY29sdW1u cyBmcm9tIHRhYmxlIHVzZWQgaW4gdHJpZ2dlcgorICAgICAgICBjb2x1bW5z ID0gW10KKworICAgICAgICBmb3Igcm93IGluIHJzZXRbJ3Jvd3MnXToKKyAg ICAgICAgICAgIGNvbHVtbnMuYXBwZW5kKHsnY29sdW1uJzogcm93WyduYW1l J119KQorCisgICAgICAgIHJldHVybiBjb2x1bW5zCisKKyAgICBkZWYgZ2V0 X3J1bGVfc3FsKHNlbGYsIHZpZCk6CisgICAgICAgICIiIgorICAgICAgICBH ZXQgYWxsIG5vbiBzeXN0ZW0gcnVsZXMgb2YgdmlldyBub2RlLAorICAgICAg ICBnZW5lcmF0ZSB0aGVpciBzcWwgYW5kIHJlbmRlcgorICAgICAgICBpbnRv IHNxbCB0YWIKKyAgICAgICAgIiIiCisKKyAgICAgICAgc2VsZi5ydWxlX3Rl bXBfcGF0aCA9ICdydWxlcycKKyAgICAgICAgU1FMX2RhdGEgPSAnJworICAg ICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oCisgICAgICAg ICAgW3NlbGYucnVsZV90ZW1wX3BhdGgsICdzcWwvcHJvcGVydGllcy5zcWwn XSksIHRpZD12aWQpCisKKyAgICAgICAgc3RhdHVzLCBkYXRhID0gc2VsZi5j b25uLmV4ZWN1dGVfZGljdChTUUwpCisgICAgICAgIGlmIG5vdCBzdGF0dXM6 CisgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVy cm9ybXNnPWRhdGEpCisKKyAgICAgICAgZm9yIHJ1bGUgaW4gZGF0YVsncm93 cyddOgorCisgICAgICAgICAgICAjIEdlbmVyYXRlIFNRTCBvbmx5IGZvciBu b24gc3lzdGVtIHJ1bGUKKyAgICAgICAgICAgIGlmIHJ1bGVbJ25hbWUnXSAh PSAnX1JFVFVSTic6CisgICAgICAgICAgICAgICAgcmVzID0gW10KKyAgICAg ICAgICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oCisg ICAgICAgICAgICAgICAgICBbc2VsZi5ydWxlX3RlbXBfcGF0aCwgJ3NxbC9w cm9wZXJ0aWVzLnNxbCddKSwKKyAgICAgICAgICAgICAgICAgICAgcmlkPXJ1 bGVbJ29pZCddCisgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAg ICAgICBzdGF0dXMsIHJlcyA9IHNlbGYuY29ubi5leGVjdXRlX2RpY3QoU1FM KQorICAgICAgICAgICAgICAgIHJlcyA9IHBhcnNlX3J1bGVfZGVmaW5pdGlv bihyZXMpCisgICAgICAgICAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRl KCIvIi5qb2luKAorICAgICAgICAgICAgICAgICAgW3NlbGYucnVsZV90ZW1w X3BhdGgsICdzcWwvY3JlYXRlLnNxbCddKSwKKyAgICAgICAgICAgICAgICAg ICAgZGF0YT1yZXMsIGRpc3BsYXlfY29tbWVudHM9VHJ1ZSkKKyAgICAgICAg ICAgICAgICBTUUxfZGF0YSArPSAnXG4nCisgICAgICAgICAgICAgICAgU1FM X2RhdGEgKz0gU1FMCisgICAgICAgIHJldHVybiBTUUxfZGF0YQorCisgICAg ZGVmIGdldF90cmlnZ2VyX3NxbChzZWxmLCB2aWQpOgorICAgICAgICAiIiIK KyAgICAgICAgR2V0IGFsbCB0cmlnZ2VyIG5vZGVzIGFzc29jaWF0ZWQgd2l0 aCB2aWV3IG5vZGUsCisgICAgICAgIGdlbmVyYXRlIHRoZWlyIHNxbCBhbmQg cmVuZGVyCisgICAgICAgIGludG8gc3FsIHRhYgorICAgICAgICAiIiIKKwor ICAgICAgICAjIERlZmluZSB0ZW1wbGF0ZSBwYXRoCisgICAgICAgIHNlbGYu dHJpZ2dlcl90ZW1wX3BhdGggPSAndHJpZ2dlcicKKworICAgICAgICBTUUxf ZGF0YSA9ICcnCisgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIu am9pbigKKyAgICAgICAgICAgIFtzZWxmLnRyaWdnZXJfdGVtcF9wYXRoLCAn c3FsLzkuMV9wbHVzL3Byb3BlcnRpZXMuc3FsJ10pLAorICAgICAgICAgICAg dGlkPXZpZCkKKworICAgICAgICBzdGF0dXMsIGRhdGEgPSBzZWxmLmNvbm4u ZXhlY3V0ZV9kaWN0KFNRTCkKKyAgICAgICAgaWYgbm90IHN0YXR1czoKKyAg ICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jt c2c9ZGF0YSkKKworICAgICAgICBmb3IgdHJpZ2dlciBpbiBkYXRhWydyb3dz J106CisgICAgICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpv aW4oCisgICAgICAgICAgICAgIFtzZWxmLnRyaWdnZXJfdGVtcF9wYXRoLCAn c3FsLzkuMV9wbHVzL3Byb3BlcnRpZXMuc3FsJ10pLAorICAgICAgICAgICAg ICAgIHRpZD10cmlnZ2VyWydvaWQnXSwKKyAgICAgICAgICAgICAgICB0Z3Jl bGlkPXZpZAorICAgICAgICAgICAgICAgICkKKworICAgICAgICAgICAgc3Rh dHVzLCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9kaWN0KFNRTCkKKworICAg ICAgICAgICAgcmVzX3Jvd3MgPSBkaWN0KHJlc1sncm93cyddWzBdKQorICAg ICAgICAgICAgaWYgcmVzX3Jvd3NbJ3RnbmFyZ3MnXSA+IDE6CisgICAgICAg ICAgICAgICAgIyBXZSBrbm93IHRoYXQgdHJpZ2dlciBoYXMgbW9yZSB0aGFu IDEKKyAgICAgICAgICAgICAgICAjIGFyZ3VtZW50cywgbGV0J3Mgam9pbiB0 aGVtCisgICAgICAgICAgICAgICAgcmVzX3Jvd3NbJ3RnYXJncyddID0gJywg Jy5qb2luKAorICAgICAgICAgICAgICAgICAgICByZXNfcm93c1sndGdhcmdz J10pCisKKyAgICAgICAgICAgIGlmIGxlbihyZXNfcm93c1sndGdhdHRyJ10p ID4gMToKKyAgICAgICAgICAgICAgICBjb2x1bW5zID0gJywgJy5qb2luKHJl c19yb3dzWyd0Z2F0dHInXS5zcGxpdCgnICcpKQorICAgICAgICAgICAgICAg IHJlc19yb3dzWydjb2x1bW5zJ10gPSBzZWxmLmdldF90cmlnZ2VyX2NvbHVt bl9kZXRhaWxzKAorICAgICAgICAgICAgICAgICAgICB0cmlnZ2VyWydvaWQn XSwgY29sdW1ucykKKyAgICAgICAgICAgIHJlc19yb3dzID0gdHJpZ2dlcl9k ZWZpbml0aW9uKHJlc19yb3dzKQorCisgICAgICAgICAgICBTUUwgPSByZW5k ZXJfdGVtcGxhdGUoIi8iLmpvaW4oCisgICAgICAgICAgICAgIFtzZWxmLnRy aWdnZXJfdGVtcF9wYXRoLCAnc3FsLzkuMV9wbHVzL2NyZWF0ZS5zcWwnXSks CisgICAgICAgICAgICAgICAgZGF0YT1yZXNfcm93cywgZGlzcGxheV9jb21t ZW50cz1UcnVlKQorICAgICAgICAgICAgU1FMX2RhdGEgKz0gJ1xuJworICAg ICAgICAgICAgU1FMX2RhdGEgKz0gU1FMCisKKyAgICAgICAgcmV0dXJuIFNR TF9kYXRhCisKKyAgICBkZWYgZ2V0X2luZGV4X3NxbChzZWxmLCB2aWQpOgor ICAgICAgICAiIiIKKyAgICAgICAgR2V0IGFsbCBpbmRleCBhc3NvY2lhdGVk IHdpdGggdmlldyBub2RlLAorICAgICAgICBnZW5lcmF0ZSB0aGVpciBzcWwg YW5kIHJlbmRlcgorICAgICAgICBpbnRvIHNxbCB0YWIKKyAgICAgICAgIiIi CisKKyAgICAgICAgc2VsZi5pbmRleF90ZW1wX3BhdGggPSAnaW5kZXgnCisg ICAgICAgIFNRTF9kYXRhID0gJycKKyAgICAgICAgU1FMID0gcmVuZGVyX3Rl bXBsYXRlKCIvIi5qb2luKAorICAgICAgICAgIFtzZWxmLmluZGV4X3RlbXBf cGF0aCwgJ3NxbC85LjFfcGx1cy9wcm9wZXJ0aWVzLnNxbCddKSwgdGlkPXZp ZCkKKyAgICAgICAgc3RhdHVzLCBkYXRhID0gc2VsZi5jb25uLmV4ZWN1dGVf ZGljdChTUUwpCisgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAg ICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPWRhdGEp CisKKyAgICAgICAgZm9yIGluZGV4IGluIGRhdGFbJ3Jvd3MnXToKKyAgICAg ICAgICAgIHJlcyA9IFtdCisgICAgICAgICAgICBTUUwgPSByZW5kZXJfdGVt cGxhdGUoIi8iLmpvaW4oCisgICAgICAgICAgICAgIFtzZWxmLmluZGV4X3Rl bXBfcGF0aCwgJ3NxbC85LjFfcGx1cy9wcm9wZXJ0aWVzLnNxbCddKSwKKyAg ICAgICAgICAgICAgICBpZHg9aW5kZXhbJ29pZCddLAorICAgICAgICAgICAg ICAgIHRpZD12aWQKKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICBz dGF0dXMsIHJlcyA9IHNlbGYuY29ubi5leGVjdXRlX2RpY3QoU1FMKQorCisg ICAgICAgICAgICBkYXRhID0gZGljdChyZXNbJ3Jvd3MnXVswXSkKKyAgICAg ICAgICAgICMgQWRkaW5nIHBhcmVudCBpbnRvIGRhdGEgZGljdCwgd2lsbCBi ZSB1c2luZyBpdCB3aGlsZSBjcmVhdGluZyBzcWwKKyAgICAgICAgICAgIGRh dGFbJ3NjaGVtYSddID0gZGF0YVsnbnNwbmFtZSddCisgICAgICAgICAgICBk YXRhWyd0YWJsZSddID0gZGF0YVsndGFibmFtZSddCisKKyAgICAgICAgICAg ICMgQWRkIGNvbHVtbiBkZXRhaWxzIGZvciBjdXJyZW50IGluZGV4CisgICAg ICAgICAgICBkYXRhID0gc2VsZi5nZXRfaW5kZXhfY29sdW1uX2RldGFpbHMo aW5kZXhbJ29pZCddLCBkYXRhKQorCisgICAgICAgICAgICBTUUwgPSByZW5k ZXJfdGVtcGxhdGUoIi8iLmpvaW4oCisgICAgICAgICAgICAgIFtzZWxmLmlu ZGV4X3RlbXBfcGF0aCwgJ3NxbC85LjFfcGx1cy9jcmVhdGUuc3FsJ10pLAor ICAgICAgICAgICAgICAgIGRhdGE9ZGF0YSwgZGlzcGxheV9jb21tZW50cz1U cnVlKQorICAgICAgICAgICAgU1FMX2RhdGEgKz0gJ1xuJworICAgICAgICAg ICAgU1FMX2RhdGEgKz0gU1FMCisgICAgICAgIHJldHVybiBTUUxfZGF0YQor CisgICAgQGNoZWNrX3ByZWNvbmRpdGlvbgorICAgIGRlZiBzcWwoc2VsZiwg Z2lkLCBzaWQsIGRpZCwgc2NpZCwgdmlkKToKKyAgICAgICAgIiIiCisgICAg ICAgIFRoaXMgZnVuY3Rpb24gd2lsbCBnZW5lcmF0ZSBzcWwgdG8gcmVuZGVy IGludG8gdGhlIHNxbCBwYW5lbAorICAgICAgICAiIiIKKworICAgICAgICBT UUxfZGF0YSA9ICcnCisgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgi LyIuam9pbigKKyAgICAgICAgICBbc2VsZi50ZW1wbGF0ZV9wYXRoLCAnc3Fs L3Byb3BlcnRpZXMuc3FsJ10pLAorICAgICAgICAgIHZpZD12aWQsCisgICAg ICAgICAgZGF0bGFzdHN5c29pZD1zZWxmLmRhdGxhc3RzeXNvaWQKKyAgICAg ICAgKQorCisgICAgICAgIHN0YXR1cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1 dGVfZGljdChTUUwpCisgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAg ICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJl cykKKworICAgICAgICByZXN1bHQgPSByZXNbJ3Jvd3MnXVswXQorCisgICAg ICAgICMgRmV0Y2ggYWxsIHByaXZpbGVnZXMgZm9yIHZpZXcKKyAgICAgICAg U1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKAorICAgICAgICAgIFtz ZWxmLnRlbXBsYXRlX3BhdGgsICdzcWwvYWNsLnNxbCddKSwgdmlkPXZpZCkK KyAgICAgICAgc3RhdHVzLCBkYXRhY2xyZXMgPSBzZWxmLmNvbm4uZXhlY3V0 ZV9kaWN0KFNRTCkKKyAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAg ICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVz KQorCisgICAgICAgIGZvciByb3cgaW4gZGF0YWNscmVzWydyb3dzJ106Cisg ICAgICAgICAgICBwcml2ID0gc2VsZi5wYXJzZV92aWV3c19wcml2aWxlZ2Vz KHJvdykKKyAgICAgICAgICAgIGlmIHJvd1snZGVmdHlwZSddIGluIHJlc1sn cm93cyddWzBdOgorICAgICAgICAgICAgICAgIHJlc1sncm93cyddWzBdWydk YXRhY2wnXS5hcHBlbmQocHJpdikKKyAgICAgICAgICAgIGVsc2U6CisgICAg ICAgICAgICAgICAgcmVzWydyb3dzJ11bMF1bJ2RhdGFjbCddID0gW3ByaXZd CisKKyAgICAgICAgcmVzdWx0LnVwZGF0ZShyZXNbJ3Jvd3MnXVswXSkKKyAg ICAgICAgaWYgJ2RhdGFjbCcgaW4gcmVzdWx0OgorICAgICAgICAgICAgcmVz dWx0WydkYXRhY2wnXSA9IHNlbGYucGFyc2VfcHJpdmlsZWdlcyhyZXN1bHRb J2RhdGFjbCddKQorCisgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgi LyIuam9pbigKKyAgICAgICAgICAgICAgICBbc2VsZi50ZW1wbGF0ZV9wYXRo LCAnc3FsL2NyZWF0ZS5zcWwnXSksCisgICAgICAgICAgICAgICAgZGF0YT1y ZXN1bHQsCisgICAgICAgICAgICAgICAgY29ubj1zZWxmLmNvbm4sCisgICAg ICAgICAgICAgICAgZGlzcGxheV9jb21tZW50cz1UcnVlCisgICAgICAgICAg ICAgICkKKyAgICAgICAgU1FMICs9ICJcbiIKKyAgICAgICAgU1FMICs9IHJl bmRlcl90ZW1wbGF0ZSgiLyIuam9pbigKKyAgICAgICAgICBbc2VsZi50ZW1w bGF0ZV9wYXRoLCAnc3FsL2dyYW50LnNxbCddKSwgZGF0YT1yZXN1bHQpCisK KyAgICAgICAgU1FMX2RhdGEgKz0gU1FMCisgICAgICAgIFNRTF9kYXRhICs9 IHNlbGYuZ2V0X3J1bGVfc3FsKHZpZCkKKyAgICAgICAgU1FMX2RhdGEgKz0g c2VsZi5nZXRfdHJpZ2dlcl9zcWwodmlkKQorICAgICAgICBTUUxfZGF0YSAr PSBzZWxmLmdldF9pbmRleF9zcWwodmlkKQorCisgICAgICAgIHJldHVybiBh amF4X3Jlc3BvbnNlKHJlc3BvbnNlPVNRTF9kYXRhKQorCisgICAgQGNoZWNr X3ByZWNvbmRpdGlvbgorICAgIGRlZiBnZXRfdGJsc3BjKHNlbGYsIGdpZCwg c2lkLCBkaWQsIHNjaWQpOgorICAgICAgICAiIiIKKyAgICAgICAgVGhpcyBm dW5jdGlvbiB0byByZXR1cm4gbGlzdCBvZiB0YWJsZXNwYWNlcworICAgICAg ICAiIiIKKyAgICAgICAgcmVzID0gW10KKyAgICAgICAgdHJ5OgorICAgICAg ICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKAorICAgICAgICAgICAgICAg ICIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsICdzcWwvZ2V0X3RibHNw Yy5zcWwnXSkKKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICBzdGF0 dXMsIHJzZXQgPSBzZWxmLmNvbm4uZXhlY3V0ZV9kaWN0KFNRTCkKKyAgICAg ICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICAgICAgcmV0dXJu IGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXMpCisKKyAgICAg ICAgICAgIGZvciByb3cgaW4gcnNldFsncm93cyddOgorICAgICAgICAgICAg ICAgIHJlcy5hcHBlbmQoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg eydsYWJlbCc6IHJvd1snc3BjbmFtZSddLCAndmFsdWUnOiByb3dbJ3NwY25h bWUnXX0KKyAgICAgICAgICAgICAgICAgICAgICAgICkKKworICAgICAgICAg ICAgcmV0dXJuIG1ha2VfanNvbl9yZXNwb25zZSgKKyAgICAgICAgICAgICAg ICAgICAgZGF0YT1yZXMsCisgICAgICAgICAgICAgICAgICAgIHN0YXR1cz0y MDAKKyAgICAgICAgICAgICAgICAgICAgKQorCisgICAgICAgIGV4Y2VwdCBF eGNlcHRpb24gYXMgZToKKyAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9z ZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9c3RyKGUpKQorCisgICAgQGNoZWNrX3By ZWNvbmRpdGlvbgorICAgIGRlZiBkZXBlbmRlbnRzKHNlbGYsIGdpZCwgc2lk LCBkaWQsIHNjaWQsIHZpZCk6CisgICAgICAgICIiIgorICAgICAgICBUaGlz IGZ1bmN0aW9uIGdldHMgdGhlIGRlcGVuZGVudHMgYW5kIHJldHVybnMgYW4g YWpheCByZXNwb25zZQorICAgICAgICBmb3IgdGhlIHZpZXcgbm9kZS4KKwor ICAgICAgICBBcmdzOgorICAgICAgICAgICAgZ2lkOiBTZXJ2ZXIgR3JvdXAg SUQKKyAgICAgICAgICAgIHNpZDogU2VydmVyIElECisgICAgICAgICAgICBk aWQ6IERhdGFiYXNlIElECisgICAgICAgICAgICB2aWQ6IFZpZXcgSUQKKyAg ICAgICAgIiIiCisgICAgICAgIGRlcGVuZGVudHNfcmVzdWx0ID0gc2VsZi5n ZXRfZGVwZW5kZW50cyhzZWxmLmNvbm4sIHZpZCkKKyAgICAgICAgcmV0dXJu IGFqYXhfcmVzcG9uc2UoCisgICAgICAgICAgICByZXNwb25zZT1kZXBlbmRl bnRzX3Jlc3VsdCwKKyAgICAgICAgICAgIHN0YXR1cz0yMDAKKyAgICAgICAg ICAgICkKKworICAgIEBjaGVja19wcmVjb25kaXRpb24KKyAgICBkZWYgZGVw ZW5kZW5jaWVzKHNlbGYsIGdpZCwgc2lkLCBkaWQsIHNjaWQsIHZpZCk6Cisg ICAgICAgICIiIgorICAgICAgICBUaGlzIGZ1bmN0aW9uIGdldHMgdGhlIGRl cGVuZGVuY2llcyBhbmQgcmV0dXJucyBhbiBhamF4IHJlc3BvbnNlCisgICAg ICAgIGZvciB0aGUgdmlldyBub2RlLgorCisgICAgICAgIEFyZ3M6CisgICAg ICAgICAgICBnaWQ6IFNlcnZlciBHcm91cCBJRAorICAgICAgICAgICAgc2lk OiBTZXJ2ZXIgSUQKKyAgICAgICAgICAgIGRpZDogRGF0YWJhc2UgSUQKKyAg ICAgICAgICAgIHZpZDogVmlldyBJRAorICAgICAgICAiIiIKKyAgICAgICAg ZGVwZW5kZW5jaWVzX3Jlc3VsdCA9IHNlbGYuZ2V0X2RlcGVuZGVuY2llcyhz ZWxmLmNvbm4sIHZpZCkKKyAgICAgICAgcmV0dXJuIGFqYXhfcmVzcG9uc2Uo CisgICAgICAgICAgICByZXNwb25zZT1kZXBlbmRlbmNpZXNfcmVzdWx0LAor ICAgICAgICAgICAgc3RhdHVzPTIwMAorICAgICAgICAgICAgKQorCisKK2Ns YXNzIE1hdGVyaWFsaXplZFZpZXdOb2RlKFZpZXdOb2RlLCBWYWN1dW1TZXR0 aW5ncyk6CisgICAgIiIiCisgICAgVGhpcyBjbGFzcyBpcyByZXNwb25zaWJs ZSBmb3IgZ2VuZXJhdGluZyByb3V0ZXMgZm9yCisgICAgbWF0ZXJpYWxpemVk IHZpZXcgbm9kZS4KKworICAgIE1ldGhvZHM6CisgICAgLS0tLS0tLQorICAg ICogX19pbml0X18oKiprd2FyZ3MpCisgICAgICAtIE1ldGhvZCBpcyB1c2Vk IHRvIGluaXRpYWxpemUgdGhlIE1hdGVyaWFsaXplZFZpZXcKKyAgICAgIGFu ZCBpdCdzIGJhc2Ugdmlldy4KKworICAgICogbW9kdWxlX2pzKCkKKyAgICAg IC0gVGhpcyBwcm9wZXJ0eSBkZWZpbmVzIChpZiBqYXZhc2NyaXB0KSBleGlz dHMgZm9yIHRoaXMgbm9kZS4KKyAgICAgICAgT3ZlcnJpZGUgdGhpcyBwcm9w ZXJ0eSBmb3IgeW91ciBvd24gbG9naWMKKworICAgICogY3JlYXRlKGdpZCwg c2lkLCBkaWQsIHNjaWQpCisgICAgICAtIFJhaXNlIGFuIGVycm9yIC0gd2Ug Y2FuIG5vdCBjcmVhdGUgYSBtYXRlcmlhbCB2aWV3LgorCisgICAgKiB1cGRh dGUoZ2lkLCBzaWQsIGRpZCwgc2NpZCkKKyAgICAgIC0gVGhpcyBmdW5jdGlv biB3aWxsIHVwZGF0ZSB0aGUgZGF0YSBmb3IgdGhlIHNlbGVjdGVkIG1hdGVy aWFsIG5vZGUKKworICAgICogZGVsZXRlKHNlbGYsIGdpZCwgc2lkLCBzY2lk KToKKyAgICAgIC0gUmFpc2UgYW4gZXJyb3IgLSB3ZSBjYW4gbm90IGRlbGV0 ZSBhIG1hdGVyaWFsIHZpZXcuCisKKyAgICAqIGdldF9zcWwoZGF0YSwgc2Np ZCkKKyAgICAgIC0gVGhpcyBmdW5jdGlvbiB3aWxsIGdlbmVyYXRlIHNxbCBm cm9tIG1vZGVsIGRhdGEKKworICAgICIiIgorCisgICAgbm9kZV90eXBlID0g bXZpZXdfYmx1ZXByaW50Lm5vZGVfdHlwZQorCisgICAgZGVmIF9faW5pdF9f KHNlbGYsICphcmdzLCAqKmt3YXJncyk6CisgICAgICAgICIiIgorICAgICAg ICBJbml0aWFsaXplIHRoZSB2YXJpYWJsZXMgdXNlZCBieSBtZXRob2RzIG9m IFZpZXdOb2RlLgorICAgICAgICAiIiIKKworICAgICAgICBzdXBlcihNYXRl cmlhbGl6ZWRWaWV3Tm9kZSwgc2VsZikuX19pbml0X18oKmFyZ3MsICoqa3dh cmdzKQorCisgICAgICAgIHNlbGYudGVtcGxhdGVfaW5pdGlhbCA9ICdtdmll dycKKworICAgIEBzdGF0aWNtZXRob2QKKyAgICBkZWYgcGdfdGVtcGxhdGVf cGF0aCh2ZXIpOgorICAgICAgICAiIiIKKyAgICAgICAgUmV0dXJucyB0aGUg dGVtcGxhdGUgcGF0aCBmb3IgUG9zdGdyZVNRTCBzZXJ2ZXJzLgorICAgICAg ICAiIiIKKyAgICAgICAgaWYgdmVyID49IDkwMzAwOgorICAgICAgICAgICAg cmV0dXJuICdwZy85LjNfcGx1cycKKyAgICAgICAgcmV0dXJuICdwZy85LjNf cGx1cycKKworICAgIGRlZiBnZXRfc3FsKHNlbGYsIGdpZCwgc2lkLCBkYXRh LCBzY2lkLCB2aWQ9Tm9uZSk6CisgICAgICAgICIiIgorICAgICAgICBUaGlz IGZ1bmN0aW9uIHdpbGwgZ2VuZXJhdGUgc3FsIGZyb20gbW9kZWwgZGF0YQor ICAgICAgICAiIiIKKyAgICAgICAgaWYgc2NpZCBpcyBOb25lOgorICAgICAg ICAgICAgcmV0dXJuIGJhZF9yZXF1ZXN0KCdDYW5ub3QgY3JlYXRlIGEgVmll dyEnKQorCisgICAgICAgIHJldHVybiBzdXBlcihNYXRlcmlhbGl6ZWRWaWV3 Tm9kZSwgc2VsZikuZ2V0X3NxbCgKKyAgICAgICAgICAgICAgICBnaWQsIHNp ZCwgZGF0YSwgc2NpZCwgdmlkKQorCisgICAgZGVmIGdldFNRTChzZWxmLCBn aWQsIHNpZCwgZGF0YSwgdmlkPU5vbmUpOgorICAgICAgICAiIiIKKyAgICAg ICAgVGhpcyBmdW5jdGlvbiB3aWxsIGdlbnJhdGUgc3FsIGZyb20gbW9kZWwg ZGF0YQorICAgICAgICAiIiIKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAg aWYgdmlkIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIFNRTCA9IHJl bmRlcl90ZW1wbGF0ZSgiLyIuam9pbigKKyAgICAgICAgICAgICAgICAgICAg W3NlbGYudGVtcGxhdGVfcGF0aCwgJ3NxbC9wcm9wZXJ0aWVzLnNxbCddKSwK KyAgICAgICAgICAgICAgICAgIHZpZD12aWQsCisgICAgICAgICAgICAgICAg ICBkYXRsYXN0c3lzb2lkPXNlbGYuZGF0bGFzdHN5c29pZAorICAgICAgICAg ICAgICAgICkKKyAgICAgICAgICAgICAgICBzdGF0dXMsIHJlcyA9IHNlbGYu Y29ubi5leGVjdXRlX2RpY3QoU1FMKQorICAgICAgICAgICAgICAgIGlmIG5v dCBzdGF0dXM6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBpbnRlcm5h bF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQorICAgICAgICAgICAgICAg IG9sZF9kYXRhID0gcmVzWydyb3dzJ11bMF0KKworICAgICAgICAgICAgICAg IGlmICduYW1lJyBub3QgaW4gZGF0YToKKyAgICAgICAgICAgICAgICAgICAg ZGF0YVsnbmFtZSddID0gcmVzWydyb3dzJ11bMF1bJ25hbWUnXQorICAgICAg ICAgICAgICAgIGlmICdzY2hlbWEnIG5vdCBpbiBkYXRhOgorICAgICAgICAg ICAgICAgICAgICBkYXRhWydzY2hlbWEnXSA9IHJlc1sncm93cyddWzBdWydz Y2hlbWEnXQorCisgICAgICAgICAgICAgICAgIyBtZXJnZSB2YWN1dW0gbGlz dHMgaW50byBvbmUKKyAgICAgICAgICAgICAgICBkYXRhWyd2YWN1dW1fZGF0 YSddID0ge30KKyAgICAgICAgICAgICAgICBkYXRhWyd2YWN1dW1fZGF0YSdd WydjaGFuZ2VkJ10gPSBbXQorICAgICAgICAgICAgICAgIGRhdGFbJ3ZhY3V1 bV9kYXRhJ11bJ3Jlc2V0J10gPSBbXQorICAgICAgICAgICAgICAgIGlmICgn dmFjdXVtX3RhYmxlJyBpbiBkYXRhKToKKyAgICAgICAgICAgICAgICAgICAg aWYgKCdjaGFuZ2VkJyBpbiBkYXRhWyd2YWN1dW1fdGFibGUnXSk6CisgICAg ICAgICAgICAgICAgICAgICAgICBmb3IgaXRlbSBpbiBkYXRhWyd2YWN1dW1f dGFibGUnXVsnY2hhbmdlZCddOgorICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGlmICd2YWx1ZScgaW4gaXRlbS5rZXlzKCk6CisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGlmIGl0ZW1bJ3ZhbHVlJ10gaXMgTm9uZToK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFbJ3Zh Y3V1bV9kYXRhJ11bJ3Jlc2V0J10uYXBwZW5kKGl0ZW0pCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBkYXRhWyd2YWN1dW1fZGF0YSddWydjaGFu Z2VkJ10uYXBwZW5kKGl0ZW0pCisKKyAgICAgICAgICAgICAgICAgICAgICAg IGlmICgnYXV0b3ZhY3V1bV9lbmFibGVkJyBpbiBkYXRhIGFuZAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgc3RyKGRhdGFbJ2F1dG92YWN1dW1fZW5h YmxlZCddKS5sb3dlcigpID09ICd0cnVlJyk6CisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZGF0YVsndmFjdXVtX2RhdGEnXVsnY2hhbmdlZCddLmFw cGVuZCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyduYW1l JzogJ2F1dG92YWN1dW1fZW5hYmxlZCcsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAndmFsdWUnOiBkYXRhWydhdXRvdmFjdXVtX2VuYWJs ZWQnXX0pCisgICAgICAgICAgICAgICAgICAgICAgICBlbGlmIChvbGRfZGF0 YVsnYXV0b3ZhY3V1bV9lbmFibGVkJ10gPT0gJ3RydWUnKToKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICBkYXRhWyd2YWN1dW1fZGF0YSddWydjaGFu Z2VkJ10uYXBwZW5kKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB7J25hbWUnOiAnYXV0b3ZhY3V1bV9lbmFibGVkJywKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICd2YWx1ZSc6ICd0cnVlJ30pCisgICAg ICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGRhdGFbJ3ZhY3V1bV9kYXRhJ11bJ2NoYW5nZWQnXSA9IHt9 CisKKyAgICAgICAgICAgICAgICBrZXkgPSAnZGF0YWNsJworICAgICAgICAg ICAgICAgIGlmIGtleSBpbiBkYXRhIGFuZCBkYXRhW2tleV0gaXMgbm90IE5v bmU6CisgICAgICAgICAgICAgICAgICAgIGlmICdhZGRlZCcgaW4gZGF0YVtr ZXldOgorICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVtrZXldWydhZGRl ZCddID0gc2VsZi5wYXJzZV9wcml2aWxlZ2VzKAorICAgICAgICAgICAgICAg ICAgICAgICAgICBkYXRhW2tleV1bJ2FkZGVkJ10pCisgICAgICAgICAgICAg ICAgICAgIGlmICdjaGFuZ2VkJyBpbiBkYXRhW2tleV06CisgICAgICAgICAg ICAgICAgICAgICAgICBkYXRhW2tleV1bJ2NoYW5nZWQnXSA9IHNlbGYucGFy c2VfcHJpdmlsZWdlcygKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0 YVtrZXldWydjaGFuZ2VkJ10pCisgICAgICAgICAgICAgICAgICAgIGlmICdk ZWxldGVkJyBpbiBkYXRhW2tleV06CisgICAgICAgICAgICAgICAgICAgICAg ICBkYXRhW2tleV1bJ2RlbGV0ZWQnXSA9IHNlbGYucGFyc2VfcHJpdmlsZWdl cygKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVtrZXldWydkZWxl dGVkJ10pCisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAg ICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oCisgICAgICAg ICAgICAgICAgICAgICAgW3NlbGYudGVtcGxhdGVfcGF0aCwgJ3NxbC91cGRh dGUuc3FsJ10pLCBkYXRhPWRhdGEsCisgICAgICAgICAgICAgICAgICAgICAg ICBvX2RhdGE9b2xkX2RhdGEsIGNvbm49c2VsZi5jb25uKQorICAgICAgICAg ICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKKyAgICAgICAgICAgICAg ICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1z dHIoZSkpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJl cXVpcmVkX2FyZ3MgPSBbCisgICAgICAgICAgICAgICAgICAgICduYW1lJywK KyAgICAgICAgICAgICAgICAgICAgJ3NjaGVtYScsCisgICAgICAgICAgICAg ICAgICAgICdkZWZpbml0aW9uJworICAgICAgICAgICAgICAgIF0KKyAgICAg ICAgICAgICAgICBmb3IgYXJnIGluIHJlcXVpcmVkX2FyZ3M6CisgICAgICAg ICAgICAgICAgICAgIGlmIGFyZyBub3QgaW4gZGF0YToKKyAgICAgICAgICAg ICAgICAgICAgICAgIHJldHVybiAiIC0tIGRlZmluaXRpb24gaW5jb21wbGV0 ZSIKKworICAgICAgICAgICAgICAgICMgR2V0IFNjaGVtYSBOYW1lIGZyb20g aXRzIE9JRC4KKyAgICAgICAgICAgICAgICBpZiAnc2NoZW1hJyBpbiBkYXRh OgorICAgICAgICAgICAgICAgICAgICBkYXRhWydzY2hlbWEnXSA9IHNlbGYu X2dldF9zY2hlbWEoZGF0YVsnc2NoZW1hJ10pCisKKyAgICAgICAgICAgICAg ICAjIG1lcmdlIHZhY3V1bSBsaXN0cyBpbnRvIG9uZQorICAgICAgICAgICAg ICAgIHZhY3V1bV90YWJsZSA9IFtpdGVtIGZvciBpdGVtIGluIGRhdGFbJ3Zh Y3V1bV90YWJsZSddCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGlmICd2YWx1ZScgaW4gaXRlbS5rZXlzKCkgYW5kIGl0ZW1bJ3ZhbHVlJ10g aXMgbm90IE5vbmVdCisgICAgICAgICAgICAgICAgdmFjdXVtX3RvYXN0ID0g WworICAgICAgICAgICAgICAgICAgICB7J25hbWUnOiAndG9hc3QuJytpdGVt WyduYW1lJ10sICd2YWx1ZSc6aXRlbVsndmFsdWUnXX0KKyAgICAgICAgICAg ICAgICAgICAgZm9yIGl0ZW0gaW4gZGF0YVsndmFjdXVtX3RvYXN0J10gaWYg J3ZhbHVlJyBpbiBpdGVtLmtleXMoKSBhbmQgaXRlbVsndmFsdWUnXSBpcyBu b3QgTm9uZV0KKworICAgICAgICAgICAgICAgICMgYWRkIHZhY3V1bV90b2Fz dCBkaWN0IHRvIHZhY3V1bV9kYXRhIG9ubHkgaWYKKyAgICAgICAgICAgICAg ICAjIHRvYXN0J3MgYXV0b3ZhY3V1bSBpcyBlbmFibGVkCisgICAgICAgICAg ICAgICAgaWYgKCd0b2FzdF9hdXRvdmFjdXVtX2VuYWJsZWQnIGluIGRhdGEg YW5kCisgICAgICAgICAgICAgICAgICAgZGF0YVsndG9hc3RfYXV0b3ZhY3V1 bV9lbmFibGVkJ10gaXMgVHJ1ZSk6CisgICAgICAgICAgICAgICAgICAgIGRh dGFbJ3ZhY3V1bV9kYXRhJ10gPSB2YWN1dW1fdGFibGUgKyB2YWN1dW1fdG9h c3QKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAg ICBkYXRhWyd2YWN1dW1fZGF0YSddID0gdmFjdXVtX3RhYmxlCisKKyAgICAg ICAgICAgICAgICBpZiAnZGF0YWNsJyBpbiBkYXRhIGFuZCBkYXRhWydkYXRh Y2wnXSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgZGF0YVsn ZGF0YWNsJ10gPSBzZWxmLnBhcnNlX3ByaXZpbGVnZXMoZGF0YVsnZGF0YWNs J10pCisgICAgICAgICAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIv Ii5qb2luKAorICAgICAgICAgICAgICAgICAgW3NlbGYudGVtcGxhdGVfcGF0 aCwgJ3NxbC9jcmVhdGUuc3FsJ10pLCBkYXRhPWRhdGEpCisgICAgICAgICAg ICAgICAgaWYgZGF0YVsnZGVmaW5pdGlvbiddOgorICAgICAgICAgICAgICAg ICAgICBTUUwgKz0gIlxuIgorICAgICAgICAgICAgICAgICAgICBTUUwgKz0g cmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKAorICAgICAgICAgICAgICAgICAg ICAgIFtzZWxmLnRlbXBsYXRlX3BhdGgsICdzcWwvZ3JhbnQuc3FsJ10pLCBk YXRhPWRhdGEpCisgICAgICAgICAgICByZXR1cm4gU1FMCisKKyAgICAgICAg ZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAgcmV0dXJuIGlu dGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1zdHIoZSkpCisKKyAgICBA Y2hlY2tfcHJlY29uZGl0aW9uCisgICAgZGVmIHNxbChzZWxmLCBnaWQsIHNp ZCwgZGlkLCBzY2lkLCB2aWQpOgorICAgICAgICAiIiIKKyAgICAgICAgVGhp cyBmdW5jdGlvbiB3aWxsIGdlbmVyYXRlIHNxbCB0byByZW5kZXIgaW50byB0 aGUgc3FsIHBhbmVsCisgICAgICAgICIiIgorCisgICAgICAgIFNRTF9kYXRh ID0gJycKKyAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2lu KAorICAgICAgICAgIFtzZWxmLnRlbXBsYXRlX3BhdGgsICdzcWwvcHJvcGVy dGllcy5zcWwnXSksCisgICAgICAgICAgdmlkPXZpZCwKKyAgICAgICAgICBk YXRsYXN0c3lzb2lkPXNlbGYuZGF0bGFzdHN5c29pZAorICAgICAgICApCisK KyAgICAgICAgc3RhdHVzLCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9kaWN0 KFNRTCkKKyAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgIHJl dHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQorCisg ICAgICAgIHJlc3VsdCA9IHJlc1sncm93cyddWzBdCisKKyAgICAgICAgIyBz ZW5kaW5nIHJlc3VsdCB0byBmb3JtdHRlcgorICAgICAgICBmcm10ZF9yZXNs dCA9IHNlbGYuZm9ybWF0dGVyKHJlc3VsdCkKKworICAgICAgICAjIG1lcmdp bmcgZm9ybWF0ZWQgcmVzdWx0IHdpdGggbWFpbiByZXN1bHQgYWdhaW4KKyAg ICAgICAgcmVzdWx0LnVwZGF0ZShmcm10ZF9yZXNsdCkKKyAgICAgICAgcmVz dWx0Wyd2YWN1dW1fdGFibGUnXSA9IHNlbGYucGFyc2VfdmFjdXVtX2RhdGEo CisgICAgICAgICAgICBzZWxmLmNvbm4sIHJlc3VsdCwgJ3RhYmxlJykKKyAg ICAgICAgcmVzdWx0Wyd2YWN1dW1fdG9hc3QnXSA9IHNlbGYucGFyc2VfdmFj dXVtX2RhdGEoCisgICAgICAgICAgICBzZWxmLmNvbm4sIHJlc3VsdCwgJ3Rv YXN0JykKKworICAgICAgICAjIG1lcmdlIHZhY3V1bSBsaXN0cyBpbnRvIG9u ZQorICAgICAgICB2YWN1dW1fdGFibGUgPSBbaXRlbSBmb3IgaXRlbSBpbiBy ZXN1bHRbJ3ZhY3V1bV90YWJsZSddCisgICAgICAgICAgICAgICAgICAgICAg ICBpZiAndmFsdWUnIGluIGl0ZW0ua2V5cygpIGFuZCBpdGVtWyd2YWx1ZSdd IGlzIG5vdCBOb25lXQorICAgICAgICB2YWN1dW1fdG9hc3QgPSBbCisgICAg ICAgICAgICB7J25hbWUnOiAndG9hc3QuJytpdGVtWyduYW1lJ10sICd2YWx1 ZSc6aXRlbVsndmFsdWUnXX0KKyAgICAgICAgICAgIGZvciBpdGVtIGluIHJl c3VsdFsndmFjdXVtX3RvYXN0J10gaWYgJ3ZhbHVlJyBpbiBpdGVtLmtleXMo KSBhbmQgaXRlbVsndmFsdWUnXSBpcyBub3QgTm9uZV0KKworICAgICAgICAj IGFkZCB2YWN1dW1fdG9hc3QgZGljdCB0byB2YWN1dW1fZGF0YSBvbmx5IGlm CisgICAgICAgICMgdG9hc3QncyBhdXRvdmFjdXVtIGlzIGVuYWJsZWQKKyAg ICAgICAgaWYgKCd0b2FzdF9hdXRvdmFjdXVtX2VuYWJsZWQnIGluIHJlc3Vs dCBhbmQKKyAgICAgICAgICAgcmVzdWx0Wyd0b2FzdF9hdXRvdmFjdXVtX2Vu YWJsZWQnXSBpcyBUcnVlKToKKyAgICAgICAgICAgIHJlc3VsdFsndmFjdXVt X2RhdGEnXSA9IHZhY3V1bV90YWJsZSArIHZhY3V1bV90b2FzdAorICAgICAg ICBlbHNlOgorICAgICAgICAgICAgcmVzdWx0Wyd2YWN1dW1fZGF0YSddID0g dmFjdXVtX3RhYmxlCisKKyAgICAgICAgIyBGZXRjaCBhbGwgcHJpdmlsZWdl cyBmb3IgdmlldworICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8i LmpvaW4oCisgICAgICAgICAgW3NlbGYudGVtcGxhdGVfcGF0aCwgJ3NxbC9h Y2wuc3FsJ10pLCB2aWQ9dmlkKQorICAgICAgICBzdGF0dXMsIGRhdGFjbHJl cyA9IHNlbGYuY29ubi5leGVjdXRlX2RpY3QoU1FMKQorICAgICAgICBpZiBu b3Qgc3RhdHVzOgorICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZl cl9lcnJvcihlcnJvcm1zZz1yZXMpCisKKyAgICAgICAgZm9yIHJvdyBpbiBk YXRhY2xyZXNbJ3Jvd3MnXToKKyAgICAgICAgICAgIHByaXYgPSBzZWxmLnBh cnNlX3ZpZXdzX3ByaXZpbGVnZXMocm93KQorICAgICAgICAgICAgaWYgcm93 WydkZWZ0eXBlJ10gaW4gcmVzWydyb3dzJ11bMF06CisgICAgICAgICAgICAg ICAgcmVzWydyb3dzJ11bMF1bJ2RhdGFjbCddLmFwcGVuZChwcml2KQorICAg ICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByZXNbJ3Jvd3MnXVsw XVsnZGF0YWNsJ10gPSBbcHJpdl0KKworICAgICAgICByZXN1bHQudXBkYXRl KHJlc1sncm93cyddWzBdKQorICAgICAgICBpZiAnZGF0YWNsJyBpbiByZXN1 bHQ6CisgICAgICAgICAgICByZXN1bHRbJ2RhdGFjbCddID0gc2VsZi5wYXJz ZV9wcml2aWxlZ2VzKHJlc3VsdFsnZGF0YWNsJ10pCisKKyAgICAgICAgU1FM ID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKAorICAgICAgICAgICAgICAg IFtzZWxmLnRlbXBsYXRlX3BhdGgsICdzcWwvY3JlYXRlLnNxbCddKSwKKyAg ICAgICAgICAgICAgICBkYXRhPXJlc3VsdCwKKyAgICAgICAgICAgICAgICBj b25uPXNlbGYuY29ubiwKKyAgICAgICAgICAgICAgICBkaXNwbGF5X2NvbW1l bnRzPVRydWUKKyAgICAgICAgICAgICAgKQorICAgICAgICBTUUwgKz0gIlxu IgorICAgICAgICBTUUwgKz0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKAor ICAgICAgICAgIFtzZWxmLnRlbXBsYXRlX3BhdGgsICdzcWwvZ3JhbnQuc3Fs J10pLCBkYXRhPXJlc3VsdCkKKworICAgICAgICBTUUxfZGF0YSArPSBTUUwK KyAgICAgICAgU1FMX2RhdGEgKz0gc2VsZi5nZXRfcnVsZV9zcWwodmlkKQor ICAgICAgICBTUUxfZGF0YSArPSBzZWxmLmdldF90cmlnZ2VyX3NxbCh2aWQp CisgICAgICAgIFNRTF9kYXRhICs9IHNlbGYuZ2V0X2luZGV4X3NxbCh2aWQp CisKKyAgICAgICAgcmV0dXJuIGFqYXhfcmVzcG9uc2UocmVzcG9uc2U9U1FM X2RhdGEpCisKKyAgICBAY2hlY2tfcHJlY29uZGl0aW9uCisgICAgZGVmIGdl dF90YWJsZV92YWN1dW0oc2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2NpZCk6Cisg ICAgICAgICIiIgorICAgICAgICBGZXRjaCB0aGUgZGVmYXVsdCB2YWx1ZXMg Zm9yIGF1dG92YWN1dW0KKyAgICAgICAgZmllbGRzLCByZXR1cm4gYW4gYXJy YXkgb2YKKyAgICAgICAgICAtIGxhYmVsCisgICAgICAgICAgLSBuYW1lCisg ICAgICAgICAgLSBzZXR0aW5nCisgICAgICAgIHZhbHVlcworICAgICAgICAi IiIKKworICAgICAgICByZXMgPSBzZWxmLmdldF92YWN1dW1fdGFibGVfc2V0 dGluZ3Moc2VsZi5jb25uKQorICAgICAgICByZXR1cm4gYWpheF9yZXNwb25z ZSgKKyAgICAgICAgICAgICAgICByZXNwb25zZT1yZXNbJ3Jvd3MnXSwKKyAg ICAgICAgICAgICAgICBzdGF0dXM9MjAwCisgICAgICAgICAgICAgICAgKQor CisgICAgQGNoZWNrX3ByZWNvbmRpdGlvbgorICAgIGRlZiBnZXRfdG9hc3Rf dGFibGVfdmFjdXVtKHNlbGYsIGdpZCwgc2lkLCBkaWQsIHNjaWQpOgorICAg ICAgICAiIiIKKyAgICAgICAgRmV0Y2ggdGhlIGRlZmF1bHQgdmFsdWVzIGZv ciBhdXRvdmFjdXVtCisgICAgICAgIGZpZWxkcywgcmV0dXJuIGFuIGFycmF5 IG9mCisgICAgICAgICAgLSBsYWJlbAorICAgICAgICAgIC0gbmFtZQorICAg ICAgICAgIC0gc2V0dGluZworICAgICAgICB2YWx1ZXMKKyAgICAgICAgIiIi CisgICAgICAgIHJlcyA9IHNlbGYuZ2V0X3ZhY3V1bV90b2FzdF9zZXR0aW5n cyhzZWxmLmNvbm4pCisKKyAgICAgICAgcmV0dXJuIGFqYXhfcmVzcG9uc2Uo CisgICAgICAgICAgICAgICAgcmVzcG9uc2U9cmVzWydyb3dzJ10sCisgICAg ICAgICAgICAgICAgc3RhdHVzPTIwMAorICAgICAgICAgICAgICAgICkKKwor ICAgIEBjaGVja19wcmVjb25kaXRpb24KKyAgICBkZWYgcHJvcGVydGllcyhz ZWxmLCBnaWQsIHNpZCwgZGlkLCBzY2lkLCB2aWQpOgorICAgICAgICAiIiIK KyAgICAgICAgRmV0Y2hlcyB0aGUgcHJvcGVydGllcyBvZiBhbiBpbmRpdmlk dWFsIHZpZXcKKyAgICAgICAgYW5kIHJlbmRlciBpbiB0aGUgcHJvcGVydGll cyB0YWIKKyAgICAgICAgIiIiCisgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1w bGF0ZSgiLyIuam9pbigKKyAgICAgICAgICAgIFtzZWxmLnRlbXBsYXRlX3Bh dGgsICdzcWwvcHJvcGVydGllcy5zcWwnXQorICAgICAgICAgICksIHZpZD12 aWQsIGRhdGxhc3RzeXNvaWQ9c2VsZi5kYXRsYXN0c3lzb2lkKQorICAgICAg ICBzdGF0dXMsIHJlcyA9IHNlbGYuY29ubi5leGVjdXRlX2RpY3QoU1FMKQor ICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgcmV0dXJuIGlu dGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXMpCisKKyAgICAgICAg U1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKAorICAgICAgICAgIFtz ZWxmLnRlbXBsYXRlX3BhdGgsICdzcWwvYWNsLnNxbCddKSwgdmlkPXZpZCkK KyAgICAgICAgc3RhdHVzLCBkYXRhY2xyZXMgPSBzZWxmLmNvbm4uZXhlY3V0 ZV9kaWN0KFNRTCkKKyAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAg ICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVz KQorCisgICAgICAgIGZvciByb3cgaW4gZGF0YWNscmVzWydyb3dzJ106Cisg ICAgICAgICAgICBwcml2ID0gc2VsZi5wYXJzZV92aWV3c19wcml2aWxlZ2Vz KHJvdykKKyAgICAgICAgICAgIGlmIHJvd1snZGVmdHlwZSddIGluIHJlc1sn cm93cyddWzBdOgorICAgICAgICAgICAgICAgIHJlc1sncm93cyddWzBdW3Jv d1snZGVmdHlwZSddXS5hcHBlbmQocHJpdikKKyAgICAgICAgICAgIGVsc2U6 CisgICAgICAgICAgICAgICAgcmVzWydyb3dzJ11bMF1bcm93WydkZWZ0eXBl J11dID0gW3ByaXZdCisKKyAgICAgICAgcmVzdWx0ID0gcmVzWydyb3dzJ11b MF0KKworICAgICAgICAjIHNlbmRpbmcgcmVzdWx0IHRvIGZvcm10dGVyCisg ICAgICAgIGZybXRkX3Jlc2x0ID0gc2VsZi5mb3JtYXR0ZXIocmVzdWx0KQor CisgICAgICAgICMgbWVyZ2luZyBmb3JtYXRlZCByZXN1bHQgd2l0aCBtYWlu IHJlc3VsdCBhZ2FpbgorICAgICAgICByZXN1bHQudXBkYXRlKGZybXRkX3Jl c2x0KQorCisgICAgICAgIHJlc3VsdFsndmFjdXVtX3RhYmxlJ10gPSBzZWxm LnBhcnNlX3ZhY3V1bV9kYXRhKAorICAgICAgICAgICAgc2VsZi5jb25uLCBy ZXN1bHQsICd0YWJsZScpCisgICAgICAgIHJlc3VsdFsndmFjdXVtX3RvYXN0 J10gPSBzZWxmLnBhcnNlX3ZhY3V1bV9kYXRhKAorICAgICAgICAgICAgc2Vs Zi5jb25uLCByZXN1bHQsICd0b2FzdCcpCisKKyAgICAgICAgcmV0dXJuIGFq YXhfcmVzcG9uc2UoCisgICAgICAgICAgICAgICAgcmVzcG9uc2U9cmVzdWx0 LAorICAgICAgICAgICAgICAgIHN0YXR1cz0yMDAKKyAgICAgICAgICAgICAg ICApCisKK1ZpZXdOb2RlLnJlZ2lzdGVyX25vZGVfdmlldyh2aWV3X2JsdWVw cmludCkKK01hdGVyaWFsaXplZFZpZXdOb2RlLnJlZ2lzdGVyX25vZGVfdmll dyhtdmlld19ibHVlcHJpbnQpCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9i cm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1h cy92aWV3cy9jaGlsZHJlbi9fX2luaXRfXy5weSBiL3dlYi9wZ2FkbWluL2Jy b3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFz L3ZpZXdzL2NoaWxkcmVuL19faW5pdF9fLnB5Cm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAuLmMxNzUzOWYKLS0tIC9kZXYvbnVsbAorKysg Yi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9k YXRhYmFzZXMvc2NoZW1hcy92aWV3cy9jaGlsZHJlbi9fX2luaXRfXy5weQpA QCAtMCwwICsxLDEyIEBACisiIiIKK1dlIHdpbGwgdXNlIHRoZSBleGlzaXRp bmcgbW9kdWxlcyBmb3IgY3JlYXRpbmcgY2hpbGRyZW4gbW9kdWxlIHVuZGVy CittYXRlcmlhbGl6ZSB2aWV3cy4KKyIiIgorZnJvbSBwZ2FkbWluLmJyb3dz ZXIuc2VydmVyX2dyb3Vwcy5zZXJ2ZXJzLmRhdGFiYXNlcy5zY2hlbWFzLnRh Ymxlcy5jb2x1bW5zIFwKKyAgaW1wb3J0IGJsdWVwcmludCBhcyBjb2x1bW5z X21vZHVsZQorZnJvbSBwZ2FkbWluLmJyb3dzZXIuc2VydmVyX2dyb3Vwcy5z ZXJ2ZXJzLmRhdGFiYXNlcy5zY2hlbWFzLnRhYmxlcy5pbmRleGVzIFwKKyAg aW1wb3J0IGJsdWVwcmludCBhcyBpbmRleGVzX21vZHVsZXMKK2Zyb20gcGdh ZG1pbi5icm93c2VyLnNlcnZlcl9ncm91cHMuc2VydmVycy5kYXRhYmFzZXMu c2NoZW1hcy50YWJsZXMudHJpZ2dlcnMgXAorICBpbXBvcnQgYmx1ZXByaW50 IGFzIHRyaWdnZXJzX21vZHVsZXMKK2Zyb20gcGdhZG1pbi5icm93c2VyLnNl cnZlcl9ncm91cHMuc2VydmVycy5kYXRhYmFzZXMuc2NoZW1hcy50YWJsZXMu cnVsZXMgXAorICBpbXBvcnQgYmx1ZXByaW50IGFzIHJ1bGVzX21vZHVsZXMK ZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3ZpZXdzL3N0YXRpYy9pbWcv Y29sbC1tdmlldy5wbmcgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9n cm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy92aWV3cy9zdGF0aWMv aW1nL2NvbGwtbXZpZXcucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQw ZTY1YTk2ZTE4MDA0MTA0YjA0MWIwYWUzMjU3OWIyNmFlOTcwNTgKR0lUIGJp bmFyeSBwYXRjaApsaXRlcmFsIDM3NAp6Y21WLSswZzMqSlApPGg7M0t8TGsw MDBlMU5KTFRxMDAwbUcwMDBtTzFeQHM2QU1eaVYwMDAwOWE3YkJtMDAwWFUK ejAwMFhVMFJXbnU3eXRrUENgbSo/UjU7Nn1sZk8jQ1AheHkxK2VWNmwpeTt5 KkFQNzNSaEBqUVFyNEJ4WUxwekJlCno7XkgkMTt0UWxOO04mNj5QQSg+aExB T0UkMmI8WU41QFZDeD4hMVZebml8UG5Fe0EpNS19IWVCbHNwMiE4Snd2ewp6 X3h4WU4mWmE5OGZOQU0hcitFbGI0Szx2RnBnfWQ3cWF5MUZSWkIhbGVEYVJO bzREcnJeXlUjdXAzcl8lWnlydHkKek1XMGBvQjgrX2l3Q3JRTUlUJFBNK0Q2 TE9pYTNwZllrODVqUzVCRHBUMnkybXVYQGt6JWZVIyRUKT1SbWhkMXBJCnpO ez4pX3hoM1RTbG9FditzdWdrQ256X1FYXnUqcTZeYjxRNVVfVmBFS01ybTZl Z0J6M3clWio5Ti0yYThuM2tTYAp6WGhsY1p3VClDNkJMU19BZUlna1UlTVQq eTZVUDN9MVRJKXdVTD1mdEF7aFd+YERJJHdrNjFIfk1jSGxVM3VrKzgKVXZ9 LT0oJjtTNGMwNypxb002TjwkZjwhQEBwI1Q1PwoKbGl0ZXJhbCAwCkhjbVY/ ZDAwMDAxCgpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2 ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdmlld3Mvc3Rh dGljL2ltZy9jb2xsLXZpZXcucG5nIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9z ZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdmlld3Mv c3RhdGljL2ltZy9jb2xsLXZpZXcucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAuLjA3OGQ1MzM2ODRiOGJkN2UxODU3NDljNGYxYzk2MjBhZjIzZDExNGIK R0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDQxOAp6Y21lQVNATj8ob2xIeWB1 VkJxIWlhMHZwXjB3QiE2Mz93eWxgR2JLfVk9QlJRRTA4fD54T2RLUm5SekRe OXtyajIKel99bFZGQEFmQDtiQH1QQGQoV1JnZWZJM3hxbz1wN0tWUH0hVilV Y2AtVChnbWQtJVY1YCVBVXx8Tm4xKXA/PkdoCnpuKFomdFBKYSROez14Z2Z6 cVVKbj5UZG9qSl5zPUFAT3lgU1pfSVlSKChBSFd7MDMrTlZAWiUtRm9WT2g4 KSthOwp6bERFNXlRMXpaMUFlKGAreiQzQzROUEI+PitzU01AQVMyKD8jVzYo VWElZ3t+UD1mLUd2KzI3UDlWPlFKfDQ7VTYKemJlIUdLSCtrUFNNTmglMFlE O3dWUHAhJnAkPUgyUWE+NF9pQy1Xc2A0b1Z1YGtYdkRJZTVsX2VWfGp3Vzsr NStTCnpZZ3k2flBZZHkrLWNTNDUpfmsyWiEkV0FBVWN0K29rXmtyQytNbFZz K3BwZnljYEBGYG5DPD5sLVZNcT90NXIpfQp6QlQ3O2RPSCE/cGkmQjlVZ09Q IXVwe3t8RXU5MTAmcF4yNURySW8zdnd0PDxJZmtGUGhrZXcoUmFgUkklKDwq VW0KVWtiQ0B3Nnt2eTEpNzgmcW9sYDsrMExRTVc1ZFopSAoKbGl0ZXJhbCAw CkhjbVY/ZDAwMDAxCgpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nl ci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdmll d3Mvc3RhdGljL2ltZy9tdmlldy5wbmcgYi93ZWIvcGdhZG1pbi9icm93c2Vy L3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy92aWV3 cy9zdGF0aWMvaW1nL212aWV3LnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw Li43YjcyYmRiYjAyNGQyMDZhOWNjY2NjMzA3Yjk4MGFmN2RjOWNlYTg4CkdJ VCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCAzNDQKemNtZUFTQE4/KG9sSHlgdVZC cSFpYTB2cF4wd0IhNjF8O1BffDQjJWBvQ098eyNTOUdHIVhWN1pGbCZ3azB8 TyhNCnpyO0I1ViNwJmIoaUhyanIkdkhiRXt7QkNAejFienhYb19adiE4Rn5w bG1zQVg8bE9oR1pweSo0VGU9IVFQRkZibQp6VTtZdH5Qclp3eiNRITI9Z01a SCh2ajNkXyhmbTtPYUF3PT9ePTFjO0s0QU92YCt4Z0dgX0pLUnZFc0tzK3xw Wm4KejtePkQqeDZPVCtDcGQwOG4hSU0jXkxaMUYzTTN5KTcyY0g7KTMpaEJA dyg8JEVOdHVJISszN1gmM1lLcGU3KWlPCnpvN0VCX0U+MDU5V1RyUUVTOTt4 WGRpZEQlIUsxMGtKUnFQcyYwa3tEZjlIJXZ1PyhNIXh0TnM/JnZ8VWIpNipq JAp6YnlxK3YkeXhnNSU/alFFIX1DYyRLRUchX2U4MnZfcX18X3w2OSoxIz15 SHM4WmZ5akRocmkjSzFDODxEcCNGNG8KbGZBIzxRXl9UcE1nNSlaSWZ0NEt8 RTRLVXBDU1h1OGMpSSR6dGFEMGUwc3hTKWxtLTkqCgpsaXRlcmFsIDAKSGNt Vj9kMDAwMDEKCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3Nl cnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy92aWV3cy9z dGF0aWMvaW1nL3ZpZXcucG5nIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2 ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdmlld3Mvc3Rh dGljL2ltZy92aWV3LnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NDEx NmRiNTY0OTZiYjQ3N2M4ZWNlN2QzZmRkYTY2NmUxYjM3NThiCkdJVCBiaW5h cnkgcGF0Y2gKbGl0ZXJhbCA0MzcKemNtZUFTQE4/KG9sSHlgdVZCcSFpYTB2 cF4wd0IhNjM/d3lsYEdiS31YQEYwTkUwOHw+eE9kS1JuYUJUb0FPND43Cno7 T245WForQVVAZEdZRDxgX0c/MGVmSTN4PEVPVzdKWVJGe01lQFFebnZlYz5a LTEld3xOc0IoRlZ0XjtwN1B8eQp6am9VOWJUPXxpNjtjTWRRJnRiPHRkU0Nn VGJLelUhQHNIbHlVI0xDJi0rbGFwX2sofEpjbUNBZns4ZjdPTkF9X08KejQq VEFpP1J1czZSZHJQJiZ8PTF0QWlyUCtoaTVtXkslNjlSY05mNyZUV3htJUlo K0xeaztPcFQxQn41SFg0P1Q3CnpTKU1NQUFyaEM5NkFtIStfO0BnPTk1ezAz KDVZa1I0eFQpRV56N2wmPl9RTFJIM1NseEk1P2Fib2Z3cSNQcEdobgp6M3kz YHdhdXBPMW88Nn12YUtmWiU2QnZVd0Jge2h9WHhQelc2VD5panArUjx7KSY8 I1Izc3gtQShOa1EhWGNiI24KejwwREhxcFl6Tk5KekxtfHw1JHl4MEpLJUwj NUpOTUM5eCNjRCFDe1hOSEd7MDcjaXByOHRFRHNoOFApR25IWER7CnptfShv Q1N7V0czZCNBU3dNTUd8V05AaUxtTTF6NFBTT1pZQ2lJc3NGTThtMStwPSpF fDcoOEE1VC1HQHlHeXdueApDbTkoKHsKCmxpdGVyYWwgMApIY21WP2QwMDAw MQoKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dy b3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3ZpZXdzL3RlbXBsYXRl cy9tdmlldy9jc3MvbXZpZXcuY3NzIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9z ZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdmlld3Mv dGVtcGxhdGVzL212aWV3L2Nzcy9tdmlldy5jc3MKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMC4uY2Q4NjU4YQotLS0gL2Rldi9udWxsCisr KyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJz L2RhdGFiYXNlcy9zY2hlbWFzL3ZpZXdzL3RlbXBsYXRlcy9tdmlldy9jc3Mv bXZpZXcuY3NzCkBAIC0wLDAgKzEsMTMgQEAKKy5pY29uLW12aWV3eworICBi YWNrZ3JvdW5kLWltYWdlOiB1cmwoJ3t7IHVybF9mb3IoJ05PREUtbXZpZXcu c3RhdGljJywgZmlsZW5hbWU9J2ltZy9tdmlldy5wbmcnKSB9fScpICFpbXBv cnRhbnQ7CisgIGJvcmRlci1yYWRpdXM6IDEwcHg7CisgIGJhY2tncm91bmQt cmVwZWF0OiBuby1yZXBlYXQ7CisgIGFsaWduLWNvbnRlbnQ6IGNlbnRlcjsK KyAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsKKyAgaGVpZ2h0OiAxLjNlbTsK K30KKworLnNxbF9maWVsZF9oZWlnaHRfMjgwIHsKKyAgaGVpZ2h0OiAyODBw eDsKKyAgd2lkdGg6IDEwMCU7Cit9CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1p bi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2No ZW1hcy92aWV3cy90ZW1wbGF0ZXMvbXZpZXcvanMvbXZpZXcuanMgYi93ZWIv cGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFz ZXMvc2NoZW1hcy92aWV3cy90ZW1wbGF0ZXMvbXZpZXcvanMvbXZpZXcuanMK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDEzODkyYwot LS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVy X2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3ZpZXdzL3RlbXBs YXRlcy9tdmlldy9qcy9tdmlldy5qcwpAQCAtMCwwICsxLDI2OCBAQAorZGVm aW5lKAorICBbJ2pxdWVyeScsICd1bmRlcnNjb3JlJywgJ3VuZGVyc2NvcmUu c3RyaW5nJywgJ3BnYWRtaW4nLAorICAgICdwZ2FkbWluLmJyb3dzZXInLCAn Y29kZW1pcnJvcicsICdwZ2FkbWluLmJyb3dzZXIuc2VydmVyLnByaXZpbGVn ZSddLAorCitmdW5jdGlvbigkLCBfLCBTLCBwZ0FkbWluLCBwZ0Jyb3dzZXIs IENvZGVNaXJyb3IpIHsKKworICAvKioKKyAgICBDcmVhdGUgYW5kIGFkZCBh IHZpZXcgY29sbGVjdGlvbiBpbnRvIG5vZGVzCisgICAgQHBhcmFtIHt2YXJp YWJsZX0gbGFiZWwgLSBMYWJlbCBmb3IgTm9kZQorICAgIEBwYXJhbSB7dmFy aWFibGV9IHR5cGUgLSBUeXBlIG9mIE5vZGUKKyAgICBAcGFyYW0ge3Zhcmlh YmxlfSBjb2x1bW5zIC0gTGlzdCBvZiBjb2x1bW5zIHRvCisgICAgICBkaXNw bGF5IHVuZGVyIHVuZGVyIHByb3BlcnRpZXMuCisgICAqLworICBpZiAoIXBn QnJvd3Nlci5Ob2Rlc1snY29sbC1tdmlldyddKSB7CisgICAgdmFyIG12aWV3 cz0gcGdBZG1pbi5Ccm93c2VyLk5vZGVzWydjb2xsLW12aWV3J10gPQorICAg ICAgcGdBZG1pbi5Ccm93c2VyLkNvbGxlY3Rpb24uZXh0ZW5kKHsKKyAgICAg ICAgbm9kZTogJ212aWV3JywKKyAgICAgICAgbGFiZWw6ICd7eyBfKCJNYXRl cmlhbGl6ZWQgVmlld3MiKSB9fScsCisgICAgICAgIHR5cGU6ICdjb2xsLW12 aWV3JywKKyAgICAgICAgY29sdW1uczogWyduYW1lJywgJ293bmVyJ10KKyAg ICAgIH0pOworICB9CisKKyAgLyoqCisgICAgQ3JlYXRlIGFuZCBBZGQgYSBW aWV3IE5vZGUgaW50byBub2RlcworICAgIEBwYXJhbSB7dmFyaWFibGV9IHBh cmVudF90eXBlIC0gVGhlIGxpc3Qgb2Ygbm9kZXMKKyAgICB1bmRlciB3aGlj aCB0aGlzIG5vZGUgdG8gZGlzcGxheQorICAgIEBwYXJhbSB7dmFyaWFibGV9 IHR5cGUgLSBUeXBlIG9mIE5vZGUKKyAgICBAcGFyYW0ge3ZhcmlhYmxlfSBo YXNTUUwgLSBUbyBzaG93IFNRTCB0YWIKKyAgICBAcGFyYW0ge3ZhcmlhYmxl fSBjYW5Ecm9wIC0gQWRkcyBkcm9wIHZpZXcgb3B0aW9uCisgICAgaW4gdGhl IGNvbnRleHQgbWVudQorICAgIEBwYXJhbSB7dmFyaWFibGV9IGNhbkRyb3BD YXNjYWRlIC0gQWRkcyBkcm9wIENhc2NhZGUKKyAgICB2aWV3IG9wdGlvbiBp biB0aGUgY29udGV4dCBtZW51CisgICAqLworICBpZiAoIXBnQnJvd3Nlci5O b2Rlc1snbXZpZXcnXSkgeworICAgIHBnQWRtaW4uQnJvd3Nlci5Ob2Rlc1sn bXZpZXcnXSA9IHBnQWRtaW4uQnJvd3Nlci5Ob2RlLmV4dGVuZCh7CisgICAg ICBwYXJlbnRfdHlwZTogWydzY2hlbWEnLCAnY2F0YWxvZyddLAorICAgICAg dHlwZTogJ212aWV3JywKKyAgICAgIHNxbEFsdGVySGVscDogJ3NxbC1hbHRl cm1hdGVyaWFsaXplZHZpZXcuaHRtbCcsCisgICAgICBzcWxDcmVhdGVIZWxw OiAnc3FsLWNyZWF0ZW1hdGVyaWFsaXplZHZpZXcuaHRtbCcsCisgICAgICBs YWJlbDogJ3t7IF8oIk1hdGVyaWFsaXplZCBWaWV3IikgfX0nLAorICAgICAg aGFzU1FMOiAgdHJ1ZSwKKyAgICAgIGhhc0RlcGVuZHM6IHRydWUsCisgICAg ICBjb2xsZWN0aW9uX3R5cGU6ICdjb2xsLW12aWV3JywKKyAgICAgIGNhbkRy b3A6IHBnQnJvd3Nlci5Ob2Rlc1snc2NoZW1hJ10uY2FuQ2hpbGREcm9wLAor ICAgICAgY2FuRHJvcENhc2NhZGU6IHBnQnJvd3Nlci5Ob2Rlc1snc2NoZW1h J10uY2FuQ2hpbGREcm9wLAorICAgICAgSW5pdDogZnVuY3Rpb24oKSB7CisK KyAgICAgICAgLy8gQXZvaWQgbXVsaXRwbGUgcmVnaXN0cmF0aW9uIG9mIG1l bnVzCisgICAgICAgIGlmICh0aGlzLmluaXRpYWxpemVkKQorICAgICAgICAg IHJldHVybjsKKworICAgICAgICB0aGlzLmluaXRpYWxpemVkID0gdHJ1ZTsK KworICAgICAgICAvKioKKyAgICAgICAgICBBZGQgImNyZWF0ZSB2aWV3IiBt ZW51IG9wdGlvbiBpbnRvIGNvbnRleHQgYW5kIG9iamVjdCBtZW51CisgICAg ICAgICAgZm9yIHRoZSBmb2xsb3dpbmcgbm9kZXM6CisgICAgICAgICAgY29s bC1tdmlldywgdmlldyBhbmQgc2NoZW1hLgorICAgICAgICAgIEBwcm9wZXJ0 eSB7ZGF0YX0gLSBBbGxvdyBjcmVhdGUgdmlldyBvcHRpb24gb24gc2NoZW1h IG5vZGUgb3IKKyAgICAgICAgICBzeXN0ZW0gdmlldyBub2Rlcy4KKyAgICAg ICAgICovCisgICAgICAgIHBnQnJvd3Nlci5hZGRfbWVudXMoW3sKKyAgICAg ICAgICBuYW1lOiAnY3JlYXRlX212aWV3X29uX2NvbGwnLCBub2RlOiAnY29s bC1tdmlldycsCisgICAgICAgICAgbW9kdWxlOiB0aGlzLCBhcHBsaWVzOiBb J29iamVjdCcsICdjb250ZXh0J10sIGNhbGxiYWNrOiAnc2hvd19vYmpfcHJv cGVydGllcycsCisgICAgICAgICAgY2F0ZWdvcnk6ICdjcmVhdGUnLCBwcmlv cml0eTogNCwgbGFiZWw6ICd7eyBfKCJNYXRlcmlhbGl6ZWQgVmlldy4uLiIp IH19JywKKyAgICAgICAgICBpY29uOiAnd2NUYWJJY29uIGljb24tbXZpZXcn LCBkYXRhOiB7YWN0aW9uOiAnY3JlYXRlJywgY2hlY2s6IHRydWV9LAorICAg ICAgICAgIGVuYWJsZTogJ2NhbkNyZWF0ZScKKyAgICAgICAgfSx7CisgICAg ICAgICAgbmFtZTogJ2NyZWF0ZV9tdmlldycsIG5vZGU6ICdtdmlldycsIG1v ZHVsZTogdGhpcywKKyAgICAgICAgICBhcHBsaWVzOiBbJ29iamVjdCcsICdj b250ZXh0J10sIGNhbGxiYWNrOiAnc2hvd19vYmpfcHJvcGVydGllcycsCisg ICAgICAgICAgY2F0ZWdvcnk6ICdjcmVhdGUnLCBwcmlvcml0eTogNCwgbGFi ZWw6ICd7eyBfKCJNYXRlcmlhbGl6ZWQgVmlldy4uLiIpIH19JywKKyAgICAg ICAgICBpY29uOiAnd2NUYWJJY29uIGljb24tbXZpZXcnLCBkYXRhOiB7YWN0 aW9uOiAnY3JlYXRlJywgY2hlY2s6IHRydWV9LAorICAgICAgICAgIGVuYWJs ZTogJ2NhbkNyZWF0ZScKKyAgICAgICAgfSx7CisgICAgICAgICAgbmFtZTog J2NyZWF0ZV9tdmlldycsIG5vZGU6ICdzY2hlbWEnLCBtb2R1bGU6IHRoaXMs CisgICAgICAgICAgYXBwbGllczogWydvYmplY3QnLCAnY29udGV4dCddLCBj YWxsYmFjazogJ3Nob3dfb2JqX3Byb3BlcnRpZXMnLAorICAgICAgICAgIGNh dGVnb3J5OiAnY3JlYXRlJywgcHJpb3JpdHk6IDQsIGxhYmVsOiAne3sgXygi TWF0ZXJpYWxpemVkIFZpZXcuLi4iKSB9fScsCisgICAgICAgICAgaWNvbjog J3djVGFiSWNvbiBpY29uLW12aWV3JywgZGF0YToge2FjdGlvbjogJ2NyZWF0 ZScsIGNoZWNrOiBmYWxzZX0sCisgICAgICAgICAgZW5hYmxlOiAnY2FuQ3Jl YXRlJworICAgICAgICB9CisgICAgICAgIF0pOworICAgICAgfSwKKworICAg ICAgLyoqCisgICAgICAgIERlZmluZSBtb2RlbCBmb3IgdGhlIHZpZXcgbm9k ZSBhbmQgc3BlY2lmeSB0aGUKKyAgICAgICAgcHJvcGVydGllcyBvZiB0aGUg bW9kZWwgaW4gc2NoZW1hLgorICAgICAgICovCisgICAgICBtb2RlbDogcGdB ZG1pbi5Ccm93c2VyLk5vZGUuTW9kZWwuZXh0ZW5kKHsKKyAgICAgICAgaW5p dGlhbGl6ZTogZnVuY3Rpb24oYXR0cnMsIGFyZ3MpIHsKKyAgICAgICAgICB2 YXIgaXNOZXcgPSAoXy5zaXplKGF0dHJzKSA9PT0gMCk7CisgICAgICAgICAg aWYgKGlzTmV3KSB7CisgICAgICAgICAgICAvLyBTZXQgU2VsZWN0ZWQgU2No ZW1hCisgICAgICAgICAgICBzY2hlbWFfaWQgPSBhcmdzLm5vZGVfaW5mby5z Y2hlbWEuX2lkOworICAgICAgICAgICAgdGhpcy5zZXQoeydzY2hlbWEnOiBz Y2hlbWFfaWR9LCB7c2lsZW50OiB0cnVlfSk7CisKKyAgICAgICAgICAgIC8v IFNldCBDdXJyZW50IFVzZXIKKyAgICAgICAgICAgIHZhciB1c2VySW5mbyA9 IHBnQnJvd3Nlci5zZXJ2ZXJJbmZvW2FyZ3Mubm9kZV9pbmZvLnNlcnZlci5f aWRdLnVzZXI7CisgICAgICAgICAgICB0aGlzLnNldCh7J293bmVyJzogdXNl ckluZm8ubmFtZX0sIHtzaWxlbnQ6IHRydWV9KTsKKyAgICAgICAgICB9Cisg ICAgICAgICAgcGdBZG1pbi5Ccm93c2VyLk5vZGUuTW9kZWwucHJvdG90eXBl LmluaXRpYWxpemUuYXBwbHkodGhpcywgYXJndW1lbnRzKTsKKyAgICAgICAg fSwKKyAgICAgICAgZGVmYXVsdHM6IHsKKyAgICAgICAgICBzcGNuYW1lOiAn cGdfZGVmYXVsdCcsCisgICAgICAgICAgdG9hc3RfYXV0b3ZhY3V1bV9lbmFi bGVkOiBmYWxzZSwKKyAgICAgICAgICBhdXRvdmFjdXVtX2VuYWJsZWQ6IGZh bHNlCisgICAgICAgIH0sCisgICAgICAgIHNjaGVtYTogW3sKKyAgICAgICAg ICBpZDogJ25hbWUnLCBsYWJlbDogJ3t7IF8oIk5hbWUiKSB9fScsIGNlbGw6 ICdzdHJpbmcnLAorICAgICAgICAgIHR5cGU6ICd0ZXh0JywgZGlzYWJsZWQ6 ICdpblNjaGVtYScKKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAg IGlkOiAnb2lkJywgbGFiZWw6J3t7IF8oIk9JRCIpIH19JywgY2VsbDogJ3N0 cmluZycsCisgICAgICAgICAgdHlwZTogJ3RleHQnLCBkaXNhYmxlZDogdHJ1 ZSwgbW9kZTogWydwcm9wZXJ0aWVzJ10KKyAgICAgICAgfSwKKyAgICAgICAg eworICAgICAgICAgIGlkOiAnb3duZXInLCBsYWJlbDone3sgXygiT3duZXIi KSB9fScsIGNlbGw6ICdzdHJpbmcnLAorICAgICAgICAgIGNvbnRyb2w6ICdu b2RlLWxpc3QtYnktbmFtZScsCisgICAgICAgICAgbm9kZTogJ3JvbGUnLCBk aXNhYmxlZDogJ2luU2NoZW1hJworICAgICAgICB9LAorICAgICAgICB7Cisg ICAgICAgICAgaWQ6ICdzY2hlbWEnLCBsYWJlbDone3sgXygiU2NoZW1hIikg fX0nLCBjZWxsOiAnc3RyaW5nJywgZmlyc3RfZW1wdHk6IGZhbHNlLAorICAg ICAgICAgIGNvbnRyb2w6ICdub2RlLWxpc3QtYnktaWQnLCB0eXBlOiAndGV4 dCcsIGNhY2hlX2xldmVsOiAnZGF0YWJhc2UnLAorICAgICAgICAgIG5vZGU6 ICdzY2hlbWEnLCBtb2RlOiBbJ2NyZWF0ZScsICdlZGl0J10sIGRpc2FibGVk OiAnaW5TY2hlbWEnCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAg ICBpZDogJ2NvbW1lbnQnLCBsYWJlbDone3sgXygiQ29tbWVudCIpIH19Jywg Y2VsbDogJ3N0cmluZycsCisgICAgICAgICAgdHlwZTogJ211bHRpbGluZScK KyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgIGlkOiAnc3lzdGVt X3ZpZXcnLCBsYWJlbDone3sgXygiU3lzdGVtIHZpZXc/IikgfX0nLCBjZWxs OiAnc3RyaW5nJywKKyAgICAgICAgICB0eXBlOiAnc3dpdGNoJywgZGlzYWJs ZWQ6IHRydWUsIG1vZGU6IFsncHJvcGVydGllcyddLAorICAgICAgICB9LAor ICAgICAgICB7CisgICAgICAgICAgaWQ6ICdkZWZpbml0aW9uJywgbGFiZWw6 J3t7IF8oIiIpIH19JywgY2VsbDogJ3N0cmluZycsCisgICAgICAgICAgdHlw ZTogJ3RleHQnLCBtb2RlOiBbJ2NyZWF0ZScsICdlZGl0J10sIGdyb3VwOiAn RGVmaW5pdGlvbicsCisgICAgICAgICAgY29udHJvbDogQmFja2Zvcm0uU3Fs RmllbGRDb250cm9sLCBleHRyYUNsYXNzZXM6WydzcWxfZmllbGRfaGVpZ2h0 XzI4MCddCisgICAgICAgIH0sCisgICAgICAgIC8vIEFkZCBQcml2aWxlZ2Ug Q29udHJvbAorICAgICAgICB7CisgICAgICAgICAgaWQ6ICdkYXRhY2wnLCBs YWJlbDogJ3t7IF8oIlByaXZpbGVnZXMiKSB9fScsCisgICAgICAgICAgbW9k ZWw6IHBnQWRtaW4uQnJvd3Nlci5Ob2RlLlByaXZpbGVnZVJvbGVNb2RlbC5l eHRlbmQoCisgICAgICAgICAgICB7cHJpdmlsZWdlczogWydhJywgJ3InLCAn dycsICdkJywgJ0QnLCAneCcsICd0J119KSwgdW5pcXVlQ29sIDogWydncmFu dGVlJ10sCisgICAgICAgICAgZWRpdGFibGU6IGZhbHNlLCB0eXBlOiAnY29s bGVjdGlvbicsIGdyb3VwOiAne3sgXygiU2VjdXJpdHkiKSB9fScsCisgICAg ICAgICAgbW9kZTogWydlZGl0JywgJ2NyZWF0ZSddLCBjYW5BZGQ6IHRydWUs IGNhbkRlbGV0ZTogdHJ1ZSwKKyAgICAgICAgICBjb250cm9sOiAndW5pcXVl LWNvbC1jb2xsZWN0aW9uJywgcHJpb3JpdHk6IDMKKyAgICAgICAgfSwKKwor ICAgICAgICAvLyBBZGQgU2VjdXJpdHkgTGFiZWxzIENvbnRyb2wKKyAgICAg ICAgeworICAgICAgICAgIGlkOiAnc2VjbGFiZWxzJywgbGFiZWw6ICd7eyBf KCJTZWN1cml0eSBMYWJlbHMiKSB9fScsCisgICAgICAgICAgbW9kZWw6IEJh Y2tmb3JtLlNlY3VyaXR5TW9kZWwsIGVkaXRhYmxlOiBmYWxzZSwgdHlwZTog J2NvbGxlY3Rpb24nLAorICAgICAgICAgIGNhbkVkaXQ6IGZhbHNlLCBncm91 cDogJ3t7IF8oIlNlY3VyaXR5IikgfX0nLCBjYW5EZWxldGU6IHRydWUsCisg ICAgICAgICAgbW9kZTogWydlZGl0JywgJ2NyZWF0ZSddLCBjYW5BZGQ6IHRy dWUsCisgICAgICAgICAgY29udHJvbDogJ3VuaXF1ZS1jb2wtY29sbGVjdGlv bicsIHVuaXF1ZUNvbCA6IFsncHJvdmlkZXInXQorICAgICAgICB9LAorICAg ICAgICB7CisgICAgICAgICAgaWQ6ICd3aXRoX2RhdGEnLCBsYWJlbDogJ3t7 IF8oIldpdGggRGF0YSIpIH19JywKKyAgICAgICAgICBncm91cDogJ3t7IF8o IlN0b3JhZ2UiKSB9fScsIG1vZGU6IFsnZWRpdCcsICdjcmVhdGUnXSwKKyAg ICAgICAgICB0eXBlOiAnc3dpdGNoJywKKyAgICAgICAgfSwKKyAgICAgICAg eworICAgICAgICAgIGlkOiAnc3BjbmFtZScsIGxhYmVsOiAne3sgXygiVGFi bGVzcGFjZSIpIH19JywgY2VsbDogJ3N0cmluZycsCisgICAgICAgICAgdHlw ZTogJ3RleHQnLCBncm91cDogJ3t7IF8oIlN0b3JhZ2UiKSB9fScsIGZpcnN0 X2VtcHR5OiBmYWxzZSwKKyAgICAgICAgICBjb250cm9sOiAnbm9kZS1saXN0 LWJ5LW5hbWUnLCBub2RlOiAndGFibGVzcGFjZScsCisgICAgICAgICAgZmls dGVyOiBmdW5jdGlvbihtKSB7CisgICAgICAgICAgICBpZiAobS5sYWJlbCA9 PSAicGdfZ2xvYmFsIikgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgZWxz ZSByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAg ICAgIHsKKyAgICAgICAgICBpZDogJ2ZpbGxmYWN0b3InLCBsYWJlbDogJ3t7 IF8oIkZpbGwgRmFjdG9yIikgfX0nLAorICAgICAgICAgIGdyb3VwOiAne3sg XygiU3RvcmFnZSIpIH19JywgbW9kZTogWydlZGl0JywgJ2NyZWF0ZSddLAor ICAgICAgICAgIHR5cGU6ICdpbnRlZ2VyJywgbWluOiAxMCwgbWF4OiAxMDAK KyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgIHR5cGU6ICduZXN0 ZWQnLCBjb250cm9sOiAndGFiJywgaWQ6ICdtYXRlcmlhbGl6YXRpb24nLAor ICAgICAgICAgIGxhYmVsOiAne3sgXygiTWF0ZXJpYWxpemF0aW9uIikgfX0n LCBtb2RlOiBbJ2VkaXQnLCAnY3JlYXRlJ10sCisgICAgICAgICAgZ3JvdXA6 ICd7eyBfKCJTdG9yYWdlIikgfX0nLAorICAgICAgICAgIHNjaGVtYTogQmFj a2Zvcm0uVmFjdXVtU2V0dGluZ3NTY2hlbWEKKyAgICAgICAgfSwKKyAgICAg ICAgeworICAgICAgICAgIGlkOiAnYWNsJywgbGFiZWw6ICd7eyBfKCJBQ0wi KSB9fScsCisgICAgICAgICAgbW9kZTogWydwcm9wZXJ0aWVzJ10sIHR5cGU6 ICd0ZXh0JworICAgICAgICB9LAorICAgICAgICBdLAorICAgICAgICB2YWxp ZGF0ZTogZnVuY3Rpb24oKSB7CisKKyAgICAgICAgICAvLyBUcmlnZ2VycyBz cGVjaWZpYyBlcnJvciBtZXNzYWdlcyBmb3IgZmllbGRzCisgICAgICAgICAg dmFyIGVyciA9IHt9LAorICAgICAgICAgICAgZXJybXNnLAorICAgICAgICAg ICAgZmllbGRfbmFtZSA9IHRoaXMuZ2V0KCduYW1lJyksCisgICAgICAgICAg ICBmaWVsZF9kZWYgPSB0aGlzLmdldCgnZGVmaW5pdGlvbicpOworICAgICAg ICAgIGlmIChfLmlzVW5kZWZpbmVkKGZpZWxkX25hbWUpIHx8IF8uaXNOdWxs KGZpZWxkX25hbWUpIHx8CisgICAgICAgICAgICBTdHJpbmcoZmllbGRfbmFt ZSkucmVwbGFjZSgvXlxzK3xccyskL2csICcnKSA9PSAnJykgeworICAgICAg ICAgICAgZXJyWyduYW1lJ10gPSAne3sgXygiUGxlYXNlIHNwZWNpZnkgbmFt ZS4iKSB9fSc7CisgICAgICAgICAgICBlcnJtc2cgPSBlcnJtc2cgfHwgZXJy WyduYW1lJ107CisgICAgICAgICAgICB0aGlzLmVycm9yTW9kZWwuc2V0KCdu YW1lJywgZXJybXNnKTsKKyAgICAgICAgICAgIHJldHVybiBlcnJtc2c7Cisg ICAgICAgICAgfWVsc2V7CisgICAgICAgICAgICB0aGlzLmVycm9yTW9kZWwu dW5zZXQoJ25hbWUnKTsKKyAgICAgICAgICB9CisgICAgICAgICAgaWYodGhp cy5pc05ldygpKXsKKyAgICAgICAgICAgIGlmIChfLmlzVW5kZWZpbmVkKGZp ZWxkX2RlZikgfHwgXy5pc051bGwoZmllbGRfZGVmKSB8fAorICAgICAgICAg ICAgICBTdHJpbmcoZmllbGRfZGVmKS5yZXBsYWNlKC9eXHMrfFxzKyQvZywg JycpID09ICcnKSB7CisgICAgICAgICAgICAgIGVyclsnZGVmaW5pdGlvbidd ID0gJ3t7IF8oIlBsZWFzZSBlbnRlciBmdW5jdGlvbiBkZWZpbml0aW9uLiIp IH19JzsKKyAgICAgICAgICAgICAgZXJybXNnID0gZXJybXNnIHx8IGVyclsn ZGVmaW5pdGlvbiddOworICAgICAgICAgICAgICB0aGlzLmVycm9yTW9kZWwu c2V0KCdkZWZpbml0aW9uJywgZXJybXNnKTsKKyAgICAgICAgICAgICAgcmV0 dXJuIGVycm1zZzsKKyAgICAgICAgICAgIH1lbHNleworICAgICAgICAgICAg ICB0aGlzLmVycm9yTW9kZWwudW5zZXQoJ2RlZmluaXRpb24nKTsKKyAgICAg ICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgICAgcmV0dXJuIG51bGw7 CisgICAgICAgIH0sCisgICAgICAgIC8vIFdlIHdpbGwgZGlzYWJsZSBldmVy eXRoaW5nIGlmIHdlIGFyZSB1bmRlciBjYXRhbG9nIG5vZGUKKyAgICAgICAg aW5TY2hlbWE6IGZ1bmN0aW9uKCkgeworICAgICAgICAgIGlmKHRoaXMubm9k ZV9pbmZvICYmICdjYXRhbG9nJyBpbiB0aGlzLm5vZGVfaW5mbykKKyAgICAg ICAgICB7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICB9 CisgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisKKyAgICAg IH0pLAorCisgICAgICAvKioKKyAgICAgICAgU2hvdyBvciBoaWRlIGNyZWF0 ZSB2aWV3IG1lbnUgb3B0aW9uIG9uIHBhcmVudCBub2RlCisgICAgICAgIGFu ZCBoaWRlIGZvciBzeXN0ZW0gdmlldyBpbiBjYXRhbG9ncy4KKyAgICAgICAq LworICAgICAgY2FuQ3JlYXRlOiBmdW5jdGlvbihpdGVtRGF0YSwgaXRlbSwg ZGF0YSkgeworCisgICAgICAgIC8vIElmIGNoZWNrIGlzIGZhbHNlIHRoZW4s IHdlIHdpbGwgYWxsb3cgY3JlYXRlIG1lbnUKKyAgICAgICAgaWYgKGRhdGEg JiYgZGF0YS5jaGVjayA9PT0gZmFsc2UpCisgICAgICAgICAgcmV0dXJuIHRy dWU7CisKKyAgICAgICAgdmFyIHQgPSBwZ0Jyb3dzZXIudHJlZSwgaSA9IGl0 ZW0sIGQgPSBpdGVtRGF0YTsKKworICAgICAgICAvLyBUbyBpdGVyYXRlIG92 ZXIgdHJlZSB0byBjaGVjayBwYXJlbnQgbm9kZQorICAgICAgICB3aGlsZSAo aSkgeworCisgICAgICAgICAgLy8gSWYgaXQgaXMgc2NoZW1hIHRoZW4gYWxs b3cgdXNlciB0byBjcmVhdGUgdmlldworICAgICAgICAgIGlmIChfLmluZGV4 T2YoWydzY2hlbWEnXSwgZC5fdHlwZSkgPiAtMSkKKyAgICAgICAgICAgIHJl dHVybiB0cnVlOworCisgICAgICAgICAgaWYgKCdjb2xsLW12aWV3JyA9PSBk Ll90eXBlKSB7CisKKyAgICAgICAgICAgIC8vIENoZWNrIGlmIHdlIGFyZSBu b3QgY2hpbGQgb2YgdmlldworICAgICAgICAgICAgcHJldl9pID0gdC5oYXNQ YXJlbnQoaSkgPyB0LnBhcmVudChpKSA6IG51bGw7CisgICAgICAgICAgICBw cmV2X2QgPSBwcmV2X2kgPyB0Lml0ZW1EYXRhKHByZXZfaSkgOiBudWxsOwor ICAgICAgICAgICAgaWYoIHByZXZfZC5fdHlwZSA9PSAnY2F0YWxvZycpIHsK KyAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfSBl bHNlIHsKKyAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAg ICB9CisgICAgICAgICAgfQorICAgICAgICAgIGkgPSB0Lmhhc1BhcmVudChp KSA/IHQucGFyZW50KGkpIDogbnVsbDsKKyAgICAgICAgICBkID0gaSA/IHQu aXRlbURhdGEoaSkgOiBudWxsOworICAgICAgICB9CisKKyAgICAgICAgLy8g YnkgZGVmYXVsdCB3ZSBkbyBub3Qgd2FudCB0byBhbGxvdyBjcmVhdGUgbWVu dQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgICAgfQorICB9KTsKKyAg fQorCisgIHJldHVybiBwZ0Jyb3dzZXIuTm9kZXNbJ2NvbGwtbXZpZXcnXTsK K30pOwpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJf Z3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdmlld3MvdGVtcGxh dGVzL212aWV3L3BnLzkuM19wbHVzL3NxbC9hY2wuc3FsIGIvd2ViL3BnYWRt aW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3Nj aGVtYXMvdmlld3MvdGVtcGxhdGVzL212aWV3L3BnLzkuM19wbHVzL3NxbC9h Y2wuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBj MWJkNmMKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2Vy L3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy92aWV3 cy90ZW1wbGF0ZXMvbXZpZXcvcGcvOS4zX3BsdXMvc3FsL2FjbC5zcWwKQEAg LTAsMCArMSw0MSBAQAoreyM9PT09PT09PT09PT09PT09PT09PT09PT09PT09 R2V0IEFDTHM9PT09PT09PT09PT09PT09PT09PT09PT09I30KK3slIGlmIHZp ZCAlfQorU0VMRUNUCisgICAgJ2RhdGFjbCcgYXMgZGVmdHlwZSwKKyAgICBD T0FMRVNDRShndC5yb2xuYW1lLCAncHVibGljJykgZ3JhbnRlZSwKKyAgICBn LnJvbG5hbWUgZ3JhbnRvciwKKyAgICBhcnJheV9hZ2cocHJpdmlsZWdlX3R5 cGUpIGFzIHByaXZpbGVnZXMsCisgICAgYXJyYXlfYWdnKGlzX2dyYW50YWJs ZSkgYXMgZ3JhbnRhYmxlCitGUk9NCisgICAgKFNFTEVDVAorICAgICAgICBk LmdyYW50ZWUsCisgICAgICAgIGQuZ3JhbnRvciwKKyAgICAgICAgZC5pc19n cmFudGFibGUsCisgICAgICAgIENBU0UgZC5wcml2aWxlZ2VfdHlwZQorICAg ICAgICAgIFdIRU4gJ0RFTEVURScgVEhFTiAnZCcKKyAgICAgICAgICBXSEVO ICdJTlNFUlQnIFRIRU4gJ2EnCisgICAgICAgICAgV0hFTiAnUkVGRVJFTkNF UycgVEhFTiAneCcKKyAgICAgICAgICBXSEVOICdTRUxFQ1QnIFRIRU4gJ3In CisgICAgICAgICAgV0hFTiAnVFJJR0dFUicgVEhFTiAndCcKKyAgICAgICAg ICBXSEVOICdVUERBVEUnIFRIRU4gJ3cnCisgICAgICAgICAgV0hFTiAnVFJV TkNBVEUnIFRIRU4gJ0QnCisgICAgICAgICAgRUxTRSAnVU5LTk9XTicKKyAg ICAgICAgRU5EIEFTIHByaXZpbGVnZV90eXBlCisgICAgRlJPTQorICAgICAg ICAoU0VMRUNUCisgICAgICAgICAgICByZWxhY2wKKyAgICAgICAgIEZST00K KyAgICAgICAgICAgIHBnX2NsYXNzIGNsCisgICAgICAgICBMRUZUIE9VVEVS IEpPSU4gcGdfc2hkZXNjcmlwdGlvbiBkZXNjciBPTgorICAgICAgICAgICAg KGNsLm9pZD1kZXNjci5vYmpvaWQgQU5EIGRlc2NyLmNsYXNzb2lkPSdwZ19j bGFzcyc6OnJlZ2NsYXNzKQorICAgICAgICAgV0hFUkUKKyAgICAgICAgICAg IGNsLm9pZCA9IHt7IHZpZCB9fTo6T0lEIEFORCByZWxraW5kID0gJ20nCisg ICAgICAgICkgYWNsLAorICAgICAgICBhY2xleHBsb2RlKHJlbGFjbCkgZAor ICAgICkgZAorTEVGVCBKT0lOIHBnX2NhdGFsb2cucGdfcm9sZXMgZyBPTiAo ZC5ncmFudG9yID0gZy5vaWQpCitMRUZUIEpPSU4gcGdfY2F0YWxvZy5wZ19y b2xlcyBndCBPTiAoZC5ncmFudGVlID0gZ3Qub2lkKQorR1JPVVAgQlkKKyAg ICBnLnJvbG5hbWUsCisgICAgZ3Qucm9sbmFtZQoreyUgZW5kaWYgJX0KZGlm ZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9z ZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3ZpZXdzL3RlbXBsYXRlcy9tdmll dy9wZy85LjNfcGx1cy9zcWwvY3JlYXRlLnNxbCBiL3dlYi9wZ2FkbWluL2Jy b3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFz L3ZpZXdzL3RlbXBsYXRlcy9tdmlldy9wZy85LjNfcGx1cy9zcWwvY3JlYXRl LnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yOWM5 ZDFhCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9z ZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdmlld3Mv dGVtcGxhdGVzL212aWV3L3BnLzkuM19wbHVzL3NxbC9jcmVhdGUuc3FsCkBA IC0wLDAgKzEsNDIgQEAKK3sjID09PT09PT09PT09PT09PT09PT09PSBDcmVh dGUgbmV3IHZpZXcgPT09PT09PT09PT09PT09PT09PT09ICN9Cit7JSBpZiBk aXNwbGF5X2NvbW1lbnRzICV9CistLSBWaWV3OiB7eyBjb25ufHF0SWRlbnQo ZGF0YS5zY2hlbWEsIGRhdGEubmFtZSkgfX0KKworLS0gRFJPUCBNQVRFUklB TElaRUQgVklFVyB7eyBjb25ufHF0SWRlbnQoZGF0YS5zY2hlbWEsIGRhdGEu bmFtZSkgfX07CisKK3slIGVuZGlmICV9Cit7JSBpZiBkYXRhLm5hbWUgYW5k IGRhdGEuc2NoZW1hIGFuZCBkYXRhLmRlZmluaXRpb24gJX0KK0NSRUFURSBN QVRFUklBTElaRUQgVklFVyB7eyBjb25ufHF0SWRlbnQoZGF0YS5zY2hlbWEs IGRhdGEubmFtZSkgfX0KK3slIGlmKGRhdGEuZmlsbGZhY3RvciBvciBkYXRh WydhdXRvdmFjdXVtX2VuYWJsZWQnXSBvciBkYXRhWyd0b2FzdF9hdXRvdmFj dXVtX2VuYWJsZWQnXSkgJX0KK1dJVEggKAoreyUgaWYgZGF0YS5maWxsZmFj dG9yICV9CisgICAgRklMTEZBQ1RPUiA9IHt7IGRhdGEuZmlsbGZhY3RvciB9 fXslIGlmIGRhdGFbJ2F1dG92YWN1dW1fZW5hYmxlZCddIG9yIGRhdGFbJ3Rv YXN0X2F1dG92YWN1dW1fZW5hYmxlZCddIG9yIGRhdGFbJ3ZhY3V1bV9kYXRh J118bGVuZ3RoID4gMCAlfSx7eyAnXHInIH19eyUgZW5kaWYgJX0KK3slIGVu ZGlmICV9Cit7JSBpZiBkYXRhWydhdXRvdmFjdXVtX2VuYWJsZWQnXSAlfQor ICAgIGF1dG92YWN1dW1fZW5hYmxlZCA9IHt7IGRhdGFbJ2F1dG92YWN1dW1f ZW5hYmxlZCddfGxvd2VyIH19eyUgaWYgZGF0YVsndG9hc3RfYXV0b3ZhY3V1 bV9lbmFibGVkJ10gb3IgZGF0YVsndmFjdXVtX2RhdGEnXXxsZW5ndGggPiAw ICV9LHt7ICdccicgfX17JSBlbmRpZiAlfQoreyUgZW5kaWYgJX0KK3slIGlm IGRhdGFbJ3RvYXN0X2F1dG92YWN1dW1fZW5hYmxlZCddICV9CisgICAge3sg J3RvYXN0LmF1dG92YWN1dW1fZW5hYmxlZCcgfX0gPSB7eyBkYXRhWyd0b2Fz dF9hdXRvdmFjdXVtX2VuYWJsZWQnXXxsb3dlciB9fXslIGlmIGRhdGFbJ3Zh Y3V1bV9kYXRhJ118bGVuZ3RoID4gMCAlfSx7eyAnXHInIH19eyUgZW5kaWYg JX0KK3slIGVuZGlmICV9Cit7JSBmb3IgZmllbGQgaW4gZGF0YVsndmFjdXVt X2RhdGEnXSAlfQoreyUgaWYgZmllbGQudmFsdWUgaXMgZGVmaW5lZCBhbmQg ZmllbGQudmFsdWUgIT0gJycgYW5kIGZpZWxkLnZhbHVlICE9IG5vbmUgJX0K K3slIGlmIGxvb3AuaW5kZXggPiAxJX0sCit7JSBlbmRpZiAlfSAgICB7eyBm aWVsZC5uYW1lIH19ID0ge3sgZmllbGQudmFsdWV8bG93ZXIgfX17JSBlbmRp ZiAlfQoreyUgZW5kZm9yICV9CisKKykKK3slIGVuZGlmICV9Cit7JSBpZiBk YXRhLnNwY25hbWUgJX1UQUJMRVNQQUNFIHt7IGRhdGEuc3BjbmFtZSB9fQor eyUgZW5kaWYgJX1BUwore3sgZGF0YS5kZWZpbml0aW9uLnJzdHJpcCgnOycp IH19Cit7JSBpZiBkYXRhLndpdGhfZGF0YSAlfQorV0lUSCBEQVRBOworeyUg ZWxzZSAlfQorV0lUSCBOTyBEQVRBOworeyUgZW5kaWYgJX0KK3slIGlmIGRh dGEuY29tbWVudCAlfQorCitDT01NRU5UIE9OIFZJRVcge3sgY29ubnxxdElk ZW50KGRhdGEuc2NoZW1hLCBkYXRhLm5hbWUpIH19CisgICAgSVMge3sgZGF0 YS5jb21tZW50fHF0TGl0ZXJhbCB9fTsKK3slIGVuZGlmICV9Cit7JSBlbmRp ZiAlfQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJf Z3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdmlld3MvdGVtcGxh dGVzL212aWV3L3BnLzkuM19wbHVzL3NxbC9kZWxldGUuc3FsIGIvd2ViL3Bn YWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2Vz L3NjaGVtYXMvdmlld3MvdGVtcGxhdGVzL212aWV3L3BnLzkuM19wbHVzL3Nx bC9kZWxldGUuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAuLmNmNjY3ZmMKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9i cm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1h cy92aWV3cy90ZW1wbGF0ZXMvbXZpZXcvcGcvOS4zX3BsdXMvc3FsL2RlbGV0 ZS5zcWwKQEAgLTAsMCArMSwxMyBAQAoreyMgPT09PT09PT09PT09PT09PT09 PSBEcm9wL0Nhc2NhZGUgbWF0ZXJpYWxpemVkIHZpZXcgYnkgbmFtZSA9PT09 PT09PT09PT09PT09PT09PSN9Cit7JSBpZiB2aWQgJX0KK1NFTEVDVAorICAg IGMucmVsbmFtZSBBcyBuYW1lLAorICAgIG5zcC5uc3BuYW1lCitGUk9NCisg ICAgcGdfY2xhc3MgYworTEVGVCBKT0lOIHBnX25hbWVzcGFjZSBuc3AgT04g Yy5yZWxuYW1lc3BhY2UgPSBuc3Aub2lkCitXSEVSRQorICAgIGMucmVsZmls ZW5vZGUgPSB7eyB2aWQgfX07Cit7JSBlbGlmIChuYW1lIGFuZCBuc3BuYW1l KSAlfQorRFJPUCBNQVRFUklBTElaRUQgVklFVyB7eyBjb25ufHF0SWRlbnQo bnNwbmFtZSwgbmFtZSkgfX0geyUgaWYgY2FzY2FkZSAlfSBDQVNDQURFIHsl IGVuZGlmICV9Cit7JSBlbmRpZiAlfQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRt aW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3Nj aGVtYXMvdmlld3MvdGVtcGxhdGVzL212aWV3L3BnLzkuM19wbHVzL3NxbC9n ZXRfc2NoZW1hLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dy b3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3ZpZXdzL3RlbXBsYXRl cy9tdmlldy9wZy85LjNfcGx1cy9zcWwvZ2V0X3NjaGVtYS5zcWwKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTI3ZDRiOQotLS0gL2Rl di9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3ZpZXdzL3RlbXBsYXRlcy9t dmlldy9wZy85LjNfcGx1cy9zcWwvZ2V0X3NjaGVtYS5zcWwKQEAgLTAsMCAr MSw2IEBACitTRUxFQ1QKKyAgICBuc3BuYW1lCitGUk9NCisgICAgcGdfbmFt ZXNwYWNlCitXSEVSRQorICAgIG9pZCA9IHt7IHNjaWQgfX06Om9pZDsKZGlm ZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9z ZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3ZpZXdzL3RlbXBsYXRlcy9tdmll dy9wZy85LjNfcGx1cy9zcWwvZ3JhbnQuc3FsIGIvd2ViL3BnYWRtaW4vYnJv d3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMv dmlld3MvdGVtcGxhdGVzL212aWV3L3BnLzkuM19wbHVzL3NxbC9ncmFudC5z cWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2ZmOWQz MQotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2Vy dmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3ZpZXdzL3Rl bXBsYXRlcy9tdmlldy9wZy85LjNfcGx1cy9zcWwvZ3JhbnQuc3FsCkBAIC0w LDAgKzEsNiBAQAoreyMgPT09PT0gR3JhbnQgUGVybWlzc2lvbnMgdG8gVXNl ciBSb2xlIG9uIFZpZXdzL1RhYmxlcyA9PT09ICN9Cit7JSBpbXBvcnQgJ21h Y3Jvcy9zZWN1cml0eS5tYWNyb3MnIGFzIFNFQ0xBQkxFICV9Cit7JSBpbXBv cnQgJ21hY3Jvcy9zY2hlbWFzL3ByaXZpbGVnZS5tYWNyb3MnIGFzIFBSSVZJ TEVHRSAlfQoreyMgV2Ugd2lsbCBnZW5lcmF0ZSBTZWN1cml0eSBMYWJlbCBT UUwgdXNpbmcgbWFjcm8gI30KK3slIGlmIGRhdGEuc2VjbGFiZWxzICV9eyUg Zm9yIHIgaW4gZGF0YS5zZWNsYWJlbHMgJX17eyBTRUNMQUJMRS5BUFBMWShj b25uLCAnVklFVycsIGRhdGEubmFtZSwgci5wcm92aWRlciwgci5zZWN1cml0 eV9sYWJlbCkgfX17JSBlbmRmb3IgJX17JSBlbmRpZiAlfQoreyUgaWYgZGF0 YS5kYXRhY2wgJX17JSBmb3IgcHJpdiBpbiBkYXRhLmRhdGFjbCAlfXt7IFBS SVZJTEVHRS5TRVQoY29ubiwgJ1RBQkxFJywgcHJpdi5ncmFudGVlLCBkYXRh Lm5hbWUsIHByaXYud2l0aG91dF9ncmFudCwgcHJpdi53aXRoX2dyYW50LCBk YXRhLnNjaGVtYSkgfX17JSBlbmRmb3IgJX17JSBlbmRpZiAlfQpkaWZmIC0t Z2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZl cnMvZGF0YWJhc2VzL3NjaGVtYXMvdmlld3MvdGVtcGxhdGVzL212aWV3L3Bn LzkuM19wbHVzL3NxbC9wcm9wZXJ0aWVzLnNxbCBiL3dlYi9wZ2FkbWluL2Jy b3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFz L3ZpZXdzL3RlbXBsYXRlcy9tdmlldy9wZy85LjNfcGx1cy9zcWwvcHJvcGVy dGllcy5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u ZjAyYmM1NAotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dz ZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3Zp ZXdzL3RlbXBsYXRlcy9tdmlldy9wZy85LjNfcGx1cy9zcWwvcHJvcGVydGll cy5zcWwKQEAgLTAsMCArMSwxMTEgQEAKK3sjID09PT09PT09PT09PT09PT09 PT09PT09PT09IEZldGNoIE1hdGVyaWFsaXplZCBWaWV3IFByb3BlcnRpZXMg PT09PT09PT09PT09PT09PT09PT09PT09PSAjfQoreyUgaWYgKHZpZCBhbmQg ZGF0bGFzdHN5c29pZCkgb3Igc2NpZCAlfQorU0VMRUNUCisgICAgYy5vaWQs CisgICAgYy54bWluLAorICAgIGMucmVsbmFtZSBBUyBuYW1lLAorICAgIGMu cmVsdGFibGVzcGFjZSBBUyBzcGNvaWQsCisgICAgYy5yZWxpc3BvcHVsYXRl ZCBBUyB3aXRoX2RhdGEsCisgICAgKENBU0UgV0hFTiBsZW5ndGgoc3BjLnNw Y25hbWUpID4gMCBUSEVOIHNwYy5zcGNuYW1lIEVMU0UgJ3BnX2RlZmF1bHQn IEVORCkgYXMgc3BjbmFtZSwKKyAgICBjLnJlbGFjbCwKKyAgICBuc3AubnNw bmFtZSBhcyBzY2hlbWEsCisgICAgcGdfZ2V0X3VzZXJieWlkKGMucmVsb3du ZXIpIEFTIG93bmVyLAorICAgIGRlc2NyaXB0aW9uIEFTIGNvbW1lbnQsCisg ICAgcGdfZ2V0X3ZpZXdkZWYoYy5vaWQsIHRydWUpIEFTIGRlZmluaXRpb24s CisgICAgeyM9PT09PT09PT09PT09Q2hlY2tzIGlmIGl0IGlzIHN5c3RlbSB2 aWV3PT09PT09PT09PT09PT09PSN9CisgICAgeyUgaWYgdmlkIGFuZCBkYXRs YXN0c3lzb2lkICV9CisgICAgQ0FTRSBXSEVOIHt7dmlkfX0gPD0ge3tkYXRs YXN0c3lzb2lkfX0gVEhFTiBUcnVlIEVMU0UgRmFsc2UgRU5EIEFTIHN5c3Rl bV92aWV3LAorICAgIHslIGVuZGlmICV9CisgICAgYXJyYXlfdG9fc3RyaW5n KGMucmVsYWNsOjp0ZXh0W10sICcsICcpIEFTIGFjbCwKKyAgICAoU0VMRUNU IGFycmF5X2FnZyhwcm92aWRlciB8fCAnPScgfHwgbGFiZWwpIEZST00gcGdf c2VjbGFiZWxzIHNsMSBXSEVSRSBzbDEub2Jqb2lkPWMub2lkIEFORCBzbDEu b2Jqc3ViaWQ9MCkgQVMgc2VjbGFiZWxzLAorICAgIHN1YnN0cmluZyhhcnJh eV90b19zdHJpbmcoYy5yZWxvcHRpb25zLCAnLCcpCisgICAgICBGUk9NICdm aWxsZmFjdG9yPShbMC05XSopJykgQVMgZmlsbGZhY3RvciwKKyAgICBzdWJz dHJpbmcoYXJyYXlfdG9fc3RyaW5nKGMucmVsb3B0aW9ucywgJywnKQorICAg ICAgRlJPTSAnYXV0b3ZhY3V1bV9lbmFibGVkPShbYS16fDAtOV0qKScpIEFT IGF1dG92YWN1dW1fZW5hYmxlZCwKKyAgICBzdWJzdHJpbmcoYXJyYXlfdG9f c3RyaW5nKGMucmVsb3B0aW9ucywgJywnKQorICAgICAgRlJPTSAnYXV0b3Zh Y3V1bV92YWN1dW1fdGhyZXNob2xkPShbMC05XSopJykgQVMgYXV0b3ZhY3V1 bV92YWN1dW1fdGhyZXNob2xkLAorICAgIHN1YnN0cmluZyhhcnJheV90b19z dHJpbmcoYy5yZWxvcHRpb25zLCAnLCcpCisgICAgICBGUk9NICdhdXRvdmFj dXVtX3ZhY3V1bV9zY2FsZV9mYWN0b3I9KFswLTldKlsuXVswLTldKiknKSBB UyBhdXRvdmFjdXVtX3ZhY3V1bV9zY2FsZV9mYWN0b3IsCisgICAgc3Vic3Ry aW5nKGFycmF5X3RvX3N0cmluZyhjLnJlbG9wdGlvbnMsICcsJykKKyAgICAg IEZST00gJ2F1dG92YWN1dW1fYW5hbHl6ZV90aHJlc2hvbGQ9KFswLTldKikn KSBBUyBhdXRvdmFjdXVtX2FuYWx5emVfdGhyZXNob2xkLAorICAgIHN1YnN0 cmluZyhhcnJheV90b19zdHJpbmcoYy5yZWxvcHRpb25zLCAnLCcpCisgICAg ICBGUk9NICdhdXRvdmFjdXVtX2FuYWx5emVfc2NhbGVfZmFjdG9yPShbMC05 XSpbLl1bMC05XSopJykgQVMgYXV0b3ZhY3V1bV9hbmFseXplX3NjYWxlX2Zh Y3RvciwKKyAgICBzdWJzdHJpbmcoYXJyYXlfdG9fc3RyaW5nKGMucmVsb3B0 aW9ucywgJywnKQorICAgICAgRlJPTSAnYXV0b3ZhY3V1bV92YWN1dW1fY29z dF9kZWxheT0oWzAtOV0qKScpIEFTIGF1dG92YWN1dW1fdmFjdXVtX2Nvc3Rf ZGVsYXksCisgICAgc3Vic3RyaW5nKGFycmF5X3RvX3N0cmluZyhjLnJlbG9w dGlvbnMsICcsJykKKyAgICAgIEZST00gJ2F1dG92YWN1dW1fdmFjdXVtX2Nv c3RfbGltaXQ9KFswLTldKiknKSBBUyBhdXRvdmFjdXVtX3ZhY3V1bV9jb3N0 X2xpbWl0LAorICAgIHN1YnN0cmluZyhhcnJheV90b19zdHJpbmcoYy5yZWxv cHRpb25zLCAnLCcpCisgICAgICBGUk9NICdhdXRvdmFjdXVtX2ZyZWV6ZV9t aW5fYWdlPShbMC05XSopJykgQVMgYXV0b3ZhY3V1bV9mcmVlemVfbWluX2Fn ZSwKKyAgICBzdWJzdHJpbmcoYXJyYXlfdG9fc3RyaW5nKGMucmVsb3B0aW9u cywgJywnKQorICAgICAgRlJPTSAnYXV0b3ZhY3V1bV9mcmVlemVfbWF4X2Fn ZT0oWzAtOV0qKScpIEFTIGF1dG92YWN1dW1fZnJlZXplX21heF9hZ2UsCisg ICAgc3Vic3RyaW5nKGFycmF5X3RvX3N0cmluZyhjLnJlbG9wdGlvbnMsICcs JykKKyAgICAgIEZST00gJ2F1dG92YWN1dW1fZnJlZXplX3RhYmxlX2FnZT0o WzAtOV0qKScpIEFTIGF1dG92YWN1dW1fZnJlZXplX3RhYmxlX2FnZSwKKyAg ICBzdWJzdHJpbmcoYXJyYXlfdG9fc3RyaW5nKHRzdC5yZWxvcHRpb25zLCAn LCcpCisgICAgICBGUk9NICdhdXRvdmFjdXVtX2VuYWJsZWQ9KFthLXp8MC05 XSopJykgQVMgdG9hc3RfYXV0b3ZhY3V1bV9lbmFibGVkLAorICAgIHN1YnN0 cmluZyhhcnJheV90b19zdHJpbmcodHN0LnJlbG9wdGlvbnMsICcsJykKKyAg ICAgIEZST00gJ2F1dG92YWN1dW1fdmFjdXVtX3RocmVzaG9sZD0oWzAtOV0q KScpIEFTIHRvYXN0X2F1dG92YWN1dW1fdmFjdXVtX3RocmVzaG9sZCwKKyAg ICBzdWJzdHJpbmcoYXJyYXlfdG9fc3RyaW5nKHRzdC5yZWxvcHRpb25zLCAn LCcpCisgICAgICBGUk9NICdhdXRvdmFjdXVtX3ZhY3V1bV9zY2FsZV9mYWN0 b3I9KFswLTldKlsuXVswLTldKiknKSBBUyB0b2FzdF9hdXRvdmFjdXVtX3Zh Y3V1bV9zY2FsZV9mYWN0b3IsCisgICAgc3Vic3RyaW5nKGFycmF5X3RvX3N0 cmluZyh0c3QucmVsb3B0aW9ucywgJywnKQorICAgICAgRlJPTSAnYXV0b3Zh Y3V1bV9hbmFseXplX3RocmVzaG9sZD0oWzAtOV0qKScpIEFTIHRvYXN0X2F1 dG92YWN1dW1fYW5hbHl6ZV90aHJlc2hvbGQsCisgICAgc3Vic3RyaW5nKGFy cmF5X3RvX3N0cmluZyh0c3QucmVsb3B0aW9ucywgJywnKQorICAgICAgRlJP TSAnYXV0b3ZhY3V1bV9hbmFseXplX3NjYWxlX2ZhY3Rvcj0oWzAtOV0qWy5d WzAtOV0qKScpIEFTIHRvYXN0X2F1dG92YWN1dW1fYW5hbHl6ZV9zY2FsZV9m YWN0b3IsCisgICAgc3Vic3RyaW5nKGFycmF5X3RvX3N0cmluZyh0c3QucmVs b3B0aW9ucywgJywnKQorICAgICAgRlJPTSAnYXV0b3ZhY3V1bV92YWN1dW1f Y29zdF9kZWxheT0oWzAtOV0qKScpIEFTIHRvYXN0X2F1dG92YWN1dW1fdmFj dXVtX2Nvc3RfZGVsYXksCisgICAgc3Vic3RyaW5nKGFycmF5X3RvX3N0cmlu Zyh0c3QucmVsb3B0aW9ucywgJywnKQorICAgICAgRlJPTSAnYXV0b3ZhY3V1 bV92YWN1dW1fY29zdF9saW1pdD0oWzAtOV0qKScpIEFTIHRvYXN0X2F1dG92 YWN1dW1fdmFjdXVtX2Nvc3RfbGltaXQsCisgICAgc3Vic3RyaW5nKGFycmF5 X3RvX3N0cmluZyh0c3QucmVsb3B0aW9ucywgJywnKQorICAgICAgRlJPTSAn YXV0b3ZhY3V1bV9mcmVlemVfbWluX2FnZT0oWzAtOV0qKScpIEFTIHRvYXN0 X2F1dG92YWN1dW1fZnJlZXplX21pbl9hZ2UsCisgICAgc3Vic3RyaW5nKGFy cmF5X3RvX3N0cmluZyh0c3QucmVsb3B0aW9ucywgJywnKQorICAgICAgRlJP TSAnYXV0b3ZhY3V1bV9mcmVlemVfbWF4X2FnZT0oWzAtOV0qKScpIEFTIHRv YXN0X2F1dG92YWN1dW1fZnJlZXplX21heF9hZ2UsCisgICAgc3Vic3RyaW5n KGFycmF5X3RvX3N0cmluZyh0c3QucmVsb3B0aW9ucywgJywnKQorICAgICAg RlJPTSAnYXV0b3ZhY3V1bV9mcmVlemVfdGFibGVfYWdlPShbMC05XSopJykg QVMgdG9hc3RfYXV0b3ZhY3V1bV9mcmVlemVfdGFibGVfYWdlLAorICAgIGMu cmVsb3B0aW9ucyBBUyByZWxvcHRpb25zLCB0c3QucmVsb3B0aW9ucyBBUyB0 b2FzdF9yZWxvcHRpb25zLAorICAgIChDQVNFIFdIRU4gYy5yZWx0b2FzdHJl bGlkID0gMCBUSEVOIGZhbHNlIEVMU0UgdHJ1ZSBFTkQpIEFTIGhhc3RvYXN0 dGFibGUsCisgICAgKENBU0UgV0hFTiAoc3Vic3RyaW5nKGFycmF5X3RvX3N0 cmluZyhjLnJlbG9wdGlvbnMsICcsJykKKyAgICAgIEZST00gJ2F1dG92YWN1 dW1fZW5hYmxlZD0oW2EtenwwLTldKiknKSk6OmJvb2xlYW4gIFRIRU4gdHJ1 ZSBFTFNFIGZhbHNlIEVORCkgQVMgYXV0b3ZhY3V1bV9jdXN0b20sCisgICAg KENBU0UgV0hFTiAoc3Vic3RyaW5nKGFycmF5X3RvX3N0cmluZyh0c3QucmVs b3B0aW9ucywgJywnKQorICAgICAgRlJPTSAnYXV0b3ZhY3V1bV9lbmFibGVk PShbYS16fDAtOV0qKScpKTo6Ym9vbGVhbiAgQU5EIGMucmVsdG9hc3RyZWxp ZCA9IDAgVEhFTiB0cnVlIEVMU0UgZmFsc2UgRU5EKSBBUyB0b2FzdF9hdXRv dmFjY3VtCitGUk9NCisgICAgcGdfY2xhc3MgYworTEVGVCBPVVRFUiBKT0lO IHBnX25hbWVzcGFjZSBuc3Agb24gbnNwLm9pZCA9IGMucmVsbmFtZXNwYWNl CitMRUZUIE9VVEVSIEpPSU4gcGdfdGFibGVzcGFjZSBzcGMgb24gc3BjLm9p ZD1jLnJlbHRhYmxlc3BhY2UKK0xFRlQgT1VURVIgSk9JTiBwZ19kZXNjcmlw dGlvbiBkZXMgT04gKGRlcy5vYmpvaWQ9Yy5vaWQgYW5kIGRlcy5vYmpzdWJp ZD0wIEFORCBkZXMuY2xhc3NvaWQ9J3BnX2NsYXNzJzo6cmVnY2xhc3MpCitM RUZUIE9VVEVSIEpPSU4gcGdfY2xhc3MgdHN0IE9OIHRzdC5vaWQgPSBjLnJl bHRvYXN0cmVsaWQKKyAgICBXSEVSRSAoKGMucmVsaGFzcnVsZXMgQU5EIChF WElTVFMgKAorICAgICAgICBTRUxFQ1QKKyAgICAgICAgICAgIHIucnVsZW5h bWUKKyAgICAgICAgRlJPTQorICAgICAgICAgICAgcGdfcmV3cml0ZSByCisg ICAgICAgIFdIRVJFCisgICAgICAgICAgICAoKHIuZXZfY2xhc3MgPSBjLm9p ZCkKKyAgICAgICAgICAgICAgICBBTkQgKGJwY2hhcihyLmV2X3R5cGUpID0g JzEnOjpicGNoYXIpKSApKSkKKyAgICAgICAgICAgIEFORCAoYy5yZWxraW5k ID0gJ20nOjpjaGFyKQorICAgICAgICAgICkKK3slIGlmICh2aWQgYW5kIGRh dGxhc3RzeXNvaWQpICV9CisgICAgQU5EIGMub2lkID0ge3t2aWR9fTo6b2lk Cit7JSBlbGlmIHNjaWQgJX0KKyAgICBBTkQgYy5yZWxuYW1lc3BhY2UgPSB7 e3NjaWR9fTo6b2lkCitPUkRFUiBCWQorICAgIGMucmVsbmFtZQoreyUgZW5k aWYgJX0KKworeyUgZWxpZiB0eXBlID09ICdyb2xlcycgJX0KK1NFTEVDVAor ICAgIHByLnJvbG5hbWUKK0ZST00KKyAgICBwZ19yb2xlcyBwcgorV0hFUkUK KyAgICBwci5yb2xjYW5sb2dpbgorT1JERVIgQlkKKyAgICBwci5yb2xuYW1l CisKK3slIGVsaWYgdHlwZSA9PSAnc2NoZW1hcycgJX0KK1NFTEVDVAorICAg IG5zcC5uc3BuYW1lCitGUk9NCisgICAgcGdfbmFtZXNwYWNlIG5zcAorV0hF UkUKKyAgICAobnNwLm5zcG5hbWUgTk9UIExJS0UgRSdwZ1xcXyUnCisgICAg ICAgIEFORCBuc3AubnNwbmFtZSAhPSAnaW5mb3JtYXRpb25fc2NoZW1hJykK K3slIGVuZGlmICV9CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2Vy L3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy92aWV3 cy90ZW1wbGF0ZXMvbXZpZXcvcGcvOS4zX3BsdXMvc3FsL3VwZGF0ZS5zcWwg Yi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9k YXRhYmFzZXMvc2NoZW1hcy92aWV3cy90ZW1wbGF0ZXMvbXZpZXcvcGcvOS4z X3BsdXMvc3FsL3VwZGF0ZS5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMC4uZDgxNDZiMQotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9w Z2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNl cy9zY2hlbWFzL3ZpZXdzL3RlbXBsYXRlcy9tdmlldy9wZy85LjNfcGx1cy9z cWwvdXBkYXRlLnNxbApAQCAtMCwwICsxLDE1NCBAQAoreyMgPT09PT09PT09 PT09PT09PT09PT09IFVwZGF0ZSBWaWV3ID09PT09PT09PT09PT09PT09PT0j fQoreyUgaW1wb3J0ICdtYWNyb3Mvc2VjdXJpdHkubWFjcm9zJyBhcyBTRUNM QUJMRSAlfQoreyUgaW1wb3J0ICdtYWNyb3Mvc2NoZW1hcy9wcml2aWxlZ2Uu bWFjcm9zJyBhcyBQUklWSUxFR0UgJX0KK3slLSBpZiBkYXRhIC0lfQoreyUg c2V0IHZpZXdfbmFtZSA9IGRhdGEubmFtZSBpZiBkYXRhLm5hbWUgZWxzZSBv X2RhdGEubmFtZSAlfQoreyUgc2V0IHZpZXdfc2NoZW1hID0gZGF0YS5zY2hl bWEgaWYgZGF0YS5zY2hlbWEgZWxzZSBvX2RhdGEuc2NoZW1hICV9Cit7JSBz ZXQgZGVmID0gZGF0YS5kZWZpbml0aW9uLnJzdHJpcCgnOycpIGlmIGRhdGEu ZGVmaW5pdGlvbiAlfQoreyMgPT09PT0gUmVuYW1lIG1hdCB2aWV3ID09PT09 ICN9Cit7JSBpZiBkYXRhLm5hbWUgYW5kIGRhdGEubmFtZSAhPSBvX2RhdGEu bmFtZSAlfQorQUxURVIgTUFURVJJQUxJWkVEIFZJRVcge3sgY29ubnxxdElk ZW50KG9fZGF0YS5zY2hlbWEsIG9fZGF0YS5uYW1lKSB9fQorICBSRU5BTUUg VE8ge3sgY29ubnxxdElkZW50KGRhdGEubmFtZSkgfX07CisKK3slIGVuZGlm ICV9Cit7IyA9PT09PSBBbHRlciBzY2hlbWEgdmlldyA9PT09PSAjfQoreyUg aWYgZGF0YS5zY2hlbWEgYW5kIGRhdGEuc2NoZW1hICE9IG9fZGF0YS5zY2hl bWEgJX0KK0FMVEVSIE1BVEVSSUFMSVpFRCBWSUVXIHt7IGNvbm58cXRJZGVu dChvX2RhdGEuc2NoZW1hLCB2aWV3X25hbWUgKSB9fQorICBTRVQgU0NIRU1B IHt7IGNvbm58cXRJZGVudChkYXRhLnNjaGVtYSkgfX07CisKK3slIGVuZGlm ICV9Cit7IyA9PT09PSBBbHRlciBUYWJsZSBvd25lciA9PT09PSAjfQoreyUg aWYgZGF0YS5vd25lciBhbmQgZGF0YS5vd25lciAhPSBvX2RhdGEub3duZXIg JX0KK0FMVEVSIFRBQkxFIHt7IGNvbm58cXRJZGVudCh2aWV3X3NjaGVtYSwg dmlld19uYW1lKSB9fQorICBPV05FUiBUTyB7eyBjb25ufHF0SWRlbnQoZGF0 YS5vd25lcikgfX07CisKK3slIGVuZGlmICV9Cit7JSBpZiBkYXRhWyd2YWN1 dW1fZGF0YSddWydyZXNldCddfGxlbmd0aCA+IDAgJX0KK0FMVEVSIE1BVEVS SUFMSVpFRCBWSUVXIHt7IGNvbm58cXRJZGVudCh2aWV3X3NjaGVtYSwgdmll d19uYW1lKSB9fQorUkVTRVQoCit7JSBmb3IgZmllbGQgaW4gZGF0YVsndmFj dXVtX2RhdGEnXVsncmVzZXQnXSAlfQorICB7eyBmaWVsZC5uYW1lIH19eyUg aWYgbm90IGxvb3AubGFzdCAgJX0seyUgZW5kaWYgJX17eyAnXHInIH19Cit7 JSBlbmRmb3IgJX0KKyk7Cit7JSBlbmRpZiAlfQoreyMgPT09PT0gRmlyc3Qg RHJvcCBhbmQgdGhlbiBjcmVhdGUgbWF0IHZpZXcgPT09PT0gI30KK3slIGlm IGRlZiBhbmQgZGVmICE9IG9fZGF0YS5kZWZpbml0aW9uLnJzdHJpcCgnOycp ICV9Cit7JSBpZiBkYXRhLmZpbGxmYWN0b3Igb3IgKCBkYXRhWyd2YWN1dW1f ZGF0YSddWydjaGFuZ2VkJ118bGVuZ3RoID4gMCApICV9CitEUk9QIE1BVEVS SUFMSVpFRCBWSUVXIHt7IGNvbm58cXRJZGVudCh2aWV3X3NjaGVtYSwgdmll d19uYW1lKSB9fTsKK0NSRUFURSBNQVRFUklBTElaRUQgVklFVyB7eyBjb25u fHF0SWRlbnQodmlld19zY2hlbWEsIHZpZXdfbmFtZSkgfX0KK1dJVEgoCit7 JSBpZiBkYXRhLmZpbGxmYWN0b3IgJX0KKyAgRklMTEZBQ1RPUiA9IHt7IGRh dGEuZmlsbGZhY3RvciB9fXslIGlmIGRhdGFbJ3ZhY3V1bV9kYXRhJ11bJ2No YW5nZWQnXXxsZW5ndGggPiAwICV9LHslIGVuZGlmICV9e3sgJ1xyJyB9fQor eyUgZW5kaWYgJX0KK3slIGlmIGRhdGFbJ3ZhY3V1bV9kYXRhJ11bJ2NoYW5n ZWQnXXxsZW5ndGggPiAwICV9Cit7JSBmb3IgZmllbGQgaW4gZGF0YVsndmFj dXVtX2RhdGEnXVsnY2hhbmdlZCddICV9CisgIHt7IGZpZWxkLm5hbWUgfX0g PSB7eyBmaWVsZC52YWx1ZXxsb3dlciB9fXslIGlmIG5vdCBsb29wLmxhc3Qg ICV9LHslIGVuZGlmICV9e3sgJ1xyJyB9fQoreyUgZW5kZm9yICV9Cit7JSBl bmRpZiAlfQorKQorIEFTCit7eyBkZWYgfX0KK3slIGlmIGRhdGEud2l0aF9k YXRhICV9CisgV0lUSCBEQVRBOworCit7JSBlbHNlICV9CisgV0lUSCBOTyBE QVRBOworCit7JSBlbmRpZiAlfQoreyUgZW5kaWYgJX0KK3slIGVsc2UgJX0K K3sjID09PT09PT0gQWx0ZXIgVGFibGVzcGFjZSA9PT09PT09PT0gI30KK3sl LSBpZiBkYXRhLnNwY29pZCBhbmQgb19kYXRhLnNwY29pZCAhPSBkYXRhLnNw Y29pZCAgLSV9CitBTFRFUiBNQVRFUklBTElaRUQgVklFVyB7eyBjb25ufHF0 SWRlbnQodmlld19zY2hlbWEsIHZpZXdfbmFtZSkgfX0KKyAgU0VUIFRBQkxF U1BBQ0Uge3sgZGF0YS5zcGNvaWQgfX07CisKK3slIGVuZGlmICV9Cit7IyA9 PT09PT09IFNFVC9SRVNFVCBGaWxsZmFjdG9yID09PT09PT09PSAjfQoreyUg aWYgZGF0YS5maWxsZmFjdG9yIGFuZCBvX2RhdGEuZmlsbGZhY3RvciAhPSBk YXRhLmZpbGxmYWN0b3IgJX0KK0FMVEVSIE1BVEVSSUFMSVpFRCBWSUVXIHt7 IGNvbm58cXRJZGVudCh2aWV3X3NjaGVtYSwgdmlld19uYW1lKSB9fQorU0VU KEZJTExGQUNUT1IgPSB7eyBkYXRhLmZpbGxmYWN0b3IgfX0pOworCit7JSBl bGlmIGRhdGEuZmlsbGZhY3RvciA9PSAnJyAlfQorQUxURVIgTUFURVJJQUxJ WkVEIFZJRVcge3sgY29ubnxxdElkZW50KHZpZXdfc2NoZW1hLCB2aWV3X25h bWUpIH19CitSRVNFVCgKKyAgRklMTEZBQ1RPUgorKTsKKworeyUgZW5kaWYg JX0KK3sjID09PT09IENoZWNrIGZvciB3aXRoX2RhdGEgcHJvcGVydHkgPT09 PT0gI30KK3slIGlmIGRhdGEud2l0aF9kYXRhIGlzIGRlZmluZWQgYW5kIG9f ZGF0YS53aXRoX2RhdGF8bG93ZXIgIT0gZGF0YS53aXRoX2RhdGF8bG93ZXIg ICV9CitSRUZSRVNIIE1BVEVSSUFMSVpFRCBWSUVXIHt7IGNvbm58cXRJZGVu dCh2aWV3X3NjaGVtYSwgdmlld19uYW1lKSB9fSBXSVRIe3sgJyBOTycgaWYg ZGF0YS53aXRoX2RhdGF8bG93ZXIgPT0gJ2ZhbHNlJyBlbHNlICcnIH19IERB VEE7CisKK3slIGVuZGlmICV9Cit7IyA9PT09PSBDaGVjayBmb3IgVGFibGUg dGFiIHByb3BlcnRpZXMgPT09PT0gI30KK3slIGlmIGRhdGEuYXV0b3ZhY3V1 bV9jdXN0b20gaXMgZGVmaW5lZCBhbmQgZGF0YS5hdXRvdmFjdXVtX2N1c3Rv bXxsb3dlciA9PSAnZmFsc2UnICV9CitBTFRFUiBNQVRFUklBTElaRUQgVklF VyB7eyBjb25ufHF0SWRlbnQodmlld19zY2hlbWEsIHZpZXdfbmFtZSkgfX0K K1JFU0VUKAorICBhdXRvdmFjdXVtX3ZhY3V1bV90aHJlc2hvbGQsCisgIGF1 dG92YWN1dW1fYW5hbHl6ZV90aHJlc2hvbGQsCisgIGF1dG92YWN1dW1fdmFj dXVtX3NjYWxlX2ZhY3RvciwKKyAgYXV0b3ZhY3V1bV9hbmFseXplX3NjYWxl X2ZhY3RvciwKKyAgYXV0b3ZhY3V1bV92YWN1dW1fY29zdF9kZWxheSwKKyAg YXV0b3ZhY3V1bV92YWN1dW1fY29zdF9saW1pdCwKKyAgYXV0b3ZhY3V1bV9m cmVlemVfbWluX2FnZSwKKyAgYXV0b3ZhY3V1bV9mcmVlemVfbWF4X2FnZSwK KyAgYXV0b3ZhY3V1bV9mcmVlemVfdGFibGVfYWdlCispOworCit7JSBlbGlm KGRhdGFbJ3ZhY3V1bV9kYXRhJ11bJ2NoYW5nZWQnXXxsZW5ndGggPiAwKSAl fQoreyUgaWYgZGF0YVsndmFjdXVtX2RhdGEnXVsnY2hhbmdlZCddfGxlbmd0 aCA9PSAxIGFuZCBkYXRhWyd2YWN1dW1fZGF0YSddWydjaGFuZ2VkJ11bMF1b J25hbWUnXSAhPSAnYXV0b3ZhY3V1bV9lbmFibGVkJyAlfQorQUxURVIgTUFU RVJJQUxJWkVEIFZJRVcge3sgY29ubnxxdElkZW50KGRhdGEuc2NoZW1hLCBk YXRhLm5hbWUpIH19IFNFVCgKK3slIGZvciBmaWVsZCBpbiBkYXRhWyd2YWN1 dW1fZGF0YSddWydjaGFuZ2VkJ10gJX0KK3slIGlmIGZpZWxkLnZhbHVlICE9 IE5vbmUgJX0KKyAge3sgZmllbGQubmFtZSB9fSA9IHt7IGZpZWxkLnZhbHVl fGxvd2VyIH19eyUgaWYgbm90IGxvb3AubGFzdCAgJX0seyUgZW5kaWYgJX17 eyAnXHInIH19Cit7JSBlbmRpZiAlfQoreyUgZW5kZm9yICV9CispOworeyUg ZW5kaWYgJX0KKworeyUgZW5kaWYgJX17IyA9PT09PSBFbmQgY2hlY2sgZm9y IGN1c3RvbSBhdXRvdmFjY3VtID09PT09ICN9Cit7JSBlbmRpZiAlfXsjID09 PT09IEVuZCBibG9jayBmb3IgY2hlY2sgZGF0YSBkZWZpbml0aW9uID09PT09 ICN9Cit7JS0gaWYgZGF0YS5jb21tZW50IGFuZCBkYXRhLmNvbW1lbnQgIT0g b19kYXRhLmNvbW1lbnQgLSV9CitDT01NRU5UIE9OIFZJRVcge3sgY29ubnxx dElkZW50KHZpZXdfc2NoZW1hLCB2aWV3X25hbWUpIH19CisgIElTIHt7IGRh dGEuY29tbWVudHxxdExpdGVyYWwgfX07CisKK3slIGVuZGlmICV9Cit7IyA9 PT09PT09PT09PT09IFRoZSBTUUwgZ2VuZXJhdGVkIGJlbG93IHdpbGwgY2hh bmdlIHByaXZpbGVnZXMgPT09PT09PT09PT09PSAjfQoreyUgaWYgZGF0YS5k YXRhY2wgJX0KK3slIGlmICdkZWxldGVkJyBpbiBkYXRhLmRhdGFjbCAlfQor eyUgZm9yIHByaXYgaW4gZGF0YS5kYXRhY2wuZGVsZXRlZCAlfQore3sgUFJJ VklMRUdFLlJFU0VUQUxMKGNvbm4sICdUQUJMRScsIHByaXYuZ3JhbnRlZSwg ZGF0YS5uYW1lLCBkYXRhLnNjaGVtYSkgfX0KK3slIGVuZGZvciAlfQoreyUg ZW5kaWYgJX0KK3slIGlmICdjaGFuZ2VkJyBpbiBkYXRhLmRhdGFjbCAlfQor eyUgZm9yIHByaXYgaW4gZGF0YS5kYXRhY2wuY2hhbmdlZCAtJX0KK3t7IFBS SVZJTEVHRS5VTlNFVEFMTChjb25uLCAnVEFCTEUnLCBwcml2LmdyYW50ZWUs IGRhdGEubmFtZSwgZGF0YS5zY2hlbWEpIH19Cit7eyBQUklWSUxFR0UuU0VU KGNvbm4sICdUQUJMRScsIHByaXYuZ3JhbnRlZSwgZGF0YS5uYW1lLCBwcml2 LndpdGhvdXRfZ3JhbnQsIHByaXYud2l0aF9ncmFudCwgZGF0YS5zY2hlbWEp IH19Cit7JS0gZW5kZm9yICV9Cit7JSBlbmRpZiAlfQoreyUgaWYgJ2FkZGVk JyBpbiBkYXRhLmRhdGFjbCAlfQoreyUgZm9yIHByaXYgaW4gZGF0YS5kYXRh Y2wuYWRkZWQgJX0KK3t7IFBSSVZJTEVHRS5TRVQoY29ubiwgJ1RBQkxFJywg cHJpdi5ncmFudGVlLCBkYXRhLm5hbWUsIHByaXYud2l0aG91dF9ncmFudCwg cHJpdi53aXRoX2dyYW50LCBkYXRhLnNjaGVtYSkgfX0KK3slIGVuZGZvciAl fQoreyUgZW5kaWYgJX0KK3slIGVuZGlmICV9Cit7IyA9PT09PT09PT09PT09 PSBUaGUgU1FMIGdlbmVyYXRlZCBiZWxvdyB3aWxsIGNoYW5nZSBTZWN1cml0 eSBMYWJlbCA9PT09PT09PT0gI30KK3slIGlmIGRhdGEuc2VjbGFiZWxzIGlz IG5vdCBub25lIGFuZCBkYXRhLnNlY2xhYmVsc3xsZW5ndGggPiAwICV9Cit7 JSBzZXQgc2VjbGFiZWxzID0gZGF0YS5zZWNsYWJlbHMgJX0KK3slIGlmICdk ZWxldGVkJyBpbiBzZWNsYWJlbHMgYW5kIHNlY2xhYmVscy5kZWxldGVkfGxl bmd0aCA+IDAgJX0KK3slIGZvciByIGluIHNlY2xhYmVscy5kZWxldGVkICV9 Cit7eyBTRUNMQUJMRS5EUk9QKGNvbm4sICdWSUVXJywgZGF0YS5uYW1lLCBy LnByb3ZpZGVyKSB9fQoreyUgZW5kZm9yICV9Cit7JSBlbmRpZiAlfQoreyUg aWYgJ2FkZGVkJyBpbiBzZWNsYWJlbHMgYW5kIHNlY2xhYmVscy5hZGRlZHxs ZW5ndGggPiAwICV9Cit7JSBmb3IgciBpbiBzZWNsYWJlbHMuYWRkZWQgJX0K K3t7IFNFQ0xBQkxFLkFQUExZKGNvbm4sICdWSUVXJywgZGF0YS5uYW1lLCBy LnByb3ZpZGVyLCByLnNlY3VyaXR5X2xhYmVsKSB9fQoreyUgZW5kZm9yICV9 Cit7JSBlbmRpZiAlfQoreyUgaWYgJ2NoYW5nZWQnIGluIHNlY2xhYmVscyBh bmQgc2VjbGFiZWxzLmNoYW5nZWR8bGVuZ3RoID4gMCAlfQoreyUgZm9yIHIg aW4gc2VjbGFiZWxzLmNoYW5nZWQgJX0KK3t7IFNFQ0xBQkxFLkFQUExZKGNv bm4sICdWSUVXJywgZGF0YS5uYW1lLCByLnByb3ZpZGVyLCByLnNlY3VyaXR5 X2xhYmVsKSB9fQoreyUgZW5kZm9yICV9Cit7JSBlbmRpZiAlfQoreyUgZW5k aWYgJX0KK3slIGVuZGlmICV9CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9i cm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1h cy92aWV3cy90ZW1wbGF0ZXMvbXZpZXcvcGcvOS4zX3BsdXMvc3FsL3ZpZXdf aWQuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3Nl cnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdmlld3MvdGVtcGxhdGVzL212aWV3 L3BnLzkuM19wbHVzL3NxbC92aWV3X2lkLnNxbApuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwLi5kMTkyYTgwCi0tLSAvZGV2L251bGwKKysr IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMv ZGF0YWJhc2VzL3NjaGVtYXMvdmlld3MvdGVtcGxhdGVzL212aWV3L3BnLzku M19wbHVzL3NxbC92aWV3X2lkLnNxbApAQCAtMCwwICsxLDQgQEAKK3sjID09 PT09IEJlbG93IHdpbGwgcHJvdmlkZSB2aWV3IGlkIGZvciBsYXN0IGNyZWF0 ZWQgdmlldyA9PT09ICN9Cit7JSBpZiBkYXRhICV9CitTRUxFQ1QgYy5vaWQg RlJPTSBwZ19jbGFzcyBjIFdIRVJFIGMucmVsbmFtZSA9ICd7eyBkYXRhLm5h bWUgfX0nOworeyUgZW5kaWYgJX0KZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWlu L2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hl bWFzL3ZpZXdzL3RlbXBsYXRlcy9tdmlldy9wcGFzLzkuM19wbHVzL3NxbC9h Y2wuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3Nl cnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdmlld3MvdGVtcGxhdGVzL212aWV3 L3BwYXMvOS4zX3BsdXMvc3FsL2FjbC5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMC4uMGMxYmQ2YwotLS0gL2Rldi9udWxsCisrKyBi L3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2Rh dGFiYXNlcy9zY2hlbWFzL3ZpZXdzL3RlbXBsYXRlcy9tdmlldy9wcGFzLzku M19wbHVzL3NxbC9hY2wuc3FsCkBAIC0wLDAgKzEsNDEgQEAKK3sjPT09PT09 PT09PT09PT09PT09PT09PT09PT09PUdldCBBQ0xzPT09PT09PT09PT09PT09 PT09PT09PT09PSN9Cit7JSBpZiB2aWQgJX0KK1NFTEVDVAorICAgICdkYXRh Y2wnIGFzIGRlZnR5cGUsCisgICAgQ09BTEVTQ0UoZ3Qucm9sbmFtZSwgJ3B1 YmxpYycpIGdyYW50ZWUsCisgICAgZy5yb2xuYW1lIGdyYW50b3IsCisgICAg YXJyYXlfYWdnKHByaXZpbGVnZV90eXBlKSBhcyBwcml2aWxlZ2VzLAorICAg IGFycmF5X2FnZyhpc19ncmFudGFibGUpIGFzIGdyYW50YWJsZQorRlJPTQor ICAgIChTRUxFQ1QKKyAgICAgICAgZC5ncmFudGVlLAorICAgICAgICBkLmdy YW50b3IsCisgICAgICAgIGQuaXNfZ3JhbnRhYmxlLAorICAgICAgICBDQVNF IGQucHJpdmlsZWdlX3R5cGUKKyAgICAgICAgICBXSEVOICdERUxFVEUnIFRI RU4gJ2QnCisgICAgICAgICAgV0hFTiAnSU5TRVJUJyBUSEVOICdhJworICAg ICAgICAgIFdIRU4gJ1JFRkVSRU5DRVMnIFRIRU4gJ3gnCisgICAgICAgICAg V0hFTiAnU0VMRUNUJyBUSEVOICdyJworICAgICAgICAgIFdIRU4gJ1RSSUdH RVInIFRIRU4gJ3QnCisgICAgICAgICAgV0hFTiAnVVBEQVRFJyBUSEVOICd3 JworICAgICAgICAgIFdIRU4gJ1RSVU5DQVRFJyBUSEVOICdEJworICAgICAg ICAgIEVMU0UgJ1VOS05PV04nCisgICAgICAgIEVORCBBUyBwcml2aWxlZ2Vf dHlwZQorICAgIEZST00KKyAgICAgICAgKFNFTEVDVAorICAgICAgICAgICAg cmVsYWNsCisgICAgICAgICBGUk9NCisgICAgICAgICAgICBwZ19jbGFzcyBj bAorICAgICAgICAgTEVGVCBPVVRFUiBKT0lOIHBnX3NoZGVzY3JpcHRpb24g ZGVzY3IgT04KKyAgICAgICAgICAgIChjbC5vaWQ9ZGVzY3Iub2Jqb2lkIEFO RCBkZXNjci5jbGFzc29pZD0ncGdfY2xhc3MnOjpyZWdjbGFzcykKKyAgICAg ICAgIFdIRVJFCisgICAgICAgICAgICBjbC5vaWQgPSB7eyB2aWQgfX06Ok9J RCBBTkQgcmVsa2luZCA9ICdtJworICAgICAgICApIGFjbCwKKyAgICAgICAg YWNsZXhwbG9kZShyZWxhY2wpIGQKKyAgICApIGQKK0xFRlQgSk9JTiBwZ19j YXRhbG9nLnBnX3JvbGVzIGcgT04gKGQuZ3JhbnRvciA9IGcub2lkKQorTEVG VCBKT0lOIHBnX2NhdGFsb2cucGdfcm9sZXMgZ3QgT04gKGQuZ3JhbnRlZSA9 IGd0Lm9pZCkKK0dST1VQIEJZCisgICAgZy5yb2xuYW1lLAorICAgIGd0LnJv bG5hbWUKK3slIGVuZGlmICV9CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9i cm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1h cy92aWV3cy90ZW1wbGF0ZXMvbXZpZXcvcHBhcy85LjNfcGx1cy9zcWwvY3Jl YXRlLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9z ZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3ZpZXdzL3RlbXBsYXRlcy9tdmll dy9wcGFzLzkuM19wbHVzL3NxbC9jcmVhdGUuc3FsCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI5YzlkMWEKLS0tIC9kZXYvbnVsbAor KysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVy cy9kYXRhYmFzZXMvc2NoZW1hcy92aWV3cy90ZW1wbGF0ZXMvbXZpZXcvcHBh cy85LjNfcGx1cy9zcWwvY3JlYXRlLnNxbApAQCAtMCwwICsxLDQyIEBACit7 IyA9PT09PT09PT09PT09PT09PT09PT0gQ3JlYXRlIG5ldyB2aWV3ID09PT09 PT09PT09PT09PT09PT09PSAjfQoreyUgaWYgZGlzcGxheV9jb21tZW50cyAl fQorLS0gVmlldzoge3sgY29ubnxxdElkZW50KGRhdGEuc2NoZW1hLCBkYXRh Lm5hbWUpIH19CisKKy0tIERST1AgTUFURVJJQUxJWkVEIFZJRVcge3sgY29u bnxxdElkZW50KGRhdGEuc2NoZW1hLCBkYXRhLm5hbWUpIH19OworCit7JSBl bmRpZiAlfQoreyUgaWYgZGF0YS5uYW1lIGFuZCBkYXRhLnNjaGVtYSBhbmQg ZGF0YS5kZWZpbml0aW9uICV9CitDUkVBVEUgTUFURVJJQUxJWkVEIFZJRVcg e3sgY29ubnxxdElkZW50KGRhdGEuc2NoZW1hLCBkYXRhLm5hbWUpIH19Cit7 JSBpZihkYXRhLmZpbGxmYWN0b3Igb3IgZGF0YVsnYXV0b3ZhY3V1bV9lbmFi bGVkJ10gb3IgZGF0YVsndG9hc3RfYXV0b3ZhY3V1bV9lbmFibGVkJ10pICV9 CitXSVRIICgKK3slIGlmIGRhdGEuZmlsbGZhY3RvciAlfQorICAgIEZJTExG QUNUT1IgPSB7eyBkYXRhLmZpbGxmYWN0b3IgfX17JSBpZiBkYXRhWydhdXRv dmFjdXVtX2VuYWJsZWQnXSBvciBkYXRhWyd0b2FzdF9hdXRvdmFjdXVtX2Vu YWJsZWQnXSBvciBkYXRhWyd2YWN1dW1fZGF0YSddfGxlbmd0aCA+IDAgJX0s e3sgJ1xyJyB9fXslIGVuZGlmICV9Cit7JSBlbmRpZiAlfQoreyUgaWYgZGF0 YVsnYXV0b3ZhY3V1bV9lbmFibGVkJ10gJX0KKyAgICBhdXRvdmFjdXVtX2Vu YWJsZWQgPSB7eyBkYXRhWydhdXRvdmFjdXVtX2VuYWJsZWQnXXxsb3dlciB9 fXslIGlmIGRhdGFbJ3RvYXN0X2F1dG92YWN1dW1fZW5hYmxlZCddIG9yIGRh dGFbJ3ZhY3V1bV9kYXRhJ118bGVuZ3RoID4gMCAlfSx7eyAnXHInIH19eyUg ZW5kaWYgJX0KK3slIGVuZGlmICV9Cit7JSBpZiBkYXRhWyd0b2FzdF9hdXRv dmFjdXVtX2VuYWJsZWQnXSAlfQorICAgIHt7ICd0b2FzdC5hdXRvdmFjdXVt X2VuYWJsZWQnIH19ID0ge3sgZGF0YVsndG9hc3RfYXV0b3ZhY3V1bV9lbmFi bGVkJ118bG93ZXIgfX17JSBpZiBkYXRhWyd2YWN1dW1fZGF0YSddfGxlbmd0 aCA+IDAgJX0se3sgJ1xyJyB9fXslIGVuZGlmICV9Cit7JSBlbmRpZiAlfQor eyUgZm9yIGZpZWxkIGluIGRhdGFbJ3ZhY3V1bV9kYXRhJ10gJX0KK3slIGlm IGZpZWxkLnZhbHVlIGlzIGRlZmluZWQgYW5kIGZpZWxkLnZhbHVlICE9ICcn IGFuZCBmaWVsZC52YWx1ZSAhPSBub25lICV9Cit7JSBpZiBsb29wLmluZGV4 ID4gMSV9LAoreyUgZW5kaWYgJX0gICAge3sgZmllbGQubmFtZSB9fSA9IHt7 IGZpZWxkLnZhbHVlfGxvd2VyIH19eyUgZW5kaWYgJX0KK3slIGVuZGZvciAl fQorCispCit7JSBlbmRpZiAlfQoreyUgaWYgZGF0YS5zcGNuYW1lICV9VEFC TEVTUEFDRSB7eyBkYXRhLnNwY25hbWUgfX0KK3slIGVuZGlmICV9QVMKK3t7 IGRhdGEuZGVmaW5pdGlvbi5yc3RyaXAoJzsnKSB9fQoreyUgaWYgZGF0YS53 aXRoX2RhdGEgJX0KK1dJVEggREFUQTsKK3slIGVsc2UgJX0KK1dJVEggTk8g REFUQTsKK3slIGVuZGlmICV9Cit7JSBpZiBkYXRhLmNvbW1lbnQgJX0KKwor Q09NTUVOVCBPTiBWSUVXIHt7IGNvbm58cXRJZGVudChkYXRhLnNjaGVtYSwg ZGF0YS5uYW1lKSB9fQorICAgIElTIHt7IGRhdGEuY29tbWVudHxxdExpdGVy YWwgfX07Cit7JSBlbmRpZiAlfQoreyUgZW5kaWYgJX0KZGlmZiAtLWdpdCBh L3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2Rh dGFiYXNlcy9zY2hlbWFzL3ZpZXdzL3RlbXBsYXRlcy9tdmlldy9wcGFzLzku M19wbHVzL3NxbC9kZWxldGUuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9z ZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdmlld3Mv dGVtcGxhdGVzL212aWV3L3BwYXMvOS4zX3BsdXMvc3FsL2RlbGV0ZS5zcWwK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2Y2NjdmYwot LS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVy X2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3ZpZXdzL3RlbXBs YXRlcy9tdmlldy9wcGFzLzkuM19wbHVzL3NxbC9kZWxldGUuc3FsCkBAIC0w LDAgKzEsMTMgQEAKK3sjID09PT09PT09PT09PT09PT09PT0gRHJvcC9DYXNj YWRlIG1hdGVyaWFsaXplZCB2aWV3IGJ5IG5hbWUgPT09PT09PT09PT09PT09 PT09PT0jfQoreyUgaWYgdmlkICV9CitTRUxFQ1QKKyAgICBjLnJlbG5hbWUg QXMgbmFtZSwKKyAgICBuc3AubnNwbmFtZQorRlJPTQorICAgIHBnX2NsYXNz IGMKK0xFRlQgSk9JTiBwZ19uYW1lc3BhY2UgbnNwIE9OIGMucmVsbmFtZXNw YWNlID0gbnNwLm9pZAorV0hFUkUKKyAgICBjLnJlbGZpbGVub2RlID0ge3sg dmlkIH19OworeyUgZWxpZiAobmFtZSBhbmQgbnNwbmFtZSkgJX0KK0RST1Ag TUFURVJJQUxJWkVEIFZJRVcge3sgY29ubnxxdElkZW50KG5zcG5hbWUsIG5h bWUpIH19IHslIGlmIGNhc2NhZGUgJX0gQ0FTQ0FERSB7JSBlbmRpZiAlfQor eyUgZW5kaWYgJX0KZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIv c2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3ZpZXdz L3RlbXBsYXRlcy9tdmlldy9wcGFzLzkuM19wbHVzL3NxbC9nZXRfc2NoZW1h LnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2 ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3ZpZXdzL3RlbXBsYXRlcy9tdmlldy9w cGFzLzkuM19wbHVzL3NxbC9nZXRfc2NoZW1hLnNxbApuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMjdkNGI5Ci0tLSAvZGV2L251bGwK KysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZl cnMvZGF0YWJhc2VzL3NjaGVtYXMvdmlld3MvdGVtcGxhdGVzL212aWV3L3Bw YXMvOS4zX3BsdXMvc3FsL2dldF9zY2hlbWEuc3FsCkBAIC0wLDAgKzEsNiBA QAorU0VMRUNUCisgICAgbnNwbmFtZQorRlJPTQorICAgIHBnX25hbWVzcGFj ZQorV0hFUkUKKyAgICBvaWQgPSB7eyBzY2lkIH19OjpvaWQ7CmRpZmYgLS1n aXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVy cy9kYXRhYmFzZXMvc2NoZW1hcy92aWV3cy90ZW1wbGF0ZXMvbXZpZXcvcHBh cy85LjNfcGx1cy9zcWwvZ3JhbnQuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nl ci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdmll d3MvdGVtcGxhdGVzL212aWV3L3BwYXMvOS4zX3BsdXMvc3FsL2dyYW50LnNx bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZmY5ZDMx Ci0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2 ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdmlld3MvdGVt cGxhdGVzL212aWV3L3BwYXMvOS4zX3BsdXMvc3FsL2dyYW50LnNxbApAQCAt MCwwICsxLDYgQEAKK3sjID09PT09IEdyYW50IFBlcm1pc3Npb25zIHRvIFVz ZXIgUm9sZSBvbiBWaWV3cy9UYWJsZXMgPT09PSAjfQoreyUgaW1wb3J0ICdt YWNyb3Mvc2VjdXJpdHkubWFjcm9zJyBhcyBTRUNMQUJMRSAlfQoreyUgaW1w b3J0ICdtYWNyb3Mvc2NoZW1hcy9wcml2aWxlZ2UubWFjcm9zJyBhcyBQUklW SUxFR0UgJX0KK3sjIFdlIHdpbGwgZ2VuZXJhdGUgU2VjdXJpdHkgTGFiZWwg U1FMIHVzaW5nIG1hY3JvICN9Cit7JSBpZiBkYXRhLnNlY2xhYmVscyAlfXsl IGZvciByIGluIGRhdGEuc2VjbGFiZWxzICV9e3sgU0VDTEFCTEUuQVBQTFko Y29ubiwgJ1ZJRVcnLCBkYXRhLm5hbWUsIHIucHJvdmlkZXIsIHIuc2VjdXJp dHlfbGFiZWwpIH19eyUgZW5kZm9yICV9eyUgZW5kaWYgJX0KK3slIGlmIGRh dGEuZGF0YWNsICV9eyUgZm9yIHByaXYgaW4gZGF0YS5kYXRhY2wgJX17eyBQ UklWSUxFR0UuU0VUKGNvbm4sICdUQUJMRScsIHByaXYuZ3JhbnRlZSwgZGF0 YS5uYW1lLCBwcml2LndpdGhvdXRfZ3JhbnQsIHByaXYud2l0aF9ncmFudCwg ZGF0YS5zY2hlbWEpIH19eyUgZW5kZm9yICV9eyUgZW5kaWYgJX0KZGlmZiAt LWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2 ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3ZpZXdzL3RlbXBsYXRlcy9tdmlldy9w cGFzLzkuM19wbHVzL3NxbC9wcm9wZXJ0aWVzLnNxbCBiL3dlYi9wZ2FkbWlu L2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hl bWFzL3ZpZXdzL3RlbXBsYXRlcy9tdmlldy9wcGFzLzkuM19wbHVzL3NxbC9w cm9wZXJ0aWVzLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwLi5mMDJiYzU0Ci0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4v YnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVt YXMvdmlld3MvdGVtcGxhdGVzL212aWV3L3BwYXMvOS4zX3BsdXMvc3FsL3By b3BlcnRpZXMuc3FsCkBAIC0wLDAgKzEsMTExIEBACit7IyA9PT09PT09PT09 PT09PT09PT09PT09PT09PSBGZXRjaCBNYXRlcmlhbGl6ZWQgVmlldyBQcm9w ZXJ0aWVzID09PT09PT09PT09PT09PT09PT09PT09PT0gI30KK3slIGlmICh2 aWQgYW5kIGRhdGxhc3RzeXNvaWQpIG9yIHNjaWQgJX0KK1NFTEVDVAorICAg IGMub2lkLAorICAgIGMueG1pbiwKKyAgICBjLnJlbG5hbWUgQVMgbmFtZSwK KyAgICBjLnJlbHRhYmxlc3BhY2UgQVMgc3Bjb2lkLAorICAgIGMucmVsaXNw b3B1bGF0ZWQgQVMgd2l0aF9kYXRhLAorICAgIChDQVNFIFdIRU4gbGVuZ3Ro KHNwYy5zcGNuYW1lKSA+IDAgVEhFTiBzcGMuc3BjbmFtZSBFTFNFICdwZ19k ZWZhdWx0JyBFTkQpIGFzIHNwY25hbWUsCisgICAgYy5yZWxhY2wsCisgICAg bnNwLm5zcG5hbWUgYXMgc2NoZW1hLAorICAgIHBnX2dldF91c2VyYnlpZChj LnJlbG93bmVyKSBBUyBvd25lciwKKyAgICBkZXNjcmlwdGlvbiBBUyBjb21t ZW50LAorICAgIHBnX2dldF92aWV3ZGVmKGMub2lkLCB0cnVlKSBBUyBkZWZp bml0aW9uLAorICAgIHsjPT09PT09PT09PT09PUNoZWNrcyBpZiBpdCBpcyBz eXN0ZW0gdmlldz09PT09PT09PT09PT09PT0jfQorICAgIHslIGlmIHZpZCBh bmQgZGF0bGFzdHN5c29pZCAlfQorICAgIENBU0UgV0hFTiB7e3ZpZH19IDw9 IHt7ZGF0bGFzdHN5c29pZH19IFRIRU4gVHJ1ZSBFTFNFIEZhbHNlIEVORCBB UyBzeXN0ZW1fdmlldywKKyAgICB7JSBlbmRpZiAlfQorICAgIGFycmF5X3Rv X3N0cmluZyhjLnJlbGFjbDo6dGV4dFtdLCAnLCAnKSBBUyBhY2wsCisgICAg KFNFTEVDVCBhcnJheV9hZ2cocHJvdmlkZXIgfHwgJz0nIHx8IGxhYmVsKSBG Uk9NIHBnX3NlY2xhYmVscyBzbDEgV0hFUkUgc2wxLm9iam9pZD1jLm9pZCBB TkQgc2wxLm9ianN1YmlkPTApIEFTIHNlY2xhYmVscywKKyAgICBzdWJzdHJp bmcoYXJyYXlfdG9fc3RyaW5nKGMucmVsb3B0aW9ucywgJywnKQorICAgICAg RlJPTSAnZmlsbGZhY3Rvcj0oWzAtOV0qKScpIEFTIGZpbGxmYWN0b3IsCisg ICAgc3Vic3RyaW5nKGFycmF5X3RvX3N0cmluZyhjLnJlbG9wdGlvbnMsICcs JykKKyAgICAgIEZST00gJ2F1dG92YWN1dW1fZW5hYmxlZD0oW2EtenwwLTld KiknKSBBUyBhdXRvdmFjdXVtX2VuYWJsZWQsCisgICAgc3Vic3RyaW5nKGFy cmF5X3RvX3N0cmluZyhjLnJlbG9wdGlvbnMsICcsJykKKyAgICAgIEZST00g J2F1dG92YWN1dW1fdmFjdXVtX3RocmVzaG9sZD0oWzAtOV0qKScpIEFTIGF1 dG92YWN1dW1fdmFjdXVtX3RocmVzaG9sZCwKKyAgICBzdWJzdHJpbmcoYXJy YXlfdG9fc3RyaW5nKGMucmVsb3B0aW9ucywgJywnKQorICAgICAgRlJPTSAn YXV0b3ZhY3V1bV92YWN1dW1fc2NhbGVfZmFjdG9yPShbMC05XSpbLl1bMC05 XSopJykgQVMgYXV0b3ZhY3V1bV92YWN1dW1fc2NhbGVfZmFjdG9yLAorICAg IHN1YnN0cmluZyhhcnJheV90b19zdHJpbmcoYy5yZWxvcHRpb25zLCAnLCcp CisgICAgICBGUk9NICdhdXRvdmFjdXVtX2FuYWx5emVfdGhyZXNob2xkPShb MC05XSopJykgQVMgYXV0b3ZhY3V1bV9hbmFseXplX3RocmVzaG9sZCwKKyAg ICBzdWJzdHJpbmcoYXJyYXlfdG9fc3RyaW5nKGMucmVsb3B0aW9ucywgJywn KQorICAgICAgRlJPTSAnYXV0b3ZhY3V1bV9hbmFseXplX3NjYWxlX2ZhY3Rv cj0oWzAtOV0qWy5dWzAtOV0qKScpIEFTIGF1dG92YWN1dW1fYW5hbHl6ZV9z Y2FsZV9mYWN0b3IsCisgICAgc3Vic3RyaW5nKGFycmF5X3RvX3N0cmluZyhj LnJlbG9wdGlvbnMsICcsJykKKyAgICAgIEZST00gJ2F1dG92YWN1dW1fdmFj dXVtX2Nvc3RfZGVsYXk9KFswLTldKiknKSBBUyBhdXRvdmFjdXVtX3ZhY3V1 bV9jb3N0X2RlbGF5LAorICAgIHN1YnN0cmluZyhhcnJheV90b19zdHJpbmco Yy5yZWxvcHRpb25zLCAnLCcpCisgICAgICBGUk9NICdhdXRvdmFjdXVtX3Zh Y3V1bV9jb3N0X2xpbWl0PShbMC05XSopJykgQVMgYXV0b3ZhY3V1bV92YWN1 dW1fY29zdF9saW1pdCwKKyAgICBzdWJzdHJpbmcoYXJyYXlfdG9fc3RyaW5n KGMucmVsb3B0aW9ucywgJywnKQorICAgICAgRlJPTSAnYXV0b3ZhY3V1bV9m cmVlemVfbWluX2FnZT0oWzAtOV0qKScpIEFTIGF1dG92YWN1dW1fZnJlZXpl X21pbl9hZ2UsCisgICAgc3Vic3RyaW5nKGFycmF5X3RvX3N0cmluZyhjLnJl bG9wdGlvbnMsICcsJykKKyAgICAgIEZST00gJ2F1dG92YWN1dW1fZnJlZXpl X21heF9hZ2U9KFswLTldKiknKSBBUyBhdXRvdmFjdXVtX2ZyZWV6ZV9tYXhf YWdlLAorICAgIHN1YnN0cmluZyhhcnJheV90b19zdHJpbmcoYy5yZWxvcHRp b25zLCAnLCcpCisgICAgICBGUk9NICdhdXRvdmFjdXVtX2ZyZWV6ZV90YWJs ZV9hZ2U9KFswLTldKiknKSBBUyBhdXRvdmFjdXVtX2ZyZWV6ZV90YWJsZV9h Z2UsCisgICAgc3Vic3RyaW5nKGFycmF5X3RvX3N0cmluZyh0c3QucmVsb3B0 aW9ucywgJywnKQorICAgICAgRlJPTSAnYXV0b3ZhY3V1bV9lbmFibGVkPShb YS16fDAtOV0qKScpIEFTIHRvYXN0X2F1dG92YWN1dW1fZW5hYmxlZCwKKyAg ICBzdWJzdHJpbmcoYXJyYXlfdG9fc3RyaW5nKHRzdC5yZWxvcHRpb25zLCAn LCcpCisgICAgICBGUk9NICdhdXRvdmFjdXVtX3ZhY3V1bV90aHJlc2hvbGQ9 KFswLTldKiknKSBBUyB0b2FzdF9hdXRvdmFjdXVtX3ZhY3V1bV90aHJlc2hv bGQsCisgICAgc3Vic3RyaW5nKGFycmF5X3RvX3N0cmluZyh0c3QucmVsb3B0 aW9ucywgJywnKQorICAgICAgRlJPTSAnYXV0b3ZhY3V1bV92YWN1dW1fc2Nh bGVfZmFjdG9yPShbMC05XSpbLl1bMC05XSopJykgQVMgdG9hc3RfYXV0b3Zh Y3V1bV92YWN1dW1fc2NhbGVfZmFjdG9yLAorICAgIHN1YnN0cmluZyhhcnJh eV90b19zdHJpbmcodHN0LnJlbG9wdGlvbnMsICcsJykKKyAgICAgIEZST00g J2F1dG92YWN1dW1fYW5hbHl6ZV90aHJlc2hvbGQ9KFswLTldKiknKSBBUyB0 b2FzdF9hdXRvdmFjdXVtX2FuYWx5emVfdGhyZXNob2xkLAorICAgIHN1YnN0 cmluZyhhcnJheV90b19zdHJpbmcodHN0LnJlbG9wdGlvbnMsICcsJykKKyAg ICAgIEZST00gJ2F1dG92YWN1dW1fYW5hbHl6ZV9zY2FsZV9mYWN0b3I9KFsw LTldKlsuXVswLTldKiknKSBBUyB0b2FzdF9hdXRvdmFjdXVtX2FuYWx5emVf c2NhbGVfZmFjdG9yLAorICAgIHN1YnN0cmluZyhhcnJheV90b19zdHJpbmco dHN0LnJlbG9wdGlvbnMsICcsJykKKyAgICAgIEZST00gJ2F1dG92YWN1dW1f dmFjdXVtX2Nvc3RfZGVsYXk9KFswLTldKiknKSBBUyB0b2FzdF9hdXRvdmFj dXVtX3ZhY3V1bV9jb3N0X2RlbGF5LAorICAgIHN1YnN0cmluZyhhcnJheV90 b19zdHJpbmcodHN0LnJlbG9wdGlvbnMsICcsJykKKyAgICAgIEZST00gJ2F1 dG92YWN1dW1fdmFjdXVtX2Nvc3RfbGltaXQ9KFswLTldKiknKSBBUyB0b2Fz dF9hdXRvdmFjdXVtX3ZhY3V1bV9jb3N0X2xpbWl0LAorICAgIHN1YnN0cmlu ZyhhcnJheV90b19zdHJpbmcodHN0LnJlbG9wdGlvbnMsICcsJykKKyAgICAg IEZST00gJ2F1dG92YWN1dW1fZnJlZXplX21pbl9hZ2U9KFswLTldKiknKSBB UyB0b2FzdF9hdXRvdmFjdXVtX2ZyZWV6ZV9taW5fYWdlLAorICAgIHN1YnN0 cmluZyhhcnJheV90b19zdHJpbmcodHN0LnJlbG9wdGlvbnMsICcsJykKKyAg ICAgIEZST00gJ2F1dG92YWN1dW1fZnJlZXplX21heF9hZ2U9KFswLTldKikn KSBBUyB0b2FzdF9hdXRvdmFjdXVtX2ZyZWV6ZV9tYXhfYWdlLAorICAgIHN1 YnN0cmluZyhhcnJheV90b19zdHJpbmcodHN0LnJlbG9wdGlvbnMsICcsJykK KyAgICAgIEZST00gJ2F1dG92YWN1dW1fZnJlZXplX3RhYmxlX2FnZT0oWzAt OV0qKScpIEFTIHRvYXN0X2F1dG92YWN1dW1fZnJlZXplX3RhYmxlX2FnZSwK KyAgICBjLnJlbG9wdGlvbnMgQVMgcmVsb3B0aW9ucywgdHN0LnJlbG9wdGlv bnMgQVMgdG9hc3RfcmVsb3B0aW9ucywKKyAgICAoQ0FTRSBXSEVOIGMucmVs dG9hc3RyZWxpZCA9IDAgVEhFTiBmYWxzZSBFTFNFIHRydWUgRU5EKSBBUyBo YXN0b2FzdHRhYmxlLAorICAgIChDQVNFIFdIRU4gKHN1YnN0cmluZyhhcnJh eV90b19zdHJpbmcoYy5yZWxvcHRpb25zLCAnLCcpCisgICAgICBGUk9NICdh dXRvdmFjdXVtX2VuYWJsZWQ9KFthLXp8MC05XSopJykpOjpib29sZWFuICBU SEVOIHRydWUgRUxTRSBmYWxzZSBFTkQpIEFTIGF1dG92YWN1dW1fY3VzdG9t LAorICAgIChDQVNFIFdIRU4gKHN1YnN0cmluZyhhcnJheV90b19zdHJpbmco dHN0LnJlbG9wdGlvbnMsICcsJykKKyAgICAgIEZST00gJ2F1dG92YWN1dW1f ZW5hYmxlZD0oW2EtenwwLTldKiknKSk6OmJvb2xlYW4gIEFORCBjLnJlbHRv YXN0cmVsaWQgPSAwIFRIRU4gdHJ1ZSBFTFNFIGZhbHNlIEVORCkgQVMgdG9h c3RfYXV0b3ZhY2N1bQorRlJPTQorICAgIHBnX2NsYXNzIGMKK0xFRlQgT1VU RVIgSk9JTiBwZ19uYW1lc3BhY2UgbnNwIG9uIG5zcC5vaWQgPSBjLnJlbG5h bWVzcGFjZQorTEVGVCBPVVRFUiBKT0lOIHBnX3RhYmxlc3BhY2Ugc3BjIG9u IHNwYy5vaWQ9Yy5yZWx0YWJsZXNwYWNlCitMRUZUIE9VVEVSIEpPSU4gcGdf ZGVzY3JpcHRpb24gZGVzIE9OIChkZXMub2Jqb2lkPWMub2lkIGFuZCBkZXMu b2Jqc3ViaWQ9MCBBTkQgZGVzLmNsYXNzb2lkPSdwZ19jbGFzcyc6OnJlZ2Ns YXNzKQorTEVGVCBPVVRFUiBKT0lOIHBnX2NsYXNzIHRzdCBPTiB0c3Qub2lk ID0gYy5yZWx0b2FzdHJlbGlkCisgICAgV0hFUkUgKChjLnJlbGhhc3J1bGVz IEFORCAoRVhJU1RTICgKKyAgICAgICAgU0VMRUNUCisgICAgICAgICAgICBy LnJ1bGVuYW1lCisgICAgICAgIEZST00KKyAgICAgICAgICAgIHBnX3Jld3Jp dGUgcgorICAgICAgICBXSEVSRQorICAgICAgICAgICAgKChyLmV2X2NsYXNz ID0gYy5vaWQpCisgICAgICAgICAgICAgICAgQU5EIChicGNoYXIoci5ldl90 eXBlKSA9ICcxJzo6YnBjaGFyKSkgKSkpCisgICAgICAgICAgICBBTkQgKGMu cmVsa2luZCA9ICdtJzo6Y2hhcikKKyAgICAgICAgICApCit7JSBpZiAodmlk IGFuZCBkYXRsYXN0c3lzb2lkKSAlfQorICAgIEFORCBjLm9pZCA9IHt7dmlk fX06Om9pZAoreyUgZWxpZiBzY2lkICV9CisgICAgQU5EIGMucmVsbmFtZXNw YWNlID0ge3tzY2lkfX06Om9pZAorT1JERVIgQlkKKyAgICBjLnJlbG5hbWUK K3slIGVuZGlmICV9CisKK3slIGVsaWYgdHlwZSA9PSAncm9sZXMnICV9CitT RUxFQ1QKKyAgICBwci5yb2xuYW1lCitGUk9NCisgICAgcGdfcm9sZXMgcHIK K1dIRVJFCisgICAgcHIucm9sY2FubG9naW4KK09SREVSIEJZCisgICAgcHIu cm9sbmFtZQorCit7JSBlbGlmIHR5cGUgPT0gJ3NjaGVtYXMnICV9CitTRUxF Q1QKKyAgICBuc3AubnNwbmFtZQorRlJPTQorICAgIHBnX25hbWVzcGFjZSBu c3AKK1dIRVJFCisgICAgKG5zcC5uc3BuYW1lIE5PVCBMSUtFIEUncGdcXF8l JworICAgICAgICBBTkQgbnNwLm5zcG5hbWUgIT0gJ2luZm9ybWF0aW9uX3Nj aGVtYScpCit7JSBlbmRpZiAlfQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4v YnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVt YXMvdmlld3MvdGVtcGxhdGVzL212aWV3L3BwYXMvOS4zX3BsdXMvc3FsL3Vw ZGF0ZS5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMv c2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy92aWV3cy90ZW1wbGF0ZXMvbXZp ZXcvcHBhcy85LjNfcGx1cy9zcWwvdXBkYXRlLnNxbApuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwLi5kODE0NmIxCi0tLSAvZGV2L251bGwK KysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZl cnMvZGF0YWJhc2VzL3NjaGVtYXMvdmlld3MvdGVtcGxhdGVzL212aWV3L3Bw YXMvOS4zX3BsdXMvc3FsL3VwZGF0ZS5zcWwKQEAgLTAsMCArMSwxNTQgQEAK K3sjID09PT09PT09PT09PT09PT09PT09PSBVcGRhdGUgVmlldyA9PT09PT09 PT09PT09PT09PT09I30KK3slIGltcG9ydCAnbWFjcm9zL3NlY3VyaXR5Lm1h Y3JvcycgYXMgU0VDTEFCTEUgJX0KK3slIGltcG9ydCAnbWFjcm9zL3NjaGVt YXMvcHJpdmlsZWdlLm1hY3JvcycgYXMgUFJJVklMRUdFICV9Cit7JS0gaWYg ZGF0YSAtJX0KK3slIHNldCB2aWV3X25hbWUgPSBkYXRhLm5hbWUgaWYgZGF0 YS5uYW1lIGVsc2Ugb19kYXRhLm5hbWUgJX0KK3slIHNldCB2aWV3X3NjaGVt YSA9IGRhdGEuc2NoZW1hIGlmIGRhdGEuc2NoZW1hIGVsc2Ugb19kYXRhLnNj aGVtYSAlfQoreyUgc2V0IGRlZiA9IGRhdGEuZGVmaW5pdGlvbi5yc3RyaXAo JzsnKSBpZiBkYXRhLmRlZmluaXRpb24gJX0KK3sjID09PT09IFJlbmFtZSBt YXQgdmlldyA9PT09PSAjfQoreyUgaWYgZGF0YS5uYW1lIGFuZCBkYXRhLm5h bWUgIT0gb19kYXRhLm5hbWUgJX0KK0FMVEVSIE1BVEVSSUFMSVpFRCBWSUVX IHt7IGNvbm58cXRJZGVudChvX2RhdGEuc2NoZW1hLCBvX2RhdGEubmFtZSkg fX0KKyAgUkVOQU1FIFRPIHt7IGNvbm58cXRJZGVudChkYXRhLm5hbWUpIH19 OworCit7JSBlbmRpZiAlfQoreyMgPT09PT0gQWx0ZXIgc2NoZW1hIHZpZXcg PT09PT0gI30KK3slIGlmIGRhdGEuc2NoZW1hIGFuZCBkYXRhLnNjaGVtYSAh PSBvX2RhdGEuc2NoZW1hICV9CitBTFRFUiBNQVRFUklBTElaRUQgVklFVyB7 eyBjb25ufHF0SWRlbnQob19kYXRhLnNjaGVtYSwgdmlld19uYW1lICkgfX0K KyAgU0VUIFNDSEVNQSB7eyBjb25ufHF0SWRlbnQoZGF0YS5zY2hlbWEpIH19 OworCit7JSBlbmRpZiAlfQoreyMgPT09PT0gQWx0ZXIgVGFibGUgb3duZXIg PT09PT0gI30KK3slIGlmIGRhdGEub3duZXIgYW5kIGRhdGEub3duZXIgIT0g b19kYXRhLm93bmVyICV9CitBTFRFUiBUQUJMRSB7eyBjb25ufHF0SWRlbnQo dmlld19zY2hlbWEsIHZpZXdfbmFtZSkgfX0KKyAgT1dORVIgVE8ge3sgY29u bnxxdElkZW50KGRhdGEub3duZXIpIH19OworCit7JSBlbmRpZiAlfQoreyUg aWYgZGF0YVsndmFjdXVtX2RhdGEnXVsncmVzZXQnXXxsZW5ndGggPiAwICV9 CitBTFRFUiBNQVRFUklBTElaRUQgVklFVyB7eyBjb25ufHF0SWRlbnQodmll d19zY2hlbWEsIHZpZXdfbmFtZSkgfX0KK1JFU0VUKAoreyUgZm9yIGZpZWxk IGluIGRhdGFbJ3ZhY3V1bV9kYXRhJ11bJ3Jlc2V0J10gJX0KKyAge3sgZmll bGQubmFtZSB9fXslIGlmIG5vdCBsb29wLmxhc3QgICV9LHslIGVuZGlmICV9 e3sgJ1xyJyB9fQoreyUgZW5kZm9yICV9CispOworeyUgZW5kaWYgJX0KK3sj ID09PT09IEZpcnN0IERyb3AgYW5kIHRoZW4gY3JlYXRlIG1hdCB2aWV3ID09 PT09ICN9Cit7JSBpZiBkZWYgYW5kIGRlZiAhPSBvX2RhdGEuZGVmaW5pdGlv bi5yc3RyaXAoJzsnKSAlfQoreyUgaWYgZGF0YS5maWxsZmFjdG9yIG9yICgg ZGF0YVsndmFjdXVtX2RhdGEnXVsnY2hhbmdlZCddfGxlbmd0aCA+IDAgKSAl fQorRFJPUCBNQVRFUklBTElaRUQgVklFVyB7eyBjb25ufHF0SWRlbnQodmll d19zY2hlbWEsIHZpZXdfbmFtZSkgfX07CitDUkVBVEUgTUFURVJJQUxJWkVE IFZJRVcge3sgY29ubnxxdElkZW50KHZpZXdfc2NoZW1hLCB2aWV3X25hbWUp IH19CitXSVRIKAoreyUgaWYgZGF0YS5maWxsZmFjdG9yICV9CisgIEZJTExG QUNUT1IgPSB7eyBkYXRhLmZpbGxmYWN0b3IgfX17JSBpZiBkYXRhWyd2YWN1 dW1fZGF0YSddWydjaGFuZ2VkJ118bGVuZ3RoID4gMCAlfSx7JSBlbmRpZiAl fXt7ICdccicgfX0KK3slIGVuZGlmICV9Cit7JSBpZiBkYXRhWyd2YWN1dW1f ZGF0YSddWydjaGFuZ2VkJ118bGVuZ3RoID4gMCAlfQoreyUgZm9yIGZpZWxk IGluIGRhdGFbJ3ZhY3V1bV9kYXRhJ11bJ2NoYW5nZWQnXSAlfQorICB7eyBm aWVsZC5uYW1lIH19ID0ge3sgZmllbGQudmFsdWV8bG93ZXIgfX17JSBpZiBu b3QgbG9vcC5sYXN0ICAlfSx7JSBlbmRpZiAlfXt7ICdccicgfX0KK3slIGVu ZGZvciAlfQoreyUgZW5kaWYgJX0KKykKKyBBUwore3sgZGVmIH19Cit7JSBp ZiBkYXRhLndpdGhfZGF0YSAlfQorIFdJVEggREFUQTsKKworeyUgZWxzZSAl fQorIFdJVEggTk8gREFUQTsKKworeyUgZW5kaWYgJX0KK3slIGVuZGlmICV9 Cit7JSBlbHNlICV9Cit7IyA9PT09PT09IEFsdGVyIFRhYmxlc3BhY2UgPT09 PT09PT09ICN9Cit7JS0gaWYgZGF0YS5zcGNvaWQgYW5kIG9fZGF0YS5zcGNv aWQgIT0gZGF0YS5zcGNvaWQgIC0lfQorQUxURVIgTUFURVJJQUxJWkVEIFZJ RVcge3sgY29ubnxxdElkZW50KHZpZXdfc2NoZW1hLCB2aWV3X25hbWUpIH19 CisgIFNFVCBUQUJMRVNQQUNFIHt7IGRhdGEuc3Bjb2lkIH19OworCit7JSBl bmRpZiAlfQoreyMgPT09PT09PSBTRVQvUkVTRVQgRmlsbGZhY3RvciA9PT09 PT09PT0gI30KK3slIGlmIGRhdGEuZmlsbGZhY3RvciBhbmQgb19kYXRhLmZp bGxmYWN0b3IgIT0gZGF0YS5maWxsZmFjdG9yICV9CitBTFRFUiBNQVRFUklB TElaRUQgVklFVyB7eyBjb25ufHF0SWRlbnQodmlld19zY2hlbWEsIHZpZXdf bmFtZSkgfX0KK1NFVChGSUxMRkFDVE9SID0ge3sgZGF0YS5maWxsZmFjdG9y IH19KTsKKworeyUgZWxpZiBkYXRhLmZpbGxmYWN0b3IgPT0gJycgJX0KK0FM VEVSIE1BVEVSSUFMSVpFRCBWSUVXIHt7IGNvbm58cXRJZGVudCh2aWV3X3Nj aGVtYSwgdmlld19uYW1lKSB9fQorUkVTRVQoCisgIEZJTExGQUNUT1IKKyk7 CisKK3slIGVuZGlmICV9Cit7IyA9PT09PSBDaGVjayBmb3Igd2l0aF9kYXRh IHByb3BlcnR5ID09PT09ICN9Cit7JSBpZiBkYXRhLndpdGhfZGF0YSBpcyBk ZWZpbmVkIGFuZCBvX2RhdGEud2l0aF9kYXRhfGxvd2VyICE9IGRhdGEud2l0 aF9kYXRhfGxvd2VyICAlfQorUkVGUkVTSCBNQVRFUklBTElaRUQgVklFVyB7 eyBjb25ufHF0SWRlbnQodmlld19zY2hlbWEsIHZpZXdfbmFtZSkgfX0gV0lU SHt7ICcgTk8nIGlmIGRhdGEud2l0aF9kYXRhfGxvd2VyID09ICdmYWxzZScg ZWxzZSAnJyB9fSBEQVRBOworCit7JSBlbmRpZiAlfQoreyMgPT09PT0gQ2hl Y2sgZm9yIFRhYmxlIHRhYiBwcm9wZXJ0aWVzID09PT09ICN9Cit7JSBpZiBk YXRhLmF1dG92YWN1dW1fY3VzdG9tIGlzIGRlZmluZWQgYW5kIGRhdGEuYXV0 b3ZhY3V1bV9jdXN0b218bG93ZXIgPT0gJ2ZhbHNlJyAlfQorQUxURVIgTUFU RVJJQUxJWkVEIFZJRVcge3sgY29ubnxxdElkZW50KHZpZXdfc2NoZW1hLCB2 aWV3X25hbWUpIH19CitSRVNFVCgKKyAgYXV0b3ZhY3V1bV92YWN1dW1fdGhy ZXNob2xkLAorICBhdXRvdmFjdXVtX2FuYWx5emVfdGhyZXNob2xkLAorICBh dXRvdmFjdXVtX3ZhY3V1bV9zY2FsZV9mYWN0b3IsCisgIGF1dG92YWN1dW1f YW5hbHl6ZV9zY2FsZV9mYWN0b3IsCisgIGF1dG92YWN1dW1fdmFjdXVtX2Nv c3RfZGVsYXksCisgIGF1dG92YWN1dW1fdmFjdXVtX2Nvc3RfbGltaXQsCisg IGF1dG92YWN1dW1fZnJlZXplX21pbl9hZ2UsCisgIGF1dG92YWN1dW1fZnJl ZXplX21heF9hZ2UsCisgIGF1dG92YWN1dW1fZnJlZXplX3RhYmxlX2FnZQor KTsKKworeyUgZWxpZihkYXRhWyd2YWN1dW1fZGF0YSddWydjaGFuZ2VkJ118 bGVuZ3RoID4gMCkgJX0KK3slIGlmIGRhdGFbJ3ZhY3V1bV9kYXRhJ11bJ2No YW5nZWQnXXxsZW5ndGggPT0gMSBhbmQgZGF0YVsndmFjdXVtX2RhdGEnXVsn Y2hhbmdlZCddWzBdWyduYW1lJ10gIT0gJ2F1dG92YWN1dW1fZW5hYmxlZCcg JX0KK0FMVEVSIE1BVEVSSUFMSVpFRCBWSUVXIHt7IGNvbm58cXRJZGVudChk YXRhLnNjaGVtYSwgZGF0YS5uYW1lKSB9fSBTRVQoCit7JSBmb3IgZmllbGQg aW4gZGF0YVsndmFjdXVtX2RhdGEnXVsnY2hhbmdlZCddICV9Cit7JSBpZiBm aWVsZC52YWx1ZSAhPSBOb25lICV9CisgIHt7IGZpZWxkLm5hbWUgfX0gPSB7 eyBmaWVsZC52YWx1ZXxsb3dlciB9fXslIGlmIG5vdCBsb29wLmxhc3QgICV9 LHslIGVuZGlmICV9e3sgJ1xyJyB9fQoreyUgZW5kaWYgJX0KK3slIGVuZGZv ciAlfQorKTsKK3slIGVuZGlmICV9CisKK3slIGVuZGlmICV9eyMgPT09PT0g RW5kIGNoZWNrIGZvciBjdXN0b20gYXV0b3ZhY2N1bSA9PT09PSAjfQoreyUg ZW5kaWYgJX17IyA9PT09PSBFbmQgYmxvY2sgZm9yIGNoZWNrIGRhdGEgZGVm aW5pdGlvbiA9PT09PSAjfQoreyUtIGlmIGRhdGEuY29tbWVudCBhbmQgZGF0 YS5jb21tZW50ICE9IG9fZGF0YS5jb21tZW50IC0lfQorQ09NTUVOVCBPTiBW SUVXIHt7IGNvbm58cXRJZGVudCh2aWV3X3NjaGVtYSwgdmlld19uYW1lKSB9 fQorICBJUyB7eyBkYXRhLmNvbW1lbnR8cXRMaXRlcmFsIH19OworCit7JSBl bmRpZiAlfQoreyMgPT09PT09PT09PT09PSBUaGUgU1FMIGdlbmVyYXRlZCBi ZWxvdyB3aWxsIGNoYW5nZSBwcml2aWxlZ2VzID09PT09PT09PT09PT0gI30K K3slIGlmIGRhdGEuZGF0YWNsICV9Cit7JSBpZiAnZGVsZXRlZCcgaW4gZGF0 YS5kYXRhY2wgJX0KK3slIGZvciBwcml2IGluIGRhdGEuZGF0YWNsLmRlbGV0 ZWQgJX0KK3t7IFBSSVZJTEVHRS5SRVNFVEFMTChjb25uLCAnVEFCTEUnLCBw cml2LmdyYW50ZWUsIGRhdGEubmFtZSwgZGF0YS5zY2hlbWEpIH19Cit7JSBl bmRmb3IgJX0KK3slIGVuZGlmICV9Cit7JSBpZiAnY2hhbmdlZCcgaW4gZGF0 YS5kYXRhY2wgJX0KK3slIGZvciBwcml2IGluIGRhdGEuZGF0YWNsLmNoYW5n ZWQgLSV9Cit7eyBQUklWSUxFR0UuVU5TRVRBTEwoY29ubiwgJ1RBQkxFJywg cHJpdi5ncmFudGVlLCBkYXRhLm5hbWUsIGRhdGEuc2NoZW1hKSB9fQore3sg UFJJVklMRUdFLlNFVChjb25uLCAnVEFCTEUnLCBwcml2LmdyYW50ZWUsIGRh dGEubmFtZSwgcHJpdi53aXRob3V0X2dyYW50LCBwcml2LndpdGhfZ3JhbnQs IGRhdGEuc2NoZW1hKSB9fQoreyUtIGVuZGZvciAlfQoreyUgZW5kaWYgJX0K K3slIGlmICdhZGRlZCcgaW4gZGF0YS5kYXRhY2wgJX0KK3slIGZvciBwcml2 IGluIGRhdGEuZGF0YWNsLmFkZGVkICV9Cit7eyBQUklWSUxFR0UuU0VUKGNv bm4sICdUQUJMRScsIHByaXYuZ3JhbnRlZSwgZGF0YS5uYW1lLCBwcml2Lndp dGhvdXRfZ3JhbnQsIHByaXYud2l0aF9ncmFudCwgZGF0YS5zY2hlbWEpIH19 Cit7JSBlbmRmb3IgJX0KK3slIGVuZGlmICV9Cit7JSBlbmRpZiAlfQoreyMg PT09PT09PT09PT09PT0gVGhlIFNRTCBnZW5lcmF0ZWQgYmVsb3cgd2lsbCBj aGFuZ2UgU2VjdXJpdHkgTGFiZWwgPT09PT09PT09ICN9Cit7JSBpZiBkYXRh LnNlY2xhYmVscyBpcyBub3Qgbm9uZSBhbmQgZGF0YS5zZWNsYWJlbHN8bGVu Z3RoID4gMCAlfQoreyUgc2V0IHNlY2xhYmVscyA9IGRhdGEuc2VjbGFiZWxz ICV9Cit7JSBpZiAnZGVsZXRlZCcgaW4gc2VjbGFiZWxzIGFuZCBzZWNsYWJl bHMuZGVsZXRlZHxsZW5ndGggPiAwICV9Cit7JSBmb3IgciBpbiBzZWNsYWJl bHMuZGVsZXRlZCAlfQore3sgU0VDTEFCTEUuRFJPUChjb25uLCAnVklFVycs IGRhdGEubmFtZSwgci5wcm92aWRlcikgfX0KK3slIGVuZGZvciAlfQoreyUg ZW5kaWYgJX0KK3slIGlmICdhZGRlZCcgaW4gc2VjbGFiZWxzIGFuZCBzZWNs YWJlbHMuYWRkZWR8bGVuZ3RoID4gMCAlfQoreyUgZm9yIHIgaW4gc2VjbGFi ZWxzLmFkZGVkICV9Cit7eyBTRUNMQUJMRS5BUFBMWShjb25uLCAnVklFVycs IGRhdGEubmFtZSwgci5wcm92aWRlciwgci5zZWN1cml0eV9sYWJlbCkgfX0K K3slIGVuZGZvciAlfQoreyUgZW5kaWYgJX0KK3slIGlmICdjaGFuZ2VkJyBp biBzZWNsYWJlbHMgYW5kIHNlY2xhYmVscy5jaGFuZ2VkfGxlbmd0aCA+IDAg JX0KK3slIGZvciByIGluIHNlY2xhYmVscy5jaGFuZ2VkICV9Cit7eyBTRUNM QUJMRS5BUFBMWShjb25uLCAnVklFVycsIGRhdGEubmFtZSwgci5wcm92aWRl ciwgci5zZWN1cml0eV9sYWJlbCkgfX0KK3slIGVuZGZvciAlfQoreyUgZW5k aWYgJX0KK3slIGVuZGlmICV9Cit7JSBlbmRpZiAlfQpkaWZmIC0tZ2l0IGEv d2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0 YWJhc2VzL3NjaGVtYXMvdmlld3MvdGVtcGxhdGVzL212aWV3L3BwYXMvOS4z X3BsdXMvc3FsL3ZpZXdfaWQuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9z ZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdmlld3Mv dGVtcGxhdGVzL212aWV3L3BwYXMvOS4zX3BsdXMvc3FsL3ZpZXdfaWQuc3Fs Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQxOTJhODAK LS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZl cl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy92aWV3cy90ZW1w bGF0ZXMvbXZpZXcvcHBhcy85LjNfcGx1cy9zcWwvdmlld19pZC5zcWwKQEAg LTAsMCArMSw0IEBACit7IyA9PT09PSBCZWxvdyB3aWxsIHByb3ZpZGUgdmll dyBpZCBmb3IgbGFzdCBjcmVhdGVkIHZpZXcgPT09PSAjfQoreyUgaWYgZGF0 YSAlfQorU0VMRUNUIGMub2lkIEZST00gcGdfY2xhc3MgYyBXSEVSRSBjLnJl bG5hbWUgPSAne3sgZGF0YS5uYW1lIH19JzsKK3slIGVuZGlmICV9CmRpZmYg LS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2Vy dmVycy9kYXRhYmFzZXMvc2NoZW1hcy92aWV3cy90ZW1wbGF0ZXMvdmlldy9j c3Mvdmlldy5jc3MgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91 cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy92aWV3cy90ZW1wbGF0ZXMv dmlldy9jc3Mvdmlldy5jc3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMC4uODllYWU0ZQotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2Fk bWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9z Y2hlbWFzL3ZpZXdzL3RlbXBsYXRlcy92aWV3L2Nzcy92aWV3LmNzcwpAQCAt MCwwICsxLDEyIEBACisuaWNvbi12aWV3eworICBiYWNrZ3JvdW5kLWltYWdl OiB1cmwoJ3t7IHVybF9mb3IoJ05PREUtdmlldy5zdGF0aWMnLCBmaWxlbmFt ZT0naW1nL3ZpZXcucG5nJykgfX0nKSAhaW1wb3J0YW50OworICBib3JkZXIt cmFkaXVzOiAxMHB4OworICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0 OworICBhbGlnbi1jb250ZW50OiBjZW50ZXI7CisgIHZlcnRpY2FsLWFsaWdu OiBtaWRkbGU7CisgIGhlaWdodDogMS4zZW07Cit9CisKKy5zcWxfZmllbGRf aGVpZ2h0XzE0MCB7CisgIGhlaWdodDogMTQwcHg7Cit9CmRpZmYgLS1naXQg YS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9k YXRhYmFzZXMvc2NoZW1hcy92aWV3cy90ZW1wbGF0ZXMvdmlldy9qcy92aWV3 LmpzIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZl cnMvZGF0YWJhc2VzL3NjaGVtYXMvdmlld3MvdGVtcGxhdGVzL3ZpZXcvanMv dmlldy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5k MWE4OWU1Ci0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nl ci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdmll d3MvdGVtcGxhdGVzL3ZpZXcvanMvdmlldy5qcwpAQCAtMCwwICsxLDI2NyBA QAorZGVmaW5lKAorICBbJ2pxdWVyeScsICd1bmRlcnNjb3JlJywgJ3VuZGVy c2NvcmUuc3RyaW5nJywgJ3BnYWRtaW4nLAorICAgICdwZ2FkbWluLmJyb3dz ZXInLCAnY29kZW1pcnJvcicsICdwZ2FkbWluLmJyb3dzZXIuc2VydmVyLnBy aXZpbGVnZSddLAorCitmdW5jdGlvbigkLCBfLCBTLCBwZ0FkbWluLCBwZ0Jy b3dzZXIsIENvZGVNaXJyb3IpIHsKKworICAvKioKKyAgICBDcmVhdGUgYW5k IGFkZCBhIHZpZXcgY29sbGVjdGlvbiBpbnRvIG5vZGVzCisgICAgQHBhcmFt IHt2YXJpYWJsZX0gbGFiZWwgLSBMYWJlbCBmb3IgTm9kZQorICAgIEBwYXJh bSB7dmFyaWFibGV9IHR5cGUgLSBUeXBlIG9mIE5vZGUKKyAgICBAcGFyYW0g e3ZhcmlhYmxlfSBjb2x1bW5zIC0gTGlzdCBvZiBjb2x1bW5zIHRvCisgICAg ICBkaXNwbGF5IHVuZGVyIHVuZGVyIHByb3BlcnRpZXMuCisgICAqLworICBp ZiAoIXBnQnJvd3Nlci5Ob2Rlc1snY29sbC12aWV3J10pIHsKKyAgICB2YXIg dmlld3M9IHBnQWRtaW4uQnJvd3Nlci5Ob2Rlc1snY29sbC12aWV3J10gPQor ICAgICAgcGdBZG1pbi5Ccm93c2VyLkNvbGxlY3Rpb24uZXh0ZW5kKHsKKyAg ICAgICAgbm9kZTogJ3ZpZXcnLAorICAgICAgICBsYWJlbDogJ3t7IF8oIlZp ZXdzIikgfX0nLAorICAgICAgICB0eXBlOiAnY29sbC12aWV3JywKKyAgICAg ICAgY29sdW1uczogWyJuYW1lIiwgIm93bmVyIl0KKyAgICAgIH0pOworICB9 CisKKyAgLyoqCisgICAgQ3JlYXRlIGFuZCBBZGQgYSBWaWV3IE5vZGUgaW50 byBub2RlcworICAgIEBwYXJhbSB7dmFyaWFibGV9IHBhcmVudF90eXBlIC0g VGhlIGxpc3Qgb2Ygbm9kZXMKKyAgICB1bmRlciB3aGljaCB0aGlzIG5vZGUg dG8gZGlzcGxheQorICAgIEBwYXJhbSB7dmFyaWFibGV9IHR5cGUgLSBUeXBl IG9mIE5vZGUKKyAgICBAcGFyYW0ge3ZhcmlhYmxlfSBoYXNTUUwgLSBUbyBz aG93IFNRTCB0YWIKKyAgICBAcGFyYW0ge3ZhcmlhYmxlfSBjYW5Ecm9wIC0g QWRkcyBkcm9wIHZpZXcgb3B0aW9uCisgICAgaW4gdGhlIGNvbnRleHQgbWVu dQorICAgIEBwYXJhbSB7dmFyaWFibGV9IGNhbkRyb3BDYXNjYWRlIC0gQWRk cyBkcm9wIENhc2NhZGUKKyAgICB2aWV3IG9wdGlvbiBpbiB0aGUgY29udGV4 dCBtZW51CisgICAqLworICBpZiAoIXBnQnJvd3Nlci5Ob2Rlc1sndmlldydd KSB7CisgICAgcGdBZG1pbi5Ccm93c2VyLk5vZGVzWyd2aWV3J10gPSBwZ0Fk bWluLkJyb3dzZXIuTm9kZS5leHRlbmQoeworICAgICAgcGFyZW50X3R5cGU6 IFsnc2NoZW1hJywgJ2NhdGFsb2cnXSwKKyAgICAgIHR5cGU6ICd2aWV3JywK KyAgICAgIHNxbEFsdGVySGVscDogJ3NxbC1hbHRlcnZpZXcuaHRtbCcsCisg ICAgICBzcWxDcmVhdGVIZWxwOiAnc3FsLWNyZWF0ZXZpZXcuaHRtbCcsCisg ICAgICBsYWJlbDogJ3t7IF8oIlZpZXciKSB9fScsCisgICAgICBoYXNTUUw6 ICB0cnVlLAorICAgICAgaGFzRGVwZW5kczogdHJ1ZSwKKyAgICAgIGNvbGxl Y3Rpb25fdHlwZTogJ2NvbGwtdmlldycsCisgICAgICBjYW5Ecm9wOiBwZ0Jy b3dzZXIuTm9kZXNbJ3NjaGVtYSddLmNhbkNoaWxkRHJvcCwKKyAgICAgIGNh bkRyb3BDYXNjYWRlOiBwZ0Jyb3dzZXIuTm9kZXNbJ3NjaGVtYSddLmNhbkNo aWxkRHJvcCwKKyAgICAgIEluaXQ6IGZ1bmN0aW9uKCkgeworCisgICAgICAg IC8vIEF2b2lkIG11bGl0cGxlIHJlZ2lzdHJhdGlvbiBvZiBtZW51cworICAg ICAgICBpZiAodGhpcy5pbml0aWFsaXplZCkKKyAgICAgICAgICByZXR1cm47 CisKKyAgICAgICAgdGhpcy5pbml0aWFsaXplZCA9IHRydWU7CisKKyAgICAg ICAgLyoqCisgICAgICAgICAgQWRkICJjcmVhdGUgdmlldyIgbWVudSBvcHRp b24gaW50byBjb250ZXh0IGFuZCBvYmplY3QgbWVudQorICAgICAgICAgIGZv ciB0aGUgZm9sbG93aW5nIG5vZGVzOgorICAgICAgICAgIGNvbGwtdmlldywg dmlldyBhbmQgc2NoZW1hLgorICAgICAgICAgIEBwcm9wZXJ0eSB7ZGF0YX0g LSBBbGxvdyBjcmVhdGUgdmlldyBvcHRpb24gb24gc2NoZW1hIG5vZGUgb3IK KyAgICAgICAgICBzeXN0ZW0gdmlldyBub2Rlcy4KKyAgICAgICAgICovCisg ICAgICAgIHBnQnJvd3Nlci5hZGRfbWVudXMoW3sKKyAgICAgICAgICBuYW1l OiAnY3JlYXRlX3ZpZXdfb25fY29sbCcsIG5vZGU6ICdjb2xsLXZpZXcnLCBt b2R1bGU6IHRoaXMsCisgICAgICAgICAgYXBwbGllczogWydvYmplY3QnLCAn Y29udGV4dCddLCBjYWxsYmFjazogJ3Nob3dfb2JqX3Byb3BlcnRpZXMnLAor ICAgICAgICAgIGNhdGVnb3J5OiAnY3JlYXRlJywgcHJpb3JpdHk6IDQsIGxh YmVsOiAne3sgXygiVmlldy4uLiIpIH19JywKKyAgICAgICAgICBpY29uOiAn d2NUYWJJY29uIGljb24tdmlldycsIGRhdGE6IHthY3Rpb246ICdjcmVhdGUn LCBjaGVjazogdHJ1ZX0sCisgICAgICAgICAgZW5hYmxlOiAnY2FuQ3JlYXRl JworICAgICAgICB9LHsKKyAgICAgICAgICBuYW1lOiAnY3JlYXRlX3ZpZXcn LCBub2RlOiAndmlldycsIG1vZHVsZTogdGhpcywKKyAgICAgICAgICBhcHBs aWVzOiBbJ29iamVjdCcsICdjb250ZXh0J10sIGNhbGxiYWNrOiAnc2hvd19v YmpfcHJvcGVydGllcycsCisgICAgICAgICAgY2F0ZWdvcnk6ICdjcmVhdGUn LCBwcmlvcml0eTogNCwgbGFiZWw6ICd7eyBfKCJWaWV3Li4uIikgfX0nLAor ICAgICAgICAgIGljb246ICd3Y1RhYkljb24gaWNvbi12aWV3JywgZGF0YTog e2FjdGlvbjogJ2NyZWF0ZScsIGNoZWNrOiB0cnVlfSwKKyAgICAgICAgICBl bmFibGU6ICdjYW5DcmVhdGUnCisgICAgICAgIH0seworICAgICAgICAgIG5h bWU6ICdjcmVhdGVfdmlldycsIG5vZGU6ICdzY2hlbWEnLCBtb2R1bGU6IHRo aXMsCisgICAgICAgICAgYXBwbGllczogWydvYmplY3QnLCAnY29udGV4dCdd LCBjYWxsYmFjazogJ3Nob3dfb2JqX3Byb3BlcnRpZXMnLAorICAgICAgICAg IGNhdGVnb3J5OiAnY3JlYXRlJywgcHJpb3JpdHk6IDQsIGxhYmVsOiAne3sg XygiVmlldy4uLiIpIH19JywKKyAgICAgICAgICBpY29uOiAnd2NUYWJJY29u IGljb24tdmlldycsIGRhdGE6IHthY3Rpb246ICdjcmVhdGUnLCBjaGVjazog ZmFsc2V9LAorICAgICAgICAgIGVuYWJsZTogJ2NhbkNyZWF0ZScKKyAgICAg ICAgfQorICAgICAgICBdKTsKKyAgICAgIH0sCisKKyAgICAgIC8qKgorICAg ICAgICBEZWZpbmUgbW9kZWwgZm9yIHRoZSB2aWV3IG5vZGUgYW5kIHNwZWNp ZnkgdGhlCisgICAgICAgIHByb3BlcnRpZXMgb2YgdGhlIG1vZGVsIGluIHNj aGVtYS4KKyAgICAgICAqLworICAgICAgbW9kZWw6IHBnQWRtaW4uQnJvd3Nl ci5Ob2RlLk1vZGVsLmV4dGVuZCh7CisgICAgICAgIGluaXRpYWxpemU6IGZ1 bmN0aW9uKGF0dHJzLCBhcmdzKSB7CisgICAgICAgICAgdmFyIGlzTmV3ID0g KF8uc2l6ZShhdHRycykgPT09IDApOworICAgICAgICAgIGlmIChpc05ldykg eworICAgICAgICAgICAgLy8gU2V0IFNlbGVjdGVkIFNjaGVtYQorICAgICAg ICAgICAgc2NoZW1hX2lkID0gYXJncy5ub2RlX2luZm8uc2NoZW1hLl9pZDsK KyAgICAgICAgICAgIHRoaXMuc2V0KHsnc2NoZW1hJzogc2NoZW1hX2lkfSwg e3NpbGVudDogdHJ1ZX0pOworCisgICAgICAgICAgICAvLyBTZXQgQ3VycmVu dCBVc2VyCisgICAgICAgICAgICB2YXIgdXNlckluZm8gPSBwZ0Jyb3dzZXIu c2VydmVySW5mb1thcmdzLm5vZGVfaW5mby5zZXJ2ZXIuX2lkXS51c2VyOwor ICAgICAgICAgICAgdGhpcy5zZXQoeydvd25lcic6IHVzZXJJbmZvLm5hbWV9 LCB7c2lsZW50OiB0cnVlfSk7CisgICAgICAgICAgfQorICAgICAgICAgIHBn QWRtaW4uQnJvd3Nlci5Ob2RlLk1vZGVsLnByb3RvdHlwZS5pbml0aWFsaXpl LmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7CisgICAgICAgIH0sCisgICAgICAg IHNjaGVtYTogW3sKKyAgICAgICAgICBpZDogJ25hbWUnLCBsYWJlbDogJ3t7 IF8oIk5hbWUiKSB9fScsIGNlbGw6ICdzdHJpbmcnLAorICAgICAgICAgIHR5 cGU6ICd0ZXh0JywgZGlzYWJsZWQ6ICdpblNjaGVtYScKKyAgICAgICAgfSwK KyAgICAgICAgeworICAgICAgICAgIGlkOiAnb2lkJywgbGFiZWw6J3t7IF8o Ik9JRCIpIH19JywgY2VsbDogJ3N0cmluZycsCisgICAgICAgICAgdHlwZTog J3RleHQnLCBkaXNhYmxlZDogdHJ1ZSwgbW9kZTogWydwcm9wZXJ0aWVzJ10K KyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgIGlkOiAnb3duZXIn LCBsYWJlbDone3sgXygiT3duZXIiKSB9fScsIGNlbGw6ICdzdHJpbmcnLCBj b250cm9sOiAnbm9kZS1saXN0LWJ5LW5hbWUnLAorICAgICAgICAgIG5vZGU6 ICdyb2xlJywgZGlzYWJsZWQ6ICdpblNjaGVtYScKKyAgICAgICAgfSwKKyAg ICAgICAgeworICAgICAgICAgIGlkOiAnc2NoZW1hJywgbGFiZWw6J3t7IF8o IlNjaGVtYSIpIH19JywgY2VsbDogJ3N0cmluZycsIGZpcnN0X2VtcHR5OiBm YWxzZSwKKyAgICAgICAgICBjb250cm9sOiAnbm9kZS1saXN0LWJ5LWlkJywg dHlwZTogJ3RleHQnLCBjYWNoZV9sZXZlbDogJ2RhdGFiYXNlJywKKyAgICAg ICAgICBub2RlOiAnc2NoZW1hJywgZGlzYWJsZWQ6ICdpblNjaGVtYScsIG1v ZGU6IFsnY3JlYXRlJywgJ2VkaXQnXSwKKyAgICAgICAgfSwKKyAgICAgICAg eworICAgICAgICAgIGlkOiAnY29tbWVudCcsIGxhYmVsOid7eyBfKCJDb21t ZW50IikgfX0nLCBjZWxsOiAnc3RyaW5nJywKKyAgICAgICAgICB0eXBlOiAn bXVsdGlsaW5lJywgZGlzYWJsZWQ6ICdpblNjaGVtYScKKyAgICAgICAgfSwK KyAgICAgICAgeworICAgICAgICAgIGlkOiAnc3lzdGVtX3ZpZXcnLCBsYWJl bDone3sgXygiU3lzdGVtIHZpZXc/IikgfX0nLCBjZWxsOiAnc3RyaW5nJywK KyAgICAgICAgICB0eXBlOiAnc3dpdGNoJywgZGlzYWJsZWQ6IHRydWUsIG1v ZGU6IFsncHJvcGVydGllcyddCisgICAgICAgIH0sCisgICAgICAgIHsKKyAg ICAgICAgICBpZDogJ3NlY3VyaXR5X2JhcnJpZXInLCBsYWJlbDone3sgXygi U2VjdXJpdHkgYmFycmllciIpIH19JywgY2VsbDogJ3N0cmluZycsCisgICAg ICAgICAgdHlwZTogJ3N3aXRjaCcsIG1pbl92ZXJzaW9uOiAnOTAyMDAnLCBt b2RlOiBbJ2NyZWF0ZScsICdlZGl0J10sCisgICAgICAgICAgZ3JvdXA6ICdE ZWZpbml0aW9uJywgZGlzYWJsZWQ6ICdpblNjaGVtYScKKyAgICAgICAgfSwK KyAgICAgICAgeworICAgICAgICAgIGlkOiAnY2hlY2tfb3B0aW9uJywgbGFi ZWw6J3t7IF8oIkNoZWNrIG9wdGlvbnMiKSB9fScsCisgICAgICAgICAgY29u dHJvbDogJ3NlbGVjdDInLCBncm91cDogJ0RlZmluaXRpb24nLCB0eXBlOiAn dGV4dCcsCisgICAgICAgICAgbWluX3ZlcnNpb246ICc5MDQwMCcsIG1vZGU6 Wydwcm9wZXJ0aWVzJywgJ2NyZWF0ZScsICdlZGl0J10sCisgICAgICAgICAg c2VsZWN0MjogeworCisgICAgICAgICAgICAvLyBzZXQgc2VsZWN0MiBvcHRp b24gd2lkdGggdG8gMTAwJQorICAgICAgICAgICAgd2lkdGg6ICcxMDAlJwor ICAgICAgICAgIH0sCisgICAgICAgICAgb3B0aW9uczpbCisgICAgICAgICAg ICB7bGFiZWw6ICJObyIsIHZhbHVlOiAibm8ifSwKKyAgICAgICAgICAgIHts YWJlbDogIkxvY2FsIiwgdmFsdWU6ICJsb2NhbCJ9LAorICAgICAgICAgICAg e2xhYmVsOiAiQ2FzY2FkZWQiLCB2YWx1ZTogImNhc2NhZGVkIn0KKyAgICAg ICAgICBdLCBkaXNhYmxlZDogJ2luU2NoZW1hJworICAgICAgICB9LAorICAg ICAgICB7CisgICAgICAgICAgaWQ6ICdkZWZpbml0aW9uJywgbGFiZWw6J3t7 IF8oIkRlZmluaXRpb24iKSB9fScsIGNlbGw6ICdzdHJpbmcnLAorICAgICAg ICAgIHR5cGU6ICd0ZXh0JywgbW9kZTogWydjcmVhdGUnLCAnZWRpdCddLCBn cm91cDogJ0RlZmluaXRpb24nLAorICAgICAgICAgIGNvbnRyb2w6IEJhY2tm b3JtLlNxbEZpZWxkQ29udHJvbCwgZXh0cmFDbGFzc2VzOlsnc3FsX2ZpZWxk X2hlaWdodF8xNDAnXSwKKyAgICAgICAgICBkaXNhYmxlZDogJ2luU2NoZW1h JworICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgaWQ6ICdhY2wn LCBsYWJlbDogJ3t7IF8oIlByaXZpbGVnZXMiKSB9fScsCisgICAgICAgICAg bW9kZTogWydwcm9wZXJ0aWVzJ10sIHR5cGU6ICd0ZXh0JworICAgICAgICB9 LHsKKyAgICAgICAgICBpZDogJ3NlY3VyaXR5JywgbGFiZWw6ICd7eyBfKCJT ZWN1cml0eSIpIH19JywKKyAgICAgICAgICB0eXBlOiAnZ3JvdXAnLAorICAg ICAgICAgIHZpc2libGU6IGZ1bmN0aW9uKG0pIHsKKyAgICAgICAgICAgIGlm IChtLnRvcCAmJiAnY2F0YWxvZycgaW4gbS50b3Aubm9kZV9pbmZvKSB7Cisg ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAg ICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgIH0KKyAgICAgICAg fSwKKworICAgICAgICAvLyBBZGQgUHJpdmlsZWdlIENvbnRyb2wKKyAgICAg ICAgeworICAgICAgICAgIGlkOiAnZGF0YWNsJywgbGFiZWw6ICd7eyBfKCJQ cml2aWxlZ2VzIikgfX0nLAorICAgICAgICAgIG1vZGVsOiBwZ0FkbWluLkJy b3dzZXIuTm9kZS5Qcml2aWxlZ2VSb2xlTW9kZWwuZXh0ZW5kKAorICAgICAg ICAgICAge3ByaXZpbGVnZXM6IFsnYScsICdyJywgJ3cnLCAnZCcsICdEJywg J3gnLCAndCddfSksIHVuaXF1ZUNvbCA6IFsnZ3JhbnRlZSddLAorICAgICAg ICAgIGVkaXRhYmxlOiBmYWxzZSwgdHlwZTogJ2NvbGxlY3Rpb24nLCBncm91 cDogJ3NlY3VyaXR5JywKKyAgICAgICAgICBtb2RlOiBbJ2VkaXQnLCAnY3Jl YXRlJ10sIGNhbkFkZDogdHJ1ZSwgY2FuRGVsZXRlOiB0cnVlLAorICAgICAg ICAgIGNvbnRyb2w6ICd1bmlxdWUtY29sLWNvbGxlY3Rpb24nLCBkaXNhYmxl ZDogJ2luU2NoZW1hJworICAgICAgICB9LAorCisgICAgICAgIC8vIEFkZCBT ZWN1cml0eSBMYWJlbHMgQ29udHJvbAorICAgICAgICB7CisgICAgICAgICAg aWQ6ICdzZWNsYWJlbHMnLCBsYWJlbDogJ3t7IF8oIlNlY3VyaXR5IGxhYmVs cyIpIH19JywKKyAgICAgICAgICBtb2RlbDogQmFja2Zvcm0uU2VjdXJpdHlN b2RlbCwgZWRpdGFibGU6IGZhbHNlLCB0eXBlOiAnY29sbGVjdGlvbicsCisg ICAgICAgICAgY2FuRWRpdDogZmFsc2UsIGdyb3VwOiAnc2VjdXJpdHknLCBj YW5EZWxldGU6IHRydWUsCisgICAgICAgICAgbW9kZTogWydlZGl0JywgJ2Ny ZWF0ZSddLCBjYW5BZGQ6IHRydWUsIGRpc2FibGVkOiAnaW5TY2hlbWEnLAor ICAgICAgICAgIGNvbnRyb2w6ICd1bmlxdWUtY29sLWNvbGxlY3Rpb24nLCB1 bmlxdWVDb2wgOiBbJ3Byb3ZpZGVyJ10KKyAgICAgICAgfSwKKyAgICAgICAg XSwKKyAgICAgICAgdmFsaWRhdGU6IGZ1bmN0aW9uKCkgeworCisgICAgICAg ICAgLy8gVHJpZ2dlcnMgc3BlY2lmaWMgZXJyb3IgbWVzc2FnZXMgZm9yIGZp ZWxkcworICAgICAgICAgIHZhciBlcnIgPSB7fSwKKyAgICAgICAgICAgIGVy cm1zZywKKyAgICAgICAgICAgIGZpZWxkX25hbWUgPSB0aGlzLmdldCgnbmFt ZScpLAorICAgICAgICAgICAgZmllbGRfZGVmID0gdGhpcy5nZXQoJ2RlZmlu aXRpb24nKTsKKyAgICAgICAgICBpZiAoXy5pc1VuZGVmaW5lZChmaWVsZF9u YW1lKSB8fCBfLmlzTnVsbChmaWVsZF9uYW1lKSB8fAorICAgICAgICAgICAg U3RyaW5nKGZpZWxkX25hbWUpLnJlcGxhY2UoL15ccyt8XHMrJC9nLCAnJykg PT0gJycpIHsKKyAgICAgICAgICAgIGVyclsnbmFtZSddID0gJ3t7IF8oIlBs ZWFzZSBzcGVjaWZ5IG5hbWUuIikgfX0nOworICAgICAgICAgICAgZXJybXNn ID0gZXJybXNnIHx8IGVyclsnbmFtZSddOworICAgICAgICAgICAgdGhpcy5l cnJvck1vZGVsLnNldCgnbmFtZScsIGVycm1zZyk7CisgICAgICAgICAgICBy ZXR1cm4gZXJybXNnOworICAgICAgICAgIH1lbHNleworICAgICAgICAgICAg dGhpcy5lcnJvck1vZGVsLnVuc2V0KCduYW1lJyk7CisgICAgICAgICAgfQor ICAgICAgICAgIGlmKHRoaXMuaXNOZXcoKSl7CisgICAgICAgICAgICBpZiAo Xy5pc1VuZGVmaW5lZChmaWVsZF9kZWYpIHx8IF8uaXNOdWxsKGZpZWxkX2Rl ZikgfHwKKyAgICAgICAgICAgICAgU3RyaW5nKGZpZWxkX2RlZikucmVwbGFj ZSgvXlxzK3xccyskL2csICcnKSA9PSAnJykgeworICAgICAgICAgICAgICBl cnJbJ2RlZmluaXRpb24nXSA9ICd7eyBfKCJQbGVhc2UgZW50ZXIgZnVuY3Rp b24gZGVmaW5pdGlvbi4iKSB9fSc7CisgICAgICAgICAgICAgIGVycm1zZyA9 IGVycm1zZyB8fCBlcnJbJ2RlZmluaXRpb24nXTsKKyAgICAgICAgICAgICAg dGhpcy5lcnJvck1vZGVsLnNldCgnZGVmaW5pdGlvbicsIGVycm1zZyk7Cisg ICAgICAgICAgICAgIHJldHVybiBlcnJtc2c7CisgICAgICAgICAgICB9ZWxz ZXsKKyAgICAgICAgICAgICAgdGhpcy5lcnJvck1vZGVsLnVuc2V0KCdkZWZp bml0aW9uJyk7CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAg ICAgIHJldHVybiBudWxsOworICAgICAgICB9LAorICAgICAgICAvLyBXZSB3 aWxsIGRpc2FibGUgZXZlcnl0aGluZyBpZiB3ZSBhcmUgdW5kZXIgY2F0YWxv ZyBub2RlCisgICAgICAgIGluU2NoZW1hOiBmdW5jdGlvbigpIHsKKyAgICAg ICAgICBpZih0aGlzLm5vZGVfaW5mbyAmJiAnY2F0YWxvZycgaW4gdGhpcy5u b2RlX2luZm8pCisgICAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIHRy dWU7CisgICAgICAgICAgfQorICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg ICAgICAgfQorICAgICAgfSksCisKKyAgICAgIC8qKgorICAgICAgICBTaG93 IG9yIGhpZGUgY3JlYXRlIHZpZXcgbWVudSBvcHRpb24gb24gcGFyZW50IG5v ZGUKKyAgICAgICAgYW5kIGhpZGUgZm9yIHN5c3RlbSB2aWV3IGluIGNhdGFs b2dzLgorICAgICAgICovCisgICAgICBjYW5DcmVhdGU6IGZ1bmN0aW9uKGl0 ZW1EYXRhLCBpdGVtLCBkYXRhKSB7CisKKyAgICAgICAgLy8gSWYgY2hlY2sg aXMgZmFsc2UgdGhlbiwgd2Ugd2lsbCBhbGxvdyBjcmVhdGUgbWVudQorICAg ICAgICBpZiAoZGF0YSAmJiBkYXRhLmNoZWNrID09IGZhbHNlKQorICAgICAg ICAgIHJldHVybiB0cnVlOworCisgICAgICAgIHZhciB0ID0gcGdCcm93c2Vy LnRyZWUsIGkgPSBpdGVtLCBkID0gaXRlbURhdGE7CisKKyAgICAgICAgLy8g VG8gaXRlcmF0ZSBvdmVyIHRyZWUgdG8gY2hlY2sgcGFyZW50IG5vZGUKKyAg ICAgICAgd2hpbGUgKGkpIHsKKworICAgICAgICAgIC8vIElmIGl0IGlzIHNj aGVtYSB0aGVuIGFsbG93IHVzZXIgdG8gY3JlYXRlIHZpZXcKKyAgICAgICAg ICBpZiAoXy5pbmRleE9mKFsnc2NoZW1hJ10sIGQuX3R5cGUpID4gLTEpCisg ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgICAgICAgIGlmICgnY29s bC12aWV3JyA9PSBkLl90eXBlKSB7CisKKyAgICAgICAgICAgIC8vIENoZWNr IGlmIHdlIGFyZSBub3QgY2hpbGQgb2YgdmlldworICAgICAgICAgICAgcHJl dl9pID0gdC5oYXNQYXJlbnQoaSkgPyB0LnBhcmVudChpKSA6IG51bGw7Cisg ICAgICAgICAgICBwcmV2X2QgPSBwcmV2X2kgPyB0Lml0ZW1EYXRhKHByZXZf aSkgOiBudWxsOworICAgICAgICAgICAgaWYoIHByZXZfZC5fdHlwZSA9PSAn Y2F0YWxvZycpIHsKKyAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg ICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgcmV0dXJuIHRydWU7 CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICAgIGkgPSB0 Lmhhc1BhcmVudChpKSA/IHQucGFyZW50KGkpIDogbnVsbDsKKyAgICAgICAg ICBkID0gaSA/IHQuaXRlbURhdGEoaSkgOiBudWxsOworICAgICAgICB9CisK KyAgICAgICAgLy8gYnkgZGVmYXVsdCB3ZSBkbyBub3Qgd2FudCB0byBhbGxv dyBjcmVhdGUgbWVudQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgICAg fQorICB9KTsKKyAgfQorCisgIHJldHVybiBwZ0Jyb3dzZXIuTm9kZXNbJ2Nv bGwtdmlldyddOworfSk7CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93 c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy92 aWV3cy90ZW1wbGF0ZXMvdmlldy9wZy85LjFfcGx1cy9zcWwvYWNsLnNxbCBi L3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2Rh dGFiYXNlcy9zY2hlbWFzL3ZpZXdzL3RlbXBsYXRlcy92aWV3L3BnLzkuMV9w bHVzL3NxbC9hY2wuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAuLjU4NTA2MzkKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1p bi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2No ZW1hcy92aWV3cy90ZW1wbGF0ZXMvdmlldy9wZy85LjFfcGx1cy9zcWwvYWNs LnNxbApAQCAtMCwwICsxLDUxIEBACit7IyA9PT09PT09PT09PT09PT09PT09 PT09PT09PT09IEdldCBBQ0xzID09PT09PT09PT09PT09PT09PT09PT09PT0g I30KK3slIGlmIHZpZCAlfQorU0VMRUNUCisgICAgJ2RhdGFjbCcgYXMgZGVm dHlwZSwKKyAgICBDT0FMRVNDRShndC5yb2xuYW1lLCAncHVibGljJykgZ3Jh bnRlZSwKKyAgICBnLnJvbG5hbWUgZ3JhbnRvciwKKyAgICBhcnJheV9hZ2co cHJpdmlsZWdlX3R5cGUpIGFzIHByaXZpbGVnZXMsCisgICAgYXJyYXlfYWdn KGlzX2dyYW50YWJsZSkgYXMgZ3JhbnRhYmxlCitGUk9NCisgICAgKFNFTEVD VAorICAgICAgICBkLmdyYW50ZWUsIGQuZ3JhbnRvciwgZC5pc19ncmFudGFi bGUsCisgICAgICAgIENBU0UgZC5wcml2aWxlZ2VfdHlwZQorICAgICAgICBX SEVOICdERUxFVEUnIFRIRU4gJ2QnCisgICAgICAgIFdIRU4gJ0lOU0VSVCcg VEhFTiAnYScKKyAgICAgICAgV0hFTiAnUkVGRVJFTkNFUycgVEhFTiAneCcK KyAgICAgICAgV0hFTiAnU0VMRUNUJyBUSEVOICdyJworICAgICAgICBXSEVO ICdUUklHR0VSJyBUSEVOICd0JworICAgICAgICBXSEVOICdVUERBVEUnIFRI RU4gJ3cnCisgICAgICAgIFdIRU4gJ1RSVU5DQVRFJyBUSEVOICdEJworICAg ICAgICBFTFNFICdVTktOT1dOJworICAgICAgICBFTkQgQVMgcHJpdmlsZWdl X3R5cGUKKyAgICBGUk9NCisgICAgICAgIChTRUxFQ1QKKyAgICAgICAgICAg IHJlbGFjbAorICAgICAgICBGUk9NCisgICAgICAgICAgICBwZ19jbGFzcyBj bAorICAgICAgICBMRUZUIE9VVEVSIEpPSU4gcGdfc2hkZXNjcmlwdGlvbiBk ZXNjciBPTiAoCisgICAgICAgICAgICBjbC5vaWQ9ZGVzY3Iub2Jqb2lkIEFO RCBkZXNjci5jbGFzc29pZD0ncGdfY2xhc3MnOjpyZWdjbGFzcykKKyAgICAg ICAgV0hFUkUKKyAgICAgICAgICAgIGNsLm9pZCA9IHt7IHZpZCB9fTo6T0lE IEFORCByZWxraW5kID0gJ3YnCisgICAgICAgICkgYWNsLAorICAgICAgICAo U0VMRUNUCisgICAgICAgICAgICAoZCkuZ3JhbnRlZSBBUyBncmFudGVlLAor ICAgICAgICAgICAgKGQpLmdyYW50b3IgQVMgZ3JhbnRvciwKKyAgICAgICAg ICAgIChkKS5pc19ncmFudGFibGUgQVMgaXNfZ3JhbnRhYmxlLAorICAgICAg ICAgICAgKGQpLnByaXZpbGVnZV90eXBlIEFTIHByaXZpbGVnZV90eXBlCisg ICAgICAgIEZST00KKyAgICAgICAgICAgIChTRUxFQ1QKKyAgICAgICAgICAg ICAgICBhY2xleHBsb2RlKHJlbGFjbCkgQVMgZAorICAgICAgICAgICAgIEZS T00KKyAgICAgICAgICAgICAgICBwZ19jbGFzcyBjbDEKKyAgICAgICAgICAg ICBXSEVSRQorICAgICAgICAgICAgICAgIGNsMS5vaWQgPSB7eyB2aWQgfX0K KyAgICAgICAgICAgICkgYQorICAgICAgICApIGQKKyAgICApIGQKKyAgICBM RUZUIEpPSU4gcGdfY2F0YWxvZy5wZ19yb2xlcyBnIE9OIChkLmdyYW50b3Ig PSBnLm9pZCkKKyAgICBMRUZUIEpPSU4gcGdfY2F0YWxvZy5wZ19yb2xlcyBn dCBPTiAoZC5ncmFudGVlID0gZ3Qub2lkKQorR1JPVVAgQlkKKyAgICBnLnJv bG5hbWUsIGd0LnJvbG5hbWUKK3slIGVuZGlmICV9CmRpZmYgLS1naXQgYS93 ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRh YmFzZXMvc2NoZW1hcy92aWV3cy90ZW1wbGF0ZXMvdmlldy9wZy85LjFfcGx1 cy9zcWwvY3JlYXRlLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVy X2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3ZpZXdzL3RlbXBs YXRlcy92aWV3L3BnLzkuMV9wbHVzL3NxbC9jcmVhdGUuc3FsCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIxMWJjOGUKLS0tIC9kZXYv bnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMv c2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy92aWV3cy90ZW1wbGF0ZXMvdmll dy9wZy85LjFfcGx1cy9zcWwvY3JlYXRlLnNxbApAQCAtMCwwICsxLDIwIEBA Cit7Iz09PT09PT09PT09PT09PT09PT09PT09PT09PT1DcmVhdGUgbmV3IHZp ZXc9PT09PT09PT09PT09PT09PT09PT09PT09I30KK3slIGlmIGRpc3BsYXlf Y29tbWVudHMgJX0KKy0tIFZpZXc6IHt7IGNvbm58cXRJZGVudChkYXRhLnNj aGVtYSwgZGF0YS5uYW1lKSB9fQorCistLSBEUk9QIFZJRVcge3sgY29ubnxx dElkZW50KGRhdGEuc2NoZW1hLCBkYXRhLm5hbWUpIH19OworCit7JSBlbmRp ZiAlfQoreyUgaWYgZGF0YS5uYW1lIGFuZCBkYXRhLnNjaGVtYSBhbmQgZGF0 YS5kZWZpbml0aW9uICV9CitDUkVBVEUgT1IgUkVQTEFDRSBWSUVXIHt7IGNv bm58cXRJZGVudChkYXRhLnNjaGVtYSwgZGF0YS5uYW1lKSB9fSBBUwore3sg ZGF0YS5kZWZpbml0aW9uLnJzdHJpcCgnOycpIH19OworeyUgaWYgZGF0YS5v d25lciAlfQorCitBTFRFUiBUQUJMRSB7eyBjb25ufHF0SWRlbnQoZGF0YS5z Y2hlbWEsIGRhdGEubmFtZSkgfX0KKyAgICBPV05FUiBUTyB7eyBkYXRhLm93 bmVyIH19OworeyUgZW5kaWYgJX0KK3slIGlmIGRhdGEuY29tbWVudCAlfQor Q09NTUVOVCBPTiBWSUVXIHt7IGNvbm58cXRJZGVudChkYXRhLnNjaGVtYSwg ZGF0YS5uYW1lKSB9fQorICAgIElTIHt7IGRhdGEuY29tbWVudHxxdExpdGVy YWwgfX07Cit7JSBlbmRpZiAlfQoreyUgZW5kaWYgJX0KZGlmZiAtLWdpdCBh L3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2Rh dGFiYXNlcy9zY2hlbWFzL3ZpZXdzL3RlbXBsYXRlcy92aWV3L3BnLzkuMV9w bHVzL3NxbC9kZWxldGUuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2 ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdmlld3MvdGVt cGxhdGVzL3ZpZXcvcGcvOS4xX3BsdXMvc3FsL2RlbGV0ZS5zcWwKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTUwYmVlYwotLS0gL2Rl di9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3ZpZXdzL3RlbXBsYXRlcy92 aWV3L3BnLzkuMV9wbHVzL3NxbC9kZWxldGUuc3FsCkBAIC0wLDAgKzEsMTMg QEAKK3sjID09PT09PT09PT09PT09PT09PT09PT0gRHJvcC9DYXNjYWRlIHZp ZXcgYnkgbmFtZSA9PT09PT09PT09PT09PT09PT09PT0gI30KK3slIGlmIHZp ZCAlfQorU0VMRUNUCisgICAgYy5yZWxuYW1lIEFTIG5hbWUsCisgICAgbnNw Lm5zcG5hbWUKK0ZST00KKyAgICBwZ19jbGFzcyBjCitMRUZUIEpPSU4gcGdf bmFtZXNwYWNlIG5zcCBPTiBjLnJlbG5hbWVzcGFjZSA9IG5zcC5vaWQKK1dI RVJFCisgICAgYy5yZWxmaWxlbm9kZSA9IHt7IHZpZCB9fTsKK3slIGVsaWYg KG5hbWUgYW5kIG5zcG5hbWUpICV9CitEUk9QIFZJRVcge3tuc3BuYW1lfX0u e3sgY29ubnxxdElkZW50KG5hbWUpIH19IHslIGlmIGNhc2NhZGUgJX0gQ0FT Q0FERSB7JSBlbmRpZiAlfQoreyUgZW5kaWYgJX0KZGlmZiAtLWdpdCBhL3dl Yi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFi YXNlcy9zY2hlbWFzL3ZpZXdzL3RlbXBsYXRlcy92aWV3L3BnLzkuMV9wbHVz L3NxbC9nZXRfc2NoZW1hLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2Vy dmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3ZpZXdzL3Rl bXBsYXRlcy92aWV3L3BnLzkuMV9wbHVzL3NxbC9nZXRfc2NoZW1hLnNxbApu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMjdkNGI5Ci0t LSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJf Z3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdmlld3MvdGVtcGxh dGVzL3ZpZXcvcGcvOS4xX3BsdXMvc3FsL2dldF9zY2hlbWEuc3FsCkBAIC0w LDAgKzEsNiBAQAorU0VMRUNUCisgICAgbnNwbmFtZQorRlJPTQorICAgIHBn X25hbWVzcGFjZQorV0hFUkUKKyAgICBvaWQgPSB7eyBzY2lkIH19OjpvaWQ7 CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91 cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy92aWV3cy90ZW1wbGF0ZXMv dmlldy9wZy85LjFfcGx1cy9zcWwvZ3JhbnQuc3FsIGIvd2ViL3BnYWRtaW4v YnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVt YXMvdmlld3MvdGVtcGxhdGVzL3ZpZXcvcGcvOS4xX3BsdXMvc3FsL2dyYW50 LnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41OWEz MTBmCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9z ZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdmlld3Mv dGVtcGxhdGVzL3ZpZXcvcGcvOS4xX3BsdXMvc3FsL2dyYW50LnNxbApAQCAt MCwwICsxLDYgQEAKK3sjID09PT09IEdyYW50IFBlcm1pc3Npb25zIHRvIFVz ZXIgUm9sZSBvbiBWaWV3cy9UYWJsZXMgPT09PT0gI30KK3slIGltcG9ydCAn bWFjcm9zL3NlY3VyaXR5Lm1hY3JvcycgYXMgU0VDTEFCTEUgJX0KK3slIGlt cG9ydCAnbWFjcm9zL3NjaGVtYXMvcHJpdmlsZWdlLm1hY3JvcycgYXMgUFJJ VklMRUdFICV9Cit7IyA9PT09PSBXZSB3aWxsIGdlbmVyYXRlIFNlY3VyaXR5 IExhYmVsIFNRTCB1c2luZyBtYWNybyA9PT09PSAjfQoreyUgaWYgZGF0YS5z ZWNsYWJlbHMgJX17JSBmb3IgciBpbiBkYXRhLnNlY2xhYmVscyAlfXt7IFNF Q0xBQkxFLkFQUExZKGNvbm4sICdWSUVXJywgZGF0YS5uYW1lLCByLnByb3Zp ZGVyLCByLnNlY3VyaXR5X2xhYmVsKSB9fXslIGVuZGZvciAlfXslIGVuZGlm ICV9eyUgaWYgZGF0YS5kYXRhY2wgJX0KK3slIGZvciBwcml2IGluIGRhdGEu ZGF0YWNsICV9e3sgUFJJVklMRUdFLlNFVChjb25uLCAnVEFCTEUnLCBwcml2 LmdyYW50ZWUsIGRhdGEubmFtZSwgcHJpdi53aXRob3V0X2dyYW50LCBwcml2 LndpdGhfZ3JhbnQsIGRhdGEuc2NoZW1hKSB9fXslIGVuZGZvciAlfXslIGVu ZGlmICV9CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZl cl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy92aWV3cy90ZW1w bGF0ZXMvdmlldy9wZy85LjFfcGx1cy9zcWwvcHJvcGVydGllcy5zcWwgYi93 ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRh YmFzZXMvc2NoZW1hcy92aWV3cy90ZW1wbGF0ZXMvdmlldy9wZy85LjFfcGx1 cy9zcWwvcHJvcGVydGllcy5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMC4uY2UxZDgwMQotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9w Z2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNl cy9zY2hlbWFzL3ZpZXdzL3RlbXBsYXRlcy92aWV3L3BnLzkuMV9wbHVzL3Nx bC9wcm9wZXJ0aWVzLnNxbApAQCAtMCwwICsxLDY5IEBACit7JSBpZiAodmlk IGFuZCBkYXRsYXN0c3lzb2lkKSBvciBzY2lkICV9CitTRUxFQ1QKKyAgICBj Lm9pZCwKKyAgICBjLnhtaW4sCisgICAgKENBU0UgV0hFTiBsZW5ndGgoc3Bj LnNwY25hbWUpID4gMCBUSEVOIHNwYy5zcGNuYW1lIEVMU0UgJ3BnX2RlZmF1 bHQnIEVORCkgYXMgc3BjbmFtZSwKKyAgICBjLnJlbG5hbWUgQVMgbmFtZSwK KyAgICBuc3AubnNwbmFtZSBBUyBzY2hlbWEsCisgICAgZGVzY3JpcHRpb24g QVMgY29tbWVudCwKKyAgICBjLnJlbHRhYmxlc3BhY2UgQVMgc3Bjb2lkLAor ICAgIHBnX2dldF91c2VyYnlpZChjLnJlbG93bmVyKSBBUyBvd25lciwKKyAg ICBwZ19nZXRfdmlld2RlZihjLm9pZCwgdHJ1ZSkgQVMgZGVmaW5pdGlvbiwK KyAgICBhcnJheV90b19zdHJpbmcoYy5yZWxhY2w6OnRleHRbXSwgJywgJykg QVMgYWNsLAorICAgIHsjPT09PT09PT09PT09PUNoZWNrcyBpZiBpdCBpcyBz eXN0ZW0gdmlldz09PT09PT09PT09PT09PT0jfQorICAgIHslIGlmIHZpZCBh bmQgZGF0bGFzdHN5c29pZCAlfQorICAgIENBU0UgV0hFTiB7e3ZpZH19IDw9 IHt7ZGF0bGFzdHN5c29pZH19IFRIRU4gVHJ1ZSBFTFNFIEZhbHNlIEVORCBB UyBzeXN0ZW1fdmlldywKKyAgICB7JSBlbmRpZiAlfQorICAgIChTRUxFQ1QK KyAgICAgICAgYXJyYXlfYWdnKGxhYmVsKQorICAgICBGUk9NCisgICAgICAg IHBnX3NlY2xhYmVscyBzbDEKKyAgICAgV0hFUkUKKyAgICAgICAgc2wxLm9i am9pZD1jLm9pZCBBTkQgc2wxLm9ianN1YmlkPTAKKyAgICApIEFTIGxhYmVs cywKKyAgICAoU0VMRUNUCisgICAgICAgIGFycmF5X2FnZyhwcm92aWRlcikK KyAgICAgRlJPTQorICAgICAgICBwZ19zZWNsYWJlbHMgc2wyCisgICAgIFdI RVJFIHNsMi5vYmpvaWQ9Yy5vaWQgQU5EIHNsMi5vYmpzdWJpZD0wCisgICAg KSBBUyBwcm92aWRlcnMKK0ZST00gcGdfY2xhc3MgYworICAgIExFRlQgT1VU RVIgSk9JTiBwZ19uYW1lc3BhY2UgbnNwIG9uIG5zcC5vaWQgPSBjLnJlbG5h bWVzcGFjZQorICAgIExFRlQgT1VURVIgSk9JTiBwZ190YWJsZXNwYWNlIHNw YyBvbiBzcGMub2lkPWMucmVsdGFibGVzcGFjZQorICAgIExFRlQgT1VURVIg Sk9JTiBwZ19kZXNjcmlwdGlvbiBkZXMgT04gKGRlcy5vYmpvaWQ9Yy5vaWQg YW5kIGRlcy5vYmpzdWJpZD0wIEFORCBkZXMuY2xhc3NvaWQ9J3BnX2NsYXNz Jzo6cmVnY2xhc3MpCitXSEVSRSAoKGMucmVsaGFzcnVsZXMKKyAgICAgICAg ICAgIEFORAorICAgICAgICAgICAgICAgIChFWElTVFMoCisgICAgICAgICAg ICAgICAgICAgIFNFTEVDVAorICAgICAgICAgICAgICAgICAgICAgICAgci5y dWxlbmFtZQorICAgICAgICAgICAgICAgICAgICBGUk9NCisgICAgICAgICAg ICAgICAgICAgICAgICBwZ19yZXdyaXRlIHIKKyAgICAgICAgICAgICAgICAg ICAgV0hFUkUKKyAgICAgICAgICAgICAgICAgICAgICAgICgoci5ldl9jbGFz cyA9IGMub2lkKSBBTkQgKGJwY2hhcihyLmV2X3R5cGUpID0gJzEnOjpicGNo YXIpKQorICAgICAgICAgICAgICAgICkpCisgICAgICAgKSBBTkQgKGMucmVs a2luZCA9ICd2Jzo6Y2hhcikpCit7JSBpZiAodmlkIGFuZCBkYXRsYXN0c3lz b2lkKSAlfQorICAgIEFORCBjLm9pZCA9IHt7dmlkfX06Om9pZAoreyUgZWxp ZiBzY2lkICV9CisgICAgQU5EIGMucmVsbmFtZXNwYWNlID0ge3tzY2lkfX06 Om9pZCBPUkRFUiBCWSBjLnJlbG5hbWUKK3slIGVuZGlmICV9CisKK3slIGVs aWYgdHlwZSA9PSAncm9sZXMnICV9CitTRUxFQ1QKKyAgICBwci5yb2xuYW1l CitGUk9NCisgICAgcGdfcm9sZXMgcHIKK1dIRVJFCisgICAgcHIucm9sY2Fu bG9naW4KK09SREVSIEJZCisgICAgcHIucm9sbmFtZQorCit7JSBlbGlmIHR5 cGUgPT0gJ3NjaGVtYXMnICV9CitTRUxFQ1QKKyAgICBuc3AubnNwbmFtZQor RlJPTQorICAgIHBnX25hbWVzcGFjZSBuc3AKK1dIRVJFCisgICAgKG5zcC5u c3BuYW1lIE5PVCBMSUtFIEUncGdcXF8lJworICAgICAgICBBTkQgbnNwLm5z cG5hbWUgIT0gJ2luZm9ybWF0aW9uX3NjaGVtYScpCit7JSBlbmRpZiAlfQpk aWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBz L3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdmlld3MvdGVtcGxhdGVzL3Zp ZXcvcGcvOS4xX3BsdXMvc3FsL3VwZGF0ZS5zcWwgYi93ZWIvcGdhZG1pbi9i cm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1h cy92aWV3cy90ZW1wbGF0ZXMvdmlldy9wZy85LjFfcGx1cy9zcWwvdXBkYXRl LnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZjdm ODJlCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9z ZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdmlld3Mv dGVtcGxhdGVzL3ZpZXcvcGcvOS4xX3BsdXMvc3FsL3VwZGF0ZS5zcWwKQEAg LTAsMCArMSw2NiBAQAoreyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09 PSBVcGRhdGUgVmlldyA9PT09PT09PT09PT09PT09PT09PT09PT09ICN9Cit7 JSBpbXBvcnQgJ21hY3Jvcy9zZWN1cml0eS5tYWNyb3MnIGFzIFNFQ0xBQkxF ICV9Cit7JSBpbXBvcnQgJ21hY3Jvcy9zY2hlbWFzL3ByaXZpbGVnZS5tYWNy b3MnIGFzIFBSSVZJTEVHRSAlfQoreyUgaWYgZGF0YSAlfQoreyUgc2V0IHZp ZXdfbmFtZSA9IGRhdGEubmFtZSBpZiBkYXRhLm5hbWUgZWxzZSBvX2RhdGEu bmFtZSAlfQoreyUgc2V0IHZpZXdfc2NoZW1hID0gZGF0YS5zY2hlbWEgaWYg ZGF0YS5zY2hlbWEgZWxzZSBvX2RhdGEuc2NoZW1hICV9Cit7JSBzZXQgZGVm ID0gZGF0YS5kZWZpbml0aW9uLnJzdHJpcCgnOycpIGlmIGRhdGEuZGVmaW5p dGlvbiAlfQoreyUgaWYgZGF0YS5uYW1lIGFuZCBkYXRhLm5hbWUgIT0gb19k YXRhLm5hbWUgJX0KK0FMVEVSIFZJRVcge3sgY29ubnxxdElkZW50KG9fZGF0 YS5zY2hlbWEsIG9fZGF0YS5uYW1lKSB9fQorICAgIFJFTkFNRSBUTyB7eyBj b25ufHF0SWRlbnQoZGF0YS5uYW1lKSB9fTsKK3slIGVuZGlmICV9Cit7JSBp ZiBkYXRhLnNjaGVtYSBhbmQgZGF0YS5zY2hlbWEgIT0gb19kYXRhLnNjaGVt YSAlfQorQUxURVIgVklFVyB7eyBjb25ufHF0SWRlbnQob19kYXRhLnNjaGVt YSwgdmlld19uYW1lICkgfX0KKyAgICBTRVQgU0NIRU1BIHt7IGNvbm58cXRJ ZGVudChkYXRhLnNjaGVtYSkgfX07Cit7JSBlbmRpZiAlfQoreyUgaWYgZGF0 YS5vd25lciBhbmQgZGF0YS5vd25lciAhPSBvX2RhdGEub3duZXIgJX0KK0FM VEVSIFRBQkxFIHt7IGNvbm58cXRJZGVudCh2aWV3X3NjaGVtYSwgdmlld19u YW1lKSB9fQorICAgIE9XTkVSIFRPIHt7IGNvbm58cXRJZGVudChkYXRhLm93 bmVyKSB9fTsKK3slIGVuZGlmICV9Cit7JSBpZiBkZWYgYW5kIGRlZiAhPSBv X2RhdGEuZGVmaW5pdGlvbi5yc3RyaXAoJzsnKSAlfQorQ1JFQVRFIE9SIFJF UExBQ0UgVklFVyB7eyBjb25ufHF0SWRlbnQodmlld19zY2hlbWEsIHZpZXdf bmFtZSkgfX0KKyAgICBBU3t7IGRlZiB9fTsKK3slIGVuZGlmICV9Cit7JSBp ZiBkYXRhLmNvbW1lbnQgYW5kIGRhdGEuY29tbWVudCAhPSBvX2RhdGEuY29t bWVudCAlfQorQ09NTUVOVCBPTiBWSUVXIHt7IGNvbm58cXRJZGVudCh2aWV3 X3NjaGVtYSwgdmlld19uYW1lKSB9fQorICAgIElTIHt7IGRhdGEuY29tbWVu dHxxdExpdGVyYWwgfX07Cit7JSBlbmRpZiAlfQoreyMgVGhlIFNRTCBnZW5l cmF0ZWQgYmVsb3cgd2lsbCBjaGFuZ2UgcHJpdmlsZWdlcyAjfQoreyUgaWYg ZGF0YS5kYXRhY2wgJX0KK3slIGlmICdkZWxldGVkJyBpbiBkYXRhLmRhdGFj bCAlfQoreyUgZm9yIHByaXYgaW4gZGF0YS5kYXRhY2wuZGVsZXRlZCAlfQor e3sgUFJJVklMRUdFLlVOU0VUQUxMKGNvbm4sICdUQUJMRScsIHByaXYuZ3Jh bnRlZSwgZGF0YS5uYW1lLCBkYXRhLnNjaGVtYSkgfX0KK3slIGVuZGZvciAl fQoreyUgZW5kaWYgJX0KK3slIGlmICdjaGFuZ2VkJyBpbiBkYXRhLmRhdGFj bCAlfQoreyUgZm9yIHByaXYgaW4gZGF0YS5kYXRhY2wuY2hhbmdlZCAlfQor e3sgUFJJVklMRUdFLlVOU0VUQUxMKGNvbm4sICdUQUJMRScsIHByaXYuZ3Jh bnRlZSwgZGF0YS5uYW1lLCBkYXRhLnNjaGVtYSkgfX0KK3t7IFBSSVZJTEVH RS5TRVQoY29ubiwgJ1RBQkxFJywgcHJpdi5ncmFudGVlLCBkYXRhLm5hbWUs IHByaXYud2l0aG91dF9ncmFudCwgcHJpdi53aXRoX2dyYW50LCBkYXRhLnNj aGVtYSkgfX0KK3slIGVuZGZvciAlfQoreyUgZW5kaWYgJX0KK3slIGlmICdh ZGRlZCcgaW4gZGF0YS5kYXRhY2wgJX0KK3slIGZvciBwcml2IGluIGRhdGEu ZGF0YWNsLmFkZGVkICV9Cit7eyBQUklWSUxFR0UuU0VUKGNvbm4sICdUQUJM RScsIHByaXYuZ3JhbnRlZSwgZGF0YS5uYW1lLCBwcml2LndpdGhvdXRfZ3Jh bnQsIHByaXYud2l0aF9ncmFudCwgZGF0YS5zY2hlbWEpIH19Cit7JSBlbmRm b3IgJX0KK3slIGVuZGlmICV9Cit7JSBlbmRpZiAlfQoreyMgVGhlIFNRTCBn ZW5lcmF0ZWQgYmVsb3cgd2lsbCBjaGFuZ2UgU2VjdXJpdHkgTGFiZWwgI30K K3slIGlmIGRhdGEuc2VjbGFiZWxzIGlzIG5vdCBub25lIGFuZCBkYXRhLnNl Y2xhYmVsc3xsZW5ndGggPiAwICV9Cit7JSBzZXQgc2VjbGFiZWxzID0gZGF0 YS5zZWNsYWJlbHMgJX0KK3slIGlmICdkZWxldGVkJyBpbiBzZWNsYWJlbHMg YW5kIHNlY2xhYmVscy5kZWxldGVkfGxlbmd0aCA+IDAgJX0KK3slIGZvciBy IGluIHNlY2xhYmVscy5kZWxldGVkICV9Cit7eyBTRUNMQUJMRS5EUk9QKGNv bm4sICdWSUVXJywgZGF0YS5uYW1lLCByLnByb3ZpZGVyKSB9fQoreyUgZW5k Zm9yICV9Cit7JSBlbmRpZiAlfQoreyUgaWYgJ2FkZGVkJyBpbiBzZWNsYWJl bHMgYW5kIHNlY2xhYmVscy5hZGRlZHxsZW5ndGggPiAwICV9Cit7JSBmb3Ig ciBpbiBzZWNsYWJlbHMuYWRkZWQgJX0KK3t7IFNFQ0xBQkxFLkFQUExZKGNv bm4sICdWSUVXJywgZGF0YS5uYW1lLCByLnByb3ZpZGVyLCByLnNlY3VyaXR5 X2xhYmVsKSB9fQoreyUgZW5kZm9yICV9Cit7JSBlbmRpZiAlfQoreyUgaWYg J2NoYW5nZWQnIGluIHNlY2xhYmVscyBhbmQgc2VjbGFiZWxzLmNoYW5nZWR8 bGVuZ3RoID4gMCAlfQoreyUgZm9yIHIgaW4gc2VjbGFiZWxzLmNoYW5nZWQg JX0KK3t7IFNFQ0xBQkxFLkFQUExZKGNvbm4sICdWSUVXJywgZGF0YS5uYW1l LCByLnByb3ZpZGVyLCByLnNlY3VyaXR5X2xhYmVsKSB9fQoreyUgZW5kZm9y ICV9Cit7JSBlbmRpZiAlfQoreyUgZW5kaWYgJX0KK3slIGVuZGlmICV9CmRp ZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMv c2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy92aWV3cy90ZW1wbGF0ZXMvdmll dy9wZy85LjFfcGx1cy9zcWwvdmlld19pZC5zcWwgYi93ZWIvcGdhZG1pbi9i cm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1h cy92aWV3cy90ZW1wbGF0ZXMvdmlldy9wZy85LjFfcGx1cy9zcWwvdmlld19p ZC5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmRm ZjA0ZQotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIv c2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3ZpZXdz L3RlbXBsYXRlcy92aWV3L3BnLzkuMV9wbHVzL3NxbC92aWV3X2lkLnNxbApA QCAtMCwwICsxLDQgQEAKK3sjIEJlbG93IHdpbGwgcHJvdmlkZSB2aWV3IGlk IGZvciBuZXdseSBjcmVhdGVkIHZpZXcgI30KK3slIGlmIGRhdGEgJX0KK1NF TEVDVCBjLm9pZCBGUk9NIHBnX2NsYXNzIGMgV0hFUkUgYy5yZWxuYW1lID0g J3t7IGRhdGEubmFtZSB9fSc7Cit7JSBlbmRpZiAlfQpkaWZmIC0tZ2l0IGEv d2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0 YWJhc2VzL3NjaGVtYXMvdmlld3MvdGVtcGxhdGVzL3ZpZXcvcGcvOS4yX3Bs dXMvc3FsL2FjbC5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9n cm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy92aWV3cy90ZW1wbGF0 ZXMvdmlldy9wZy85LjJfcGx1cy9zcWwvYWNsLnNxbApuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZjJkMGZiCi0tLSAvZGV2L251bGwK KysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZl cnMvZGF0YWJhc2VzL3NjaGVtYXMvdmlld3MvdGVtcGxhdGVzL3ZpZXcvcGcv OS4yX3BsdXMvc3FsL2FjbC5zcWwKQEAgLTAsMCArMSw1MiBAQAoreyMgPT09 PT09PT09PT09PT09PT09PT09PT09PT09PSBHZXQgQUNMcyA9PT09PT09PT09 PT09PT09PT09PT09PT09ICN9Cit7JSBpZiB2aWQgJX0KK1NFTEVDVAorICAg ICdkYXRhY2wnIGFzIGRlZnR5cGUsCisgICAgQ09BTEVTQ0UoZ3Qucm9sbmFt ZSwgJ3B1YmxpYycpIGdyYW50ZWUsCisgICAgZy5yb2xuYW1lIGdyYW50b3Is CisgICAgYXJyYXlfYWdnKHByaXZpbGVnZV90eXBlKSBhcyBwcml2aWxlZ2Vz LAorICAgIGFycmF5X2FnZyhpc19ncmFudGFibGUpIGFzIGdyYW50YWJsZQor RlJPTQorICAgIChTRUxFQ1QKKyAgICAgICAgZC5ncmFudGVlLCBkLmdyYW50 b3IsIGQuaXNfZ3JhbnRhYmxlLAorICAgICAgICBDQVNFIGQucHJpdmlsZWdl X3R5cGUKKyAgICAgICAgV0hFTiAnREVMRVRFJyBUSEVOICdkJworICAgICAg ICBXSEVOICdJTlNFUlQnIFRIRU4gJ2EnCisgICAgICAgIFdIRU4gJ1JFRkVS RU5DRVMnIFRIRU4gJ3gnCisgICAgICAgIFdIRU4gJ1NFTEVDVCcgVEhFTiAn cicKKyAgICAgICAgV0hFTiAnVFJJR0dFUicgVEhFTiAndCcKKyAgICAgICAg V0hFTiAnVVBEQVRFJyBUSEVOICd3JworICAgICAgICBXSEVOICdUUlVOQ0FU RScgVEhFTiAnRCcKKyAgICAgICAgRUxTRSAnVU5LTk9XTicKKyAgICAgICAg RU5EIEFTIHByaXZpbGVnZV90eXBlCisgICAgRlJPTQorICAgICAgICAoU0VM RUNUCisgICAgICAgICAgICByZWxhY2wKKyAgICAgICAgRlJPTQorICAgICAg ICAgICAgcGdfY2xhc3MgY2wKKyAgICAgICAgTEVGVCBPVVRFUiBKT0lOIHBn X3NoZGVzY3JpcHRpb24gZGVzY3IgT04gKAorICAgICAgICAgICAgY2wub2lk PWRlc2NyLm9iam9pZCBBTkQgZGVzY3IuY2xhc3NvaWQ9J3BnX2NsYXNzJzo6 cmVnY2xhc3MpCisgICAgICAgIFdIRVJFCisgICAgICAgICAgICBjbC5vaWQg PSB7eyB2aWQgfX06Ok9JRCBBTkQgcmVsa2luZCA9ICd2JworICAgICAgICAp IGFjbCwKKyAgICAgICAgKFNFTEVDVAorICAgICAgICAgICAgKGQpLmdyYW50 ZWUgQVMgZ3JhbnRlZSwKKyAgICAgICAgICAgIChkKS5ncmFudG9yIEFTIGdy YW50b3IsCisgICAgICAgICAgICAoZCkuaXNfZ3JhbnRhYmxlIEFTIGlzX2dy YW50YWJsZSwKKyAgICAgICAgICAgIChkKS5wcml2aWxlZ2VfdHlwZSBBUyBw cml2aWxlZ2VfdHlwZQorICAgICAgICBGUk9NCisgICAgICAgICAgICAoU0VM RUNUCisgICAgICAgICAgICAgICAgYWNsZXhwbG9kZShyZWxhY2wpIEFTIGQK KyAgICAgICAgICAgICBGUk9NCisgICAgICAgICAgICAgICAgcGdfY2xhc3Mg Y2wxCisgICAgICAgICAgICAgV0hFUkUKKyAgICAgICAgICAgICAgICBjbDEu b2lkID0ge3sgdmlkIH19CisgICAgICAgICAgICApIGEKKyAgICAgICAgKSBk CisgICAgKSBkCitMRUZUIEpPSU4gcGdfY2F0YWxvZy5wZ19yb2xlcyBnIE9O IChkLmdyYW50b3IgPSBnLm9pZCkKK0xFRlQgSk9JTiBwZ19jYXRhbG9nLnBn X3JvbGVzIGd0IE9OIChkLmdyYW50ZWUgPSBndC5vaWQpCitHUk9VUCBCWQor ICAgIGcucm9sbmFtZSwKKyAgICBndC5yb2xuYW1lCit7JSBlbmRpZiAlfQpk aWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBz L3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdmlld3MvdGVtcGxhdGVzL3Zp ZXcvcGcvOS4yX3BsdXMvc3FsL2NyZWF0ZS5zcWwgYi93ZWIvcGdhZG1pbi9i cm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1h cy92aWV3cy90ZW1wbGF0ZXMvdmlldy9wZy85LjJfcGx1cy9zcWwvY3JlYXRl LnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZmZi NzJmCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9z ZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdmlld3Mv dGVtcGxhdGVzL3ZpZXcvcGcvOS4yX3BsdXMvc3FsL2NyZWF0ZS5zcWwKQEAg LTAsMCArMSwyMyBAQAoreyM9PT09PT09PT09PT09PT09PT09PT09PT09PT09 Q3JlYXRlIG5ldyB2aWV3PT09PT09PT09PT09PT09PT09PT09PT09PSN9Cit7 JSBpZiBkaXNwbGF5X2NvbW1lbnRzICV9CistLSBWaWV3OiB7eyBjb25ufHF0 SWRlbnQoZGF0YS5zY2hlbWEsIGRhdGEubmFtZSkgfX0KKworLS0gRFJPUCBW SUVXIHt7IGNvbm58cXRJZGVudChkYXRhLnNjaGVtYSwgZGF0YS5uYW1lKSB9 fTsKKworeyUgZW5kaWYgJX0KK3slIGlmIGRhdGEubmFtZSBhbmQgZGF0YS5z Y2hlbWEgYW5kIGRhdGEuZGVmaW5pdGlvbiAlfQorQ1JFQVRFIE9SIFJFUExB Q0UgVklFVyB7eyBjb25ufHF0SWRlbnQoZGF0YS5zY2hlbWEsIGRhdGEubmFt ZSkgfX17JSBpZiAoZGF0YS5zZWN1cml0eV9iYXJyaWVyKSAlfXt7J1xyJ319 CitXSVRIICgKK3slIGlmIGRhdGEuc2VjdXJpdHlfYmFycmllciAlfSAgICBz ZWN1cml0eV9iYXJyaWVyPXt7IGRhdGEuc2VjdXJpdHlfYmFycmllcnxsb3dl ciB9fXslIGVuZGlmICV9e3snXHInfX0KKyl7JSBlbmRpZiAlfSBBUwore3sg ZGF0YS5kZWZpbml0aW9uLnJzdHJpcCgnOycpIH19OworeyUgaWYgZGF0YS5v d25lciAlfQorCitBTFRFUiBUQUJMRSB7eyBjb25ufHF0SWRlbnQoZGF0YS5z Y2hlbWEsIGRhdGEubmFtZSkgfX0KKyAgICBPV05FUiBUTyB7eyBkYXRhLm93 bmVyIH19OworeyUgZW5kaWYgJX0KK3slIGlmIGRhdGEuY29tbWVudCAlfQor Q09NTUVOVCBPTiBWSUVXIHt7IGNvbm58cXRJZGVudChkYXRhLnNjaGVtYSwg ZGF0YS5uYW1lKSB9fQorICAgIElTIHt7IGRhdGEuY29tbWVudHxxdExpdGVy YWwgfX07Cit7JSBlbmRpZiAlfQoreyUgZW5kaWYgJX0KZGlmZiAtLWdpdCBh L3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2Rh dGFiYXNlcy9zY2hlbWFzL3ZpZXdzL3RlbXBsYXRlcy92aWV3L3BnLzkuMl9w bHVzL3NxbC9kZWxldGUuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2 ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdmlld3MvdGVt cGxhdGVzL3ZpZXcvcGcvOS4yX3BsdXMvc3FsL2RlbGV0ZS5zcWwKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTUwYmVlYwotLS0gL2Rl di9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3ZpZXdzL3RlbXBsYXRlcy92 aWV3L3BnLzkuMl9wbHVzL3NxbC9kZWxldGUuc3FsCkBAIC0wLDAgKzEsMTMg QEAKK3sjID09PT09PT09PT09PT09PT09PT09PT0gRHJvcC9DYXNjYWRlIHZp ZXcgYnkgbmFtZSA9PT09PT09PT09PT09PT09PT09PT0gI30KK3slIGlmIHZp ZCAlfQorU0VMRUNUCisgICAgYy5yZWxuYW1lIEFTIG5hbWUsCisgICAgbnNw Lm5zcG5hbWUKK0ZST00KKyAgICBwZ19jbGFzcyBjCitMRUZUIEpPSU4gcGdf bmFtZXNwYWNlIG5zcCBPTiBjLnJlbG5hbWVzcGFjZSA9IG5zcC5vaWQKK1dI RVJFCisgICAgYy5yZWxmaWxlbm9kZSA9IHt7IHZpZCB9fTsKK3slIGVsaWYg KG5hbWUgYW5kIG5zcG5hbWUpICV9CitEUk9QIFZJRVcge3tuc3BuYW1lfX0u e3sgY29ubnxxdElkZW50KG5hbWUpIH19IHslIGlmIGNhc2NhZGUgJX0gQ0FT Q0FERSB7JSBlbmRpZiAlfQoreyUgZW5kaWYgJX0KZGlmZiAtLWdpdCBhL3dl Yi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFi YXNlcy9zY2hlbWFzL3ZpZXdzL3RlbXBsYXRlcy92aWV3L3BnLzkuMl9wbHVz L3NxbC9nZXRfc2NoZW1hLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2Vy dmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3ZpZXdzL3Rl bXBsYXRlcy92aWV3L3BnLzkuMl9wbHVzL3NxbC9nZXRfc2NoZW1hLnNxbApu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMjdkNGI5Ci0t LSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJf Z3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdmlld3MvdGVtcGxh dGVzL3ZpZXcvcGcvOS4yX3BsdXMvc3FsL2dldF9zY2hlbWEuc3FsCkBAIC0w LDAgKzEsNiBAQAorU0VMRUNUCisgICAgbnNwbmFtZQorRlJPTQorICAgIHBn X25hbWVzcGFjZQorV0hFUkUKKyAgICBvaWQgPSB7eyBzY2lkIH19OjpvaWQ7 CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91 cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy92aWV3cy90ZW1wbGF0ZXMv dmlldy9wZy85LjJfcGx1cy9zcWwvZ3JhbnQuc3FsIGIvd2ViL3BnYWRtaW4v YnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVt YXMvdmlld3MvdGVtcGxhdGVzL3ZpZXcvcGcvOS4yX3BsdXMvc3FsL2dyYW50 LnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41OWEz MTBmCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9z ZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdmlld3Mv dGVtcGxhdGVzL3ZpZXcvcGcvOS4yX3BsdXMvc3FsL2dyYW50LnNxbApAQCAt MCwwICsxLDYgQEAKK3sjID09PT09IEdyYW50IFBlcm1pc3Npb25zIHRvIFVz ZXIgUm9sZSBvbiBWaWV3cy9UYWJsZXMgPT09PT0gI30KK3slIGltcG9ydCAn bWFjcm9zL3NlY3VyaXR5Lm1hY3JvcycgYXMgU0VDTEFCTEUgJX0KK3slIGlt cG9ydCAnbWFjcm9zL3NjaGVtYXMvcHJpdmlsZWdlLm1hY3JvcycgYXMgUFJJ VklMRUdFICV9Cit7IyA9PT09PSBXZSB3aWxsIGdlbmVyYXRlIFNlY3VyaXR5 IExhYmVsIFNRTCB1c2luZyBtYWNybyA9PT09PSAjfQoreyUgaWYgZGF0YS5z ZWNsYWJlbHMgJX17JSBmb3IgciBpbiBkYXRhLnNlY2xhYmVscyAlfXt7IFNF Q0xBQkxFLkFQUExZKGNvbm4sICdWSUVXJywgZGF0YS5uYW1lLCByLnByb3Zp ZGVyLCByLnNlY3VyaXR5X2xhYmVsKSB9fXslIGVuZGZvciAlfXslIGVuZGlm ICV9eyUgaWYgZGF0YS5kYXRhY2wgJX0KK3slIGZvciBwcml2IGluIGRhdGEu ZGF0YWNsICV9e3sgUFJJVklMRUdFLlNFVChjb25uLCAnVEFCTEUnLCBwcml2 LmdyYW50ZWUsIGRhdGEubmFtZSwgcHJpdi53aXRob3V0X2dyYW50LCBwcml2 LndpdGhfZ3JhbnQsIGRhdGEuc2NoZW1hKSB9fXslIGVuZGZvciAlfXslIGVu ZGlmICV9CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZl cl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy92aWV3cy90ZW1w bGF0ZXMvdmlldy9wZy85LjJfcGx1cy9zcWwvcHJvcGVydGllcy5zcWwgYi93 ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRh YmFzZXMvc2NoZW1hcy92aWV3cy90ZW1wbGF0ZXMvdmlldy9wZy85LjJfcGx1 cy9zcWwvcHJvcGVydGllcy5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMC4uZWViZTBmNQotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9w Z2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNl cy9zY2hlbWFzL3ZpZXdzL3RlbXBsYXRlcy92aWV3L3BnLzkuMl9wbHVzL3Nx bC9wcm9wZXJ0aWVzLnNxbApAQCAtMCwwICsxLDcwIEBACit7JSBpZiAodmlk IGFuZCBkYXRsYXN0c3lzb2lkKSBvciBzY2lkICV9CitTRUxFQ1QKKyAgICBj Lm9pZCwKKyAgICBjLnhtaW4sCisgICAgYy5yZWxuYW1lIEFTIG5hbWUsCisg ICAgYy5yZWx0YWJsZXNwYWNlIEFTIHNwY29pZCwKKyAgICAoQ0FTRSBXSEVO IGxlbmd0aChzcGMuc3BjbmFtZSkgPiAwIFRIRU4gc3BjLnNwY25hbWUgRUxT RSAncGdfZGVmYXVsdCcgRU5EKSBhcyBzcGNuYW1lLAorICAgIHBnX2dldF91 c2VyYnlpZChjLnJlbG93bmVyKSBBUyBvd25lciwKKyAgICBkZXNjcmlwdGlv biBBcyBjb21tZW50LAorICAgIHBnX2dldF92aWV3ZGVmKGMub2lkLCB0cnVl KSBBUyBkZWZpbml0aW9uLAorICAgIG5zcC5uc3BuYW1lIEFTIHNjaGVtYSwK KyAgICBhcnJheV90b19zdHJpbmcoYy5yZWxhY2w6OnRleHRbXSwgJywgJykg QVMgYWNsLAorICAgIHsjPT09PT09PT09PT09PUNoZWNrcyBpZiBpdCBpcyBz eXN0ZW0gdmlldz09PT09PT09PT09PT09PT0jfQorICAgIHslIGlmIHZpZCBh bmQgZGF0bGFzdHN5c29pZCAlfQorICAgIENBU0UgV0hFTiB7e3ZpZH19IDw9 IHt7ZGF0bGFzdHN5c29pZH19IFRIRU4gVHJ1ZSBFTFNFIEZhbHNlIEVORCBB UyBzeXN0ZW1fdmlldywKKyAgICB7JSBlbmRpZiAlfQorKFNFTEVDVAorICAg IGFycmF5X2FnZyhsYWJlbCkKK0ZST00KKyAgICBwZ19zZWNsYWJlbHMgc2wx CitXSEVSRQorICAgIHNsMS5vYmpvaWQ9Yy5vaWQgQU5EIHNsMS5vYmpzdWJp ZD0wKSBBUyBsYWJlbHMsCisoU0VMRUNUCisgICAgYXJyYXlfYWdnKHByb3Zp ZGVyKQorRlJPTQorICAgIHBnX3NlY2xhYmVscyBzbDIKK1dIRVJFCisgICAg c2wyLm9iam9pZD1jLm9pZCBBTkQgc2wyLm9ianN1YmlkPTApIEFTIHByb3Zp ZGVycworICAgICwgc3Vic3RyaW5nKGFycmF5X3RvX3N0cmluZyhjLnJlbG9w dGlvbnMsICcsJykKKyAgICAgICAgRlJPTSAnc2VjdXJpdHlfYmFycmllcj0o W2EtenwwLTldKiknKSBBUyBzZWN1cml0eV9iYXJyaWVyCitGUk9NIHBnX2Ns YXNzIGMKK0xFRlQgT1VURVIgSk9JTiBwZ19uYW1lc3BhY2UgbnNwIG9uIG5z cC5vaWQgPSBjLnJlbG5hbWVzcGFjZQorTEVGVCBPVVRFUiBKT0lOIHBnX3Rh Ymxlc3BhY2Ugc3BjIG9uIHNwYy5vaWQ9Yy5yZWx0YWJsZXNwYWNlCitMRUZU IE9VVEVSIEpPSU4gcGdfZGVzY3JpcHRpb24gZGVzIE9OIChkZXMub2Jqb2lk PWMub2lkIGFuZCBkZXMub2Jqc3ViaWQ9MCBBTkQgZGVzLmNsYXNzb2lkPSdw Z19jbGFzcyc6OnJlZ2NsYXNzKQorICAgIFdIRVJFICgoYy5yZWxoYXNydWxl cyBBTkQgKEVYSVNUUyAoCisgICAgICAgICAgICBTRUxFQ1QKKyAgICAgICAg ICAgICAgICByLnJ1bGVuYW1lCisgICAgICAgICAgICBGUk9NCisgICAgICAg ICAgICAgICAgcGdfcmV3cml0ZSByCisgICAgICAgICAgICBXSEVSRQorICAg ICAgICAgICAgICAgICgoci5ldl9jbGFzcyA9IGMub2lkKQorICAgICAgICAg ICAgICAgICAgICBBTkQgKGJwY2hhcihyLmV2X3R5cGUpID0gJzEnOjpicGNo YXIpCisgICAgICAgICAgICAgICAgKSApKQorICAgICAgICAgICApIEFORCAo Yy5yZWxraW5kID0gJ3YnOjpjaGFyKQorICAgICAgICAgICkKK3slIGlmICh2 aWQgYW5kIGRhdGxhc3RzeXNvaWQpICV9CisgICAgQU5EIGMub2lkID0ge3t2 aWR9fTo6b2lkCit7JSBlbGlmIHNjaWQgJX0KKyAgICBBTkQgYy5yZWxuYW1l c3BhY2UgPSB7e3NjaWR9fTo6b2lkIE9SREVSIEJZIGMucmVsbmFtZQoreyUg ZW5kaWYgJX0KKworeyUgZWxpZiB0eXBlID09ICdyb2xlcycgJX0KK1NFTEVD VAorICAgIHByLnJvbG5hbWUKK0ZST00KKyAgICBwZ19yb2xlcyBwcgorV0hF UkUKKyAgICBwci5yb2xjYW5sb2dpbgorT1JERVIgQlkKKyAgICBwci5yb2xu YW1lCisKK3slIGVsaWYgdHlwZSA9PSAnc2NoZW1hcycgJX0KK1NFTEVDVAor ICAgIG5zcC5uc3BuYW1lCitGUk9NCisgICAgcGdfbmFtZXNwYWNlIG5zcAor V0hFUkUKKyAgICAobnNwLm5zcG5hbWUgTk9UIExJS0UgRSdwZ1xcXyUnCisg ICAgICAgIEFORCBuc3AubnNwbmFtZSAhPSAnaW5mb3JtYXRpb25fc2NoZW1h JykKK3slIGVuZGlmICV9CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93 c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy92 aWV3cy90ZW1wbGF0ZXMvdmlldy9wZy85LjJfcGx1cy9zcWwvdXBkYXRlLnNx bCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJz L2RhdGFiYXNlcy9zY2hlbWFzL3ZpZXdzL3RlbXBsYXRlcy92aWV3L3BnLzku Ml9wbHVzL3NxbC91cGRhdGUuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAuLmMzN2Q0YmEKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIv cGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFz ZXMvc2NoZW1hcy92aWV3cy90ZW1wbGF0ZXMvdmlldy9wZy85LjJfcGx1cy9z cWwvdXBkYXRlLnNxbApAQCAtMCwwICsxLDc0IEBACit7IyA9PT09PT09PT09 PT09PT09PT09PT09PT09PT09IFVwZGF0ZSBWaWV3ID09PT09PT09PT09PT09 PT09PT09PT09PT0gI30KK3slIGltcG9ydCAnbWFjcm9zL3NlY3VyaXR5Lm1h Y3JvcycgYXMgU0VDTEFCTEUgJX0KK3slIGltcG9ydCAnbWFjcm9zL3NjaGVt YXMvcHJpdmlsZWdlLm1hY3JvcycgYXMgUFJJVklMRUdFICV9Cit7JSBpZiBk YXRhICV9Cit7JSBzZXQgdmlld19uYW1lID0gZGF0YS5uYW1lIGlmIGRhdGEu bmFtZSBlbHNlIG9fZGF0YS5uYW1lICV9Cit7JSBzZXQgdmlld19zY2hlbWEg PSBkYXRhLnNjaGVtYSBpZiBkYXRhLnNjaGVtYSBlbHNlIG9fZGF0YS5zY2hl bWEgJX0KK3slIHNldCBkZWYgPSBkYXRhLmRlZmluaXRpb24ucnN0cmlwKCc7 JykgaWYgZGF0YS5kZWZpbml0aW9uICV9Cit7JSBpZiBkYXRhLm5hbWUgYW5k IGRhdGEubmFtZSAhPSBvX2RhdGEubmFtZSAlfQorQUxURVIgVklFVyB7eyBj b25ufHF0SWRlbnQob19kYXRhLnNjaGVtYSwgb19kYXRhLm5hbWUpIH19Cisg ICAgUkVOQU1FIFRPIHt7IGNvbm58cXRJZGVudChkYXRhLm5hbWUpIH19Owor eyUgZW5kaWYgJX0KK3slIGlmIGRhdGEuc2NoZW1hIGFuZCBkYXRhLnNjaGVt YSAhPSBvX2RhdGEuc2NoZW1hICV9CitBTFRFUiBWSUVXIHt7IGNvbm58cXRJ ZGVudChvX2RhdGEuc2NoZW1hLCB2aWV3X25hbWUgKSB9fQorICAgIFNFVCBT Q0hFTUEge3sgY29ubnxxdElkZW50KGRhdGEuc2NoZW1hKSB9fTsKK3slIGVu ZGlmICV9Cit7JSBpZiBkYXRhLm93bmVyIGFuZCBkYXRhLm93bmVyICE9IG9f ZGF0YS5vd25lciAlfQorQUxURVIgVEFCTEUge3sgY29ubnxxdElkZW50KHZp ZXdfc2NoZW1hLCB2aWV3X25hbWUpIH19CisgICAgT1dORVIgVE8ge3sgY29u bnxxdElkZW50KGRhdGEub3duZXIpIH19OworeyUgZW5kaWYgJX0KK3slIGlm IGRlZiBhbmQgZGVmICE9IG9fZGF0YS5kZWZpbml0aW9uLnJzdHJpcCgnOycp ICV9CitDUkVBVEUgT1IgUkVQTEFDRSBWSUVXIHt7IGNvbm58cXRJZGVudCh2 aWV3X3NjaGVtYSwgdmlld19uYW1lKSB9fQoreyUgaWYgKGRhdGEuc2VjdXJp dHlfYmFycmllciBhbmQgZGF0YS5zZWN1cml0eV9iYXJyaWVyICE9IG9fZGF0 YS5zZWN1cml0eV9iYXJyaWVyKSAlfQorICAgIFdJVEggKHslIGlmIGRhdGEu c2VjdXJpdHlfYmFycmllciAlfXNlY3VyaXR5X2JhcnJpZXI9e3sgZGF0YS5z ZWN1cml0eV9iYXJyaWVyfGxvd2VyIH19eyUgZW5kaWYgJX0pIHslIGVuZGlm ICV9CisgICAgQVN7eyBkZWYgfX07Cit7JSBlbHNlICV9Cit7JSBpZiAoZGF0 YS5zZWN1cml0eV9iYXJyaWVyIGlzIGRlZmluZWQgYW5kIGRhdGEuc2VjdXJp dHlfYmFycmllcnxsb3dlciAhPSAgb19kYXRhLnNlY3VyaXR5X2JhcnJpZXJ8 bG93ZXIpICV9CitBTFRFUiBWSUVXIHt7IGNvbm58cXRJZGVudCh2aWV3X3Nj aGVtYSwgdmlld19uYW1lKSB9fQorICAgIFNFVCAoc2VjdXJpdHlfYmFycmll cj17eyBkYXRhLnNlY3VyaXR5X2JhcnJpZXJ8bG93ZXIgfX0pOworeyUgZW5k aWYgJX0KK3slIGVuZGlmICV9CisKK3slIGlmIGRhdGEuY29tbWVudCBhbmQg ZGF0YS5jb21tZW50ICE9IG9fZGF0YS5jb21tZW50ICV9CitDT01NRU5UIE9O IFZJRVcge3sgY29ubnxxdElkZW50KHZpZXdfc2NoZW1hLCB2aWV3X25hbWUp IH19CisgICAgSVMge3sgZGF0YS5jb21tZW50fHF0TGl0ZXJhbCB9fTsKK3sl IGVuZGlmICV9Cit7IyBUaGUgU1FMIGdlbmVyYXRlZCBiZWxvdyB3aWxsIGNo YW5nZSBwcml2aWxlZ2VzICN9Cit7JSBpZiBkYXRhLmRhdGFjbCAlfQoreyUg aWYgJ2RlbGV0ZWQnIGluIGRhdGEuZGF0YWNsICV9Cit7JSBmb3IgcHJpdiBp biBkYXRhLmRhdGFjbC5kZWxldGVkICV9Cit7eyBQUklWSUxFR0UuVU5TRVRB TEwoY29ubiwgJ1RBQkxFJywgcHJpdi5ncmFudGVlLCBkYXRhLm5hbWUsIGRh dGEuc2NoZW1hKSB9fQoreyUgZW5kZm9yICV9Cit7JSBlbmRpZiAlfQoreyUg aWYgJ2NoYW5nZWQnIGluIGRhdGEuZGF0YWNsICV9Cit7JSBmb3IgcHJpdiBp biBkYXRhLmRhdGFjbC5jaGFuZ2VkICV9Cit7eyBQUklWSUxFR0UuVU5TRVRB TEwoY29ubiwgJ1RBQkxFJywgcHJpdi5ncmFudGVlLCBkYXRhLm5hbWUsIGRh dGEuc2NoZW1hKSB9fQore3sgUFJJVklMRUdFLlNFVChjb25uLCAnVEFCTEUn LCBwcml2LmdyYW50ZWUsIGRhdGEubmFtZSwgcHJpdi53aXRob3V0X2dyYW50 LCBwcml2LndpdGhfZ3JhbnQsIGRhdGEuc2NoZW1hKSB9fQoreyUgZW5kZm9y ICV9Cit7JSBlbmRpZiAlfQoreyUgaWYgJ2FkZGVkJyBpbiBkYXRhLmRhdGFj bCAlfQoreyUgZm9yIHByaXYgaW4gZGF0YS5kYXRhY2wuYWRkZWQgJX0KK3t7 IFBSSVZJTEVHRS5TRVQoY29ubiwgJ1RBQkxFJywgcHJpdi5ncmFudGVlLCBk YXRhLm5hbWUsIHByaXYud2l0aG91dF9ncmFudCwgcHJpdi53aXRoX2dyYW50 LCBkYXRhLnNjaGVtYSkgfX0KK3slIGVuZGZvciAlfQoreyUgZW5kaWYgJX0K K3slIGVuZGlmICV9Cit7IyBUaGUgU1FMIGdlbmVyYXRlZCBiZWxvdyB3aWxs IGNoYW5nZSBTZWN1cml0eSBMYWJlbCAjfQoreyUgaWYgZGF0YS5zZWNsYWJl bHMgaXMgbm90IG5vbmUgYW5kIGRhdGEuc2VjbGFiZWxzfGxlbmd0aCA+IDAg JX0KK3slIHNldCBzZWNsYWJlbHMgPSBkYXRhLnNlY2xhYmVscyAlfQoreyUg aWYgJ2RlbGV0ZWQnIGluIHNlY2xhYmVscyBhbmQgc2VjbGFiZWxzLmRlbGV0 ZWR8bGVuZ3RoID4gMCAlfQoreyUgZm9yIHIgaW4gc2VjbGFiZWxzLmRlbGV0 ZWQgJX0KK3t7IFNFQ0xBQkxFLkRST1AoY29ubiwgJ1ZJRVcnLCBkYXRhLm5h bWUsIHIucHJvdmlkZXIpIH19Cit7JSBlbmRmb3IgJX0KK3slIGVuZGlmICV9 Cit7JSBpZiAnYWRkZWQnIGluIHNlY2xhYmVscyBhbmQgc2VjbGFiZWxzLmFk ZGVkfGxlbmd0aCA+IDAgJX0KK3slIGZvciByIGluIHNlY2xhYmVscy5hZGRl ZCAlfQore3sgU0VDTEFCTEUuQVBQTFkoY29ubiwgJ1ZJRVcnLCBkYXRhLm5h bWUsIHIucHJvdmlkZXIsIHIuc2VjdXJpdHlfbGFiZWwpIH19Cit7JSBlbmRm b3IgJX0KK3slIGVuZGlmICV9Cit7JSBpZiAnY2hhbmdlZCcgaW4gc2VjbGFi ZWxzIGFuZCBzZWNsYWJlbHMuY2hhbmdlZHxsZW5ndGggPiAwICV9Cit7JSBm b3IgciBpbiBzZWNsYWJlbHMuY2hhbmdlZCAlfQore3sgU0VDTEFCTEUuQVBQ TFkoY29ubiwgJ1ZJRVcnLCBkYXRhLm5hbWUsIHIucHJvdmlkZXIsIHIuc2Vj dXJpdHlfbGFiZWwpIH19Cit7JSBlbmRmb3IgJX0KK3slIGVuZGlmICV9Cit7 JSBlbmRpZiAlfQoreyUgZW5kaWYgJX0KZGlmZiAtLWdpdCBhL3dlYi9wZ2Fk bWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9z Y2hlbWFzL3ZpZXdzL3RlbXBsYXRlcy92aWV3L3BnLzkuMl9wbHVzL3NxbC92 aWV3X2lkLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3ZpZXdzL3RlbXBsYXRlcy92 aWV3L3BnLzkuMl9wbHVzL3NxbC92aWV3X2lkLnNxbApuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZGZmMDRlCi0tLSAvZGV2L251bGwK KysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZl cnMvZGF0YWJhc2VzL3NjaGVtYXMvdmlld3MvdGVtcGxhdGVzL3ZpZXcvcGcv OS4yX3BsdXMvc3FsL3ZpZXdfaWQuc3FsCkBAIC0wLDAgKzEsNCBAQAoreyMg QmVsb3cgd2lsbCBwcm92aWRlIHZpZXcgaWQgZm9yIG5ld2x5IGNyZWF0ZWQg dmlldyAjfQoreyUgaWYgZGF0YSAlfQorU0VMRUNUIGMub2lkIEZST00gcGdf Y2xhc3MgYyBXSEVSRSBjLnJlbG5hbWUgPSAne3sgZGF0YS5uYW1lIH19JzsK K3slIGVuZGlmICV9CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2Vy L3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy92aWV3 cy90ZW1wbGF0ZXMvdmlldy9wZy85LjNfcGx1cy9zcWwvYWNsLnNxbCBiL3dl Yi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFi YXNlcy9zY2hlbWFzL3ZpZXdzL3RlbXBsYXRlcy92aWV3L3BnLzkuM19wbHVz L3NxbC9hY2wuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAuLjg0MzAwY2YKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9i cm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1h cy92aWV3cy90ZW1wbGF0ZXMvdmlldy9wZy85LjNfcGx1cy9zcWwvYWNsLnNx bApAQCAtMCwwICsxLDM4IEBACit7IyA9PT09PT09PT09PT09PT09PT09PT09 PT09PT09IEdldCBBQ0xzID09PT09PT09PT09PT09PT09PT09PT09PT0gI30K K3slIGlmIHZpZCAlfQorU0VMRUNUCisgICAgJ2RhdGFjbCcgYXMgZGVmdHlw ZSwKKyAgICBDT0FMRVNDRShndC5yb2xuYW1lLCAncHVibGljJykgZ3JhbnRl ZSwKKyAgICBnLnJvbG5hbWUgZ3JhbnRvciwKKyAgICBhcnJheV9hZ2cocHJp dmlsZWdlX3R5cGUpIGFzIHByaXZpbGVnZXMsCisgICAgYXJyYXlfYWdnKGlz X2dyYW50YWJsZSkgYXMgZ3JhbnRhYmxlCitGUk9NCisgICAgKFNFTEVDVAor ICAgICAgICBkLmdyYW50ZWUsIGQuZ3JhbnRvciwgZC5pc19ncmFudGFibGUs CisgICAgICAgIENBU0UgZC5wcml2aWxlZ2VfdHlwZQorICAgICAgICBXSEVO ICdERUxFVEUnIFRIRU4gJ2QnCisgICAgICAgIFdIRU4gJ0lOU0VSVCcgVEhF TiAnYScKKyAgICAgICAgV0hFTiAnUkVGRVJFTkNFUycgVEhFTiAneCcKKyAg ICAgICAgV0hFTiAnU0VMRUNUJyBUSEVOICdyJworICAgICAgICBXSEVOICdU UklHR0VSJyBUSEVOICd0JworICAgICAgICBXSEVOICdVUERBVEUnIFRIRU4g J3cnCisgICAgICAgIFdIRU4gJ1RSVU5DQVRFJyBUSEVOICdEJworICAgICAg ICBFTFNFICdVTktOT1dOJworICAgICAgICBFTkQgQVMgcHJpdmlsZWdlX3R5 cGUKKyAgICBGUk9NCisgICAgICAgIChTRUxFQ1QKKyAgICAgICAgICAgIHJl bGFjbAorICAgICAgICBGUk9NCisgICAgICAgICAgICBwZ19jbGFzcyBjbAor ICAgICAgICBMRUZUIE9VVEVSIEpPSU4gcGdfc2hkZXNjcmlwdGlvbiBkZXNj ciBPTiAoCisgICAgICAgICAgICBjbC5vaWQ9ZGVzY3Iub2Jqb2lkIEFORCBk ZXNjci5jbGFzc29pZD0ncGdfY2xhc3MnOjpyZWdjbGFzcykKKyAgICAgICAg V0hFUkUgY2wub2lkID0ge3sgdmlkIH19OjpPSUQgQU5EIHJlbGtpbmQgPSAn dicKKyAgICAgICAgKSBhY2wsCisgICAgICAgIGFjbGV4cGxvZGUocmVsYWNs KSBkCisgICAgKSBkCitMRUZUIEpPSU4gcGdfY2F0YWxvZy5wZ19yb2xlcyBn IE9OIChkLmdyYW50b3IgPSBnLm9pZCkKK0xFRlQgSk9JTiBwZ19jYXRhbG9n LnBnX3JvbGVzIGd0IE9OIChkLmdyYW50ZWUgPSBndC5vaWQpCitHUk9VUCBC WQorICAgIGcucm9sbmFtZSwKKyAgICBndC5yb2xuYW1lCit7JSBlbmRpZiAl fQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3Jv dXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdmlld3MvdGVtcGxhdGVz L3ZpZXcvcGcvOS4zX3BsdXMvc3FsL2NyZWF0ZS5zcWwgYi93ZWIvcGdhZG1p bi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2No ZW1hcy92aWV3cy90ZW1wbGF0ZXMvdmlldy9wZy85LjNfcGx1cy9zcWwvY3Jl YXRlLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40 ZmZiNzJmCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nl ci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdmll d3MvdGVtcGxhdGVzL3ZpZXcvcGcvOS4zX3BsdXMvc3FsL2NyZWF0ZS5zcWwK QEAgLTAsMCArMSwyMyBAQAoreyM9PT09PT09PT09PT09PT09PT09PT09PT09 PT09Q3JlYXRlIG5ldyB2aWV3PT09PT09PT09PT09PT09PT09PT09PT09PSN9 Cit7JSBpZiBkaXNwbGF5X2NvbW1lbnRzICV9CistLSBWaWV3OiB7eyBjb25u fHF0SWRlbnQoZGF0YS5zY2hlbWEsIGRhdGEubmFtZSkgfX0KKworLS0gRFJP UCBWSUVXIHt7IGNvbm58cXRJZGVudChkYXRhLnNjaGVtYSwgZGF0YS5uYW1l KSB9fTsKKworeyUgZW5kaWYgJX0KK3slIGlmIGRhdGEubmFtZSBhbmQgZGF0 YS5zY2hlbWEgYW5kIGRhdGEuZGVmaW5pdGlvbiAlfQorQ1JFQVRFIE9SIFJF UExBQ0UgVklFVyB7eyBjb25ufHF0SWRlbnQoZGF0YS5zY2hlbWEsIGRhdGEu bmFtZSkgfX17JSBpZiAoZGF0YS5zZWN1cml0eV9iYXJyaWVyKSAlfXt7J1xy J319CitXSVRIICgKK3slIGlmIGRhdGEuc2VjdXJpdHlfYmFycmllciAlfSAg ICBzZWN1cml0eV9iYXJyaWVyPXt7IGRhdGEuc2VjdXJpdHlfYmFycmllcnxs b3dlciB9fXslIGVuZGlmICV9e3snXHInfX0KKyl7JSBlbmRpZiAlfSBBUwor e3sgZGF0YS5kZWZpbml0aW9uLnJzdHJpcCgnOycpIH19OworeyUgaWYgZGF0 YS5vd25lciAlfQorCitBTFRFUiBUQUJMRSB7eyBjb25ufHF0SWRlbnQoZGF0 YS5zY2hlbWEsIGRhdGEubmFtZSkgfX0KKyAgICBPV05FUiBUTyB7eyBkYXRh Lm93bmVyIH19OworeyUgZW5kaWYgJX0KK3slIGlmIGRhdGEuY29tbWVudCAl fQorQ09NTUVOVCBPTiBWSUVXIHt7IGNvbm58cXRJZGVudChkYXRhLnNjaGVt YSwgZGF0YS5uYW1lKSB9fQorICAgIElTIHt7IGRhdGEuY29tbWVudHxxdExp dGVyYWwgfX07Cit7JSBlbmRpZiAlfQoreyUgZW5kaWYgJX0KZGlmZiAtLWdp dCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJz L2RhdGFiYXNlcy9zY2hlbWFzL3ZpZXdzL3RlbXBsYXRlcy92aWV3L3BnLzku M19wbHVzL3NxbC9kZWxldGUuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9z ZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdmlld3Mv dGVtcGxhdGVzL3ZpZXcvcGcvOS4zX3BsdXMvc3FsL2RlbGV0ZS5zcWwKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTUwYmVlYwotLS0g L2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dy b3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3ZpZXdzL3RlbXBsYXRl cy92aWV3L3BnLzkuM19wbHVzL3NxbC9kZWxldGUuc3FsCkBAIC0wLDAgKzEs MTMgQEAKK3sjID09PT09PT09PT09PT09PT09PT09PT0gRHJvcC9DYXNjYWRl IHZpZXcgYnkgbmFtZSA9PT09PT09PT09PT09PT09PT09PT0gI30KK3slIGlm IHZpZCAlfQorU0VMRUNUCisgICAgYy5yZWxuYW1lIEFTIG5hbWUsCisgICAg bnNwLm5zcG5hbWUKK0ZST00KKyAgICBwZ19jbGFzcyBjCitMRUZUIEpPSU4g cGdfbmFtZXNwYWNlIG5zcCBPTiBjLnJlbG5hbWVzcGFjZSA9IG5zcC5vaWQK K1dIRVJFCisgICAgYy5yZWxmaWxlbm9kZSA9IHt7IHZpZCB9fTsKK3slIGVs aWYgKG5hbWUgYW5kIG5zcG5hbWUpICV9CitEUk9QIFZJRVcge3tuc3BuYW1l fX0ue3sgY29ubnxxdElkZW50KG5hbWUpIH19IHslIGlmIGNhc2NhZGUgJX0g Q0FTQ0FERSB7JSBlbmRpZiAlfQoreyUgZW5kaWYgJX0KZGlmZiAtLWdpdCBh L3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2Rh dGFiYXNlcy9zY2hlbWFzL3ZpZXdzL3RlbXBsYXRlcy92aWV3L3BnLzkuM19w bHVzL3NxbC9nZXRfc2NoZW1hLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIv c2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3ZpZXdz L3RlbXBsYXRlcy92aWV3L3BnLzkuM19wbHVzL3NxbC9nZXRfc2NoZW1hLnNx bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMjdkNGI5 Ci0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2 ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdmlld3MvdGVt cGxhdGVzL3ZpZXcvcGcvOS4zX3BsdXMvc3FsL2dldF9zY2hlbWEuc3FsCkBA IC0wLDAgKzEsNiBAQAorU0VMRUNUCisgICAgbnNwbmFtZQorRlJPTQorICAg IHBnX25hbWVzcGFjZQorV0hFUkUKKyAgICBvaWQgPSB7eyBzY2lkIH19Ojpv aWQ7CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9n cm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy92aWV3cy90ZW1wbGF0 ZXMvdmlldy9wZy85LjNfcGx1cy9zcWwvZ3JhbnQuc3FsIGIvd2ViL3BnYWRt aW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3Nj aGVtYXMvdmlld3MvdGVtcGxhdGVzL3ZpZXcvcGcvOS4zX3BsdXMvc3FsL2dy YW50LnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41 OWEzMTBmCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nl ci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdmll d3MvdGVtcGxhdGVzL3ZpZXcvcGcvOS4zX3BsdXMvc3FsL2dyYW50LnNxbApA QCAtMCwwICsxLDYgQEAKK3sjID09PT09IEdyYW50IFBlcm1pc3Npb25zIHRv IFVzZXIgUm9sZSBvbiBWaWV3cy9UYWJsZXMgPT09PT0gI30KK3slIGltcG9y dCAnbWFjcm9zL3NlY3VyaXR5Lm1hY3JvcycgYXMgU0VDTEFCTEUgJX0KK3sl IGltcG9ydCAnbWFjcm9zL3NjaGVtYXMvcHJpdmlsZWdlLm1hY3JvcycgYXMg UFJJVklMRUdFICV9Cit7IyA9PT09PSBXZSB3aWxsIGdlbmVyYXRlIFNlY3Vy aXR5IExhYmVsIFNRTCB1c2luZyBtYWNybyA9PT09PSAjfQoreyUgaWYgZGF0 YS5zZWNsYWJlbHMgJX17JSBmb3IgciBpbiBkYXRhLnNlY2xhYmVscyAlfXt7 IFNFQ0xBQkxFLkFQUExZKGNvbm4sICdWSUVXJywgZGF0YS5uYW1lLCByLnBy b3ZpZGVyLCByLnNlY3VyaXR5X2xhYmVsKSB9fXslIGVuZGZvciAlfXslIGVu ZGlmICV9eyUgaWYgZGF0YS5kYXRhY2wgJX0KK3slIGZvciBwcml2IGluIGRh dGEuZGF0YWNsICV9e3sgUFJJVklMRUdFLlNFVChjb25uLCAnVEFCTEUnLCBw cml2LmdyYW50ZWUsIGRhdGEubmFtZSwgcHJpdi53aXRob3V0X2dyYW50LCBw cml2LndpdGhfZ3JhbnQsIGRhdGEuc2NoZW1hKSB9fXslIGVuZGZvciAlfXsl IGVuZGlmICV9CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3Nl cnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy92aWV3cy90 ZW1wbGF0ZXMvdmlldy9wZy85LjNfcGx1cy9zcWwvcHJvcGVydGllcy5zcWwg Yi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9k YXRhYmFzZXMvc2NoZW1hcy92aWV3cy90ZW1wbGF0ZXMvdmlldy9wZy85LjNf cGx1cy9zcWwvcHJvcGVydGllcy5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMC4uNWQzZDFlNAotLS0gL2Rldi9udWxsCisrKyBiL3dl Yi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFi YXNlcy9zY2hlbWFzL3ZpZXdzL3RlbXBsYXRlcy92aWV3L3BnLzkuM19wbHVz L3NxbC9wcm9wZXJ0aWVzLnNxbApAQCAtMCwwICsxLDc0IEBACit7JSBpZiAo dmlkIGFuZCBkYXRsYXN0c3lzb2lkKSBvciBzY2lkICV9CitTRUxFQ1QKKyAg ICBjLm9pZCwKKyAgICBjLnhtaW4sCisgICAgYy5yZWxraW5kLAorICAgIGRl c2NyaXB0aW9uLAorICAgIChDQVNFIFdIRU4gbGVuZ3RoKHNwYy5zcGNuYW1l KSA+IDAgVEhFTiBzcGMuc3BjbmFtZSBFTFNFICdwZ19kZWZhdWx0JyBFTkQp IGFzIHNwY25hbWUsCisgICAgYy5yZWxuYW1lIEFTIG5hbWUsCisgICAgbnNw Lm5zcG5hbWUgQVMgc2NoZW1hLAorICAgIGMucmVsdGFibGVzcGFjZSBBUyBz cGNvaWQsCisgICAgYy5yZWxpc3BvcHVsYXRlZCBBUyBpc3BvcHVsYXRlZCwK KyAgICBwZ19nZXRfdXNlcmJ5aWQoYy5yZWxvd25lcikgQVMgb3duZXIsCisg ICAgYXJyYXlfdG9fc3RyaW5nKGMucmVsYWNsOjp0ZXh0W10sICcsICcpIEFT IGFjbCwKKyAgICBwZ19nZXRfdmlld2RlZihjLm9pZCwgdHJ1ZSkgQVMgZGVm aW5pdGlvbiwKKyAgICB7IyA9PT09PSBDaGVja3MgaWYgaXQgaXMgc3lzdGVt IHZpZXcgPT09PT0gI30KKyAgICB7JSBpZiB2aWQgYW5kIGRhdGxhc3RzeXNv aWQgJX0KKyAgICBDQVNFIFdIRU4ge3t2aWR9fSA8PSB7e2RhdGxhc3RzeXNv aWR9fSBUSEVOIFRydWUgRUxTRSBGYWxzZSBFTkQgQVMgc3lzdGVtX3ZpZXcs CisgICAgeyUgZW5kaWYgJX0KKyhTRUxFQ1QKKyAgICBhcnJheV9hZ2cobGFi ZWwpCitGUk9NCisgICAgcGdfc2VjbGFiZWxzIHNsMQorV0hFUkUKKyAgICBz bDEub2Jqb2lkPWMub2lkIEFORCBzbDEub2Jqc3ViaWQ9MCkgQVMgbGFiZWxz LAorKFNFTEVDVAorICAgIGFycmF5X2FnZyhwcm92aWRlcikKK0ZST00KKyAg ICBwZ19zZWNsYWJlbHMgc2wyCitXSEVSRQorICAgIHNsMi5vYmpvaWQ9Yy5v aWQgQU5EIHNsMi5vYmpzdWJpZD0wKSBBUyBwcm92aWRlcnMsCisgICAgc3Vi c3RyaW5nKGFycmF5X3RvX3N0cmluZyhjLnJlbG9wdGlvbnMsICcsJykKKyAg ICAgICAgRlJPTSAnc2VjdXJpdHlfYmFycmllcj0oW2EtenwwLTldKiknKSBB UyBzZWN1cml0eV9iYXJyaWVyCitGUk9NIHBnX2NsYXNzIGMKK0xFRlQgT1VU RVIgSk9JTiBwZ19uYW1lc3BhY2UgbnNwIG9uIG5zcC5vaWQgPSBjLnJlbG5h bWVzcGFjZQorTEVGVCBPVVRFUiBKT0lOIHBnX3RhYmxlc3BhY2Ugc3BjIG9u IHNwYy5vaWQ9Yy5yZWx0YWJsZXNwYWNlCitMRUZUIE9VVEVSIEpPSU4gcGdf ZGVzY3JpcHRpb24gZGVzIE9OIChkZXMub2Jqb2lkPWMub2lkIGFuZCBkZXMu b2Jqc3ViaWQ9MCBBTkQgZGVzLmNsYXNzb2lkPSdwZ19jbGFzcyc6OnJlZ2Ns YXNzKQorTEVGVCBPVVRFUiBKT0lOIHBnX2NsYXNzIHRzdCBPTiB0c3Qub2lk ID0gYy5yZWx0b2FzdHJlbGlkCisgICAgV0hFUkUgKChjLnJlbGhhc3J1bGVz IEFORCAoRVhJU1RTICgKKyAgICAgICAgU0VMRUNUCisgICAgICAgICAgICBy LnJ1bGVuYW1lCisgICAgICAgIEZST00KKyAgICAgICAgICAgIHBnX3Jld3Jp dGUgcgorICAgICAgICBXSEVSRQorICAgICAgICAgICAgKChyLmV2X2NsYXNz ID0gYy5vaWQpCisgICAgICAgICAgICAgICAgQU5EIChicGNoYXIoci5ldl90 eXBlKSA9ICcxJzo6YnBjaGFyKSkgKSkpCisgICAgICAgICAgICBBTkQgKGMu cmVsa2luZCA9ICd2Jzo6Y2hhcikKKyAgICAgICAgICApCit7JSBpZiAodmlk IGFuZCBkYXRsYXN0c3lzb2lkKSAlfQorICAgIEFORCBjLm9pZCA9IHt7dmlk fX06Om9pZAoreyUgZWxpZiBzY2lkICV9CisgICAgQU5EIGMucmVsbmFtZXNw YWNlID0ge3tzY2lkfX06Om9pZAorT1JERVIgQlkKKyAgICBjLnJlbG5hbWUK K3slIGVuZGlmICV9CisKK3slIGVsaWYgdHlwZSA9PSAncm9sZXMnICV9CitT RUxFQ1QKKyAgICBwci5yb2xuYW1lCitGUk9NCisgICAgcGdfcm9sZXMgcHIK K1dIRVJFCisgICAgcHIucm9sY2FubG9naW4KK09SREVSIEJZCisgICAgcHIu cm9sbmFtZQorCit7JSBlbGlmIHR5cGUgPT0gJ3NjaGVtYXMnICV9CitTRUxF Q1QKKyAgICBuc3AubnNwbmFtZQorRlJPTQorICAgIHBnX25hbWVzcGFjZSBu c3AKK1dIRVJFCisgICAgKG5zcC5uc3BuYW1lIE5PVCBMSUtFIEUncGdcXF8l JworICAgICAgICBBTkQgbnNwLm5zcG5hbWUgIT0gJ2luZm9ybWF0aW9uX3Nj aGVtYScpCit7JSBlbmRpZiAlfQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4v YnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVt YXMvdmlld3MvdGVtcGxhdGVzL3ZpZXcvcGcvOS4zX3BsdXMvc3FsL3VwZGF0 ZS5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2Vy dmVycy9kYXRhYmFzZXMvc2NoZW1hcy92aWV3cy90ZW1wbGF0ZXMvdmlldy9w Zy85LjNfcGx1cy9zcWwvdXBkYXRlLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwLi4wMmQ4ZjM3Ci0tLSAvZGV2L251bGwKKysrIGIv d2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0 YWJhc2VzL3NjaGVtYXMvdmlld3MvdGVtcGxhdGVzL3ZpZXcvcGcvOS4zX3Bs dXMvc3FsL3VwZGF0ZS5zcWwKQEAgLTAsMCArMSw3NSBAQAoreyMgPT09PT09 PT09PT09PT09PT09PT09PT09PT09PSBVcGRhdGUgVmlldyA9PT09PT09PT09 PT09PT09PT09PT09PT09ICN9Cit7JSBpbXBvcnQgJ21hY3Jvcy9zZWN1cml0 eS5tYWNyb3MnIGFzIFNFQ0xBQkxFICV9Cit7JSBpbXBvcnQgJ21hY3Jvcy9z Y2hlbWFzL3ByaXZpbGVnZS5tYWNyb3MnIGFzIFBSSVZJTEVHRSAlfQoreyUg aWYgZGF0YSAlfQoreyUgc2V0IHZpZXdfbmFtZSA9IGRhdGEubmFtZSBpZiBk YXRhLm5hbWUgZWxzZSBvX2RhdGEubmFtZSAlfQoreyUgc2V0IHZpZXdfc2No ZW1hID0gZGF0YS5zY2hlbWEgaWYgZGF0YS5zY2hlbWEgZWxzZSBvX2RhdGEu c2NoZW1hICV9Cit7JSBzZXQgZGVmID0gZGF0YS5kZWZpbml0aW9uLnJzdHJp cCgnOycpIGlmIGRhdGEuZGVmaW5pdGlvbiAlfQoreyUgaWYgZGF0YS5uYW1l IGFuZCBkYXRhLm5hbWUgIT0gb19kYXRhLm5hbWUgJX0KK0FMVEVSIFZJRVcg e3sgY29ubnxxdElkZW50KG9fZGF0YS5zY2hlbWEsIG9fZGF0YS5uYW1lKSB9 fQorICAgIFJFTkFNRSBUTyB7eyBjb25ufHF0SWRlbnQoZGF0YS5uYW1lKSB9 fTsKK3slIGVuZGlmICV9Cit7JSBpZiBkYXRhLnNjaGVtYSBhbmQgZGF0YS5z Y2hlbWEgIT0gb19kYXRhLnNjaGVtYSAlfQorQUxURVIgVklFVyB7eyBjb25u fHF0SWRlbnQob19kYXRhLnNjaGVtYSwgdmlld19uYW1lICkgfX0KKyAgICBT RVQgU0NIRU1BIHt7IGNvbm58cXRJZGVudChkYXRhLnNjaGVtYSkgfX07Cit7 JSBlbmRpZiAlfQoreyUgaWYgZGF0YS5vd25lciBhbmQgZGF0YS5vd25lciAh PSBvX2RhdGEub3duZXIgJX0KK0FMVEVSIFRBQkxFIHt7IGNvbm58cXRJZGVu dCh2aWV3X3NjaGVtYSwgdmlld19uYW1lKSB9fQorICAgIE9XTkVSIFRPIHt7 IGNvbm58cXRJZGVudChkYXRhLm93bmVyKSB9fTsKK3slIGVuZGlmICV9Cit7 JSBpZiBkZWYgYW5kIGRlZiAhPSBvX2RhdGEuZGVmaW5pdGlvbi5yc3RyaXAo JzsnKSAlfQorQ1JFQVRFIE9SIFJFUExBQ0UgVklFVyB7eyBjb25ufHF0SWRl bnQodmlld19zY2hlbWEsIHZpZXdfbmFtZSkgfX0KK3slIGlmIChkYXRhLnNl Y3VyaXR5X2JhcnJpZXIgYW5kIGRhdGEuc2VjdXJpdHlfYmFycmllciAhPSBv X2RhdGEuc2VjdXJpdHlfYmFycmllcikgJX0KKyAgICBXSVRIICh7JSBpZiBk YXRhLnNlY3VyaXR5X2JhcnJpZXIgJX1zZWN1cml0eV9iYXJyaWVyPXt7IGRh dGEuc2VjdXJpdHlfYmFycmllcnxsb3dlciB9fXslIGVuZGlmICV9KQoreyUg ZW5kaWYgJX0KKyAgICBBU3t7IGRlZiB9fTsKK3slIGVsc2UgJX0KK3slIGlm IChkYXRhLnNlY3VyaXR5X2JhcnJpZXIgaXMgZGVmaW5lZCBhbmQgZGF0YS5z ZWN1cml0eV9iYXJyaWVyfGxvd2VyICE9ICBvX2RhdGEuc2VjdXJpdHlfYmFy cmllcnxsb3dlcikgJX0KK0FMVEVSIFZJRVcge3sgY29ubnxxdElkZW50KHZp ZXdfc2NoZW1hLCB2aWV3X25hbWUpIH19CisgICAgU0VUIChzZWN1cml0eV9i YXJyaWVyPXt7IGRhdGEuc2VjdXJpdHlfYmFycmllcnxsb3dlciB9fSk7Cit7 JSBlbmRpZiAlfQoreyUgZW5kaWYgJX0KKworeyUgaWYgZGF0YS5jb21tZW50 IGFuZCBkYXRhLmNvbW1lbnQgIT0gb19kYXRhLmNvbW1lbnQgJX0KK0NPTU1F TlQgT04gVklFVyB7eyBjb25ufHF0SWRlbnQodmlld19zY2hlbWEsIHZpZXdf bmFtZSkgfX0KKyAgICBJUyB7eyBkYXRhLmNvbW1lbnR8cXRMaXRlcmFsIH19 OworeyUgZW5kaWYgJX0KK3sjIFRoZSBTUUwgZ2VuZXJhdGVkIGJlbG93IHdp bGwgY2hhbmdlIHByaXZpbGVnZXMgI30KK3slIGlmIGRhdGEuZGF0YWNsICV9 Cit7JSBpZiAnZGVsZXRlZCcgaW4gZGF0YS5kYXRhY2wgJX0KK3slIGZvciBw cml2IGluIGRhdGEuZGF0YWNsLmRlbGV0ZWQgJX0KK3t7IFBSSVZJTEVHRS5V TlNFVEFMTChjb25uLCAnVEFCTEUnLCBwcml2LmdyYW50ZWUsIGRhdGEubmFt ZSwgZGF0YS5zY2hlbWEpIH19Cit7JSBlbmRmb3IgJX0KK3slIGVuZGlmICV9 Cit7JSBpZiAnY2hhbmdlZCcgaW4gZGF0YS5kYXRhY2wgJX0KK3slIGZvciBw cml2IGluIGRhdGEuZGF0YWNsLmNoYW5nZWQgJX0KK3t7IFBSSVZJTEVHRS5V TlNFVEFMTChjb25uLCAnVEFCTEUnLCBwcml2LmdyYW50ZWUsIGRhdGEubmFt ZSwgZGF0YS5zY2hlbWEpIH19Cit7eyBQUklWSUxFR0UuU0VUKGNvbm4sICdU QUJMRScsIHByaXYuZ3JhbnRlZSwgZGF0YS5uYW1lLCBwcml2LndpdGhvdXRf Z3JhbnQsIHByaXYud2l0aF9ncmFudCwgZGF0YS5zY2hlbWEpIH19Cit7JSBl bmRmb3IgJX0KK3slIGVuZGlmICV9Cit7JSBpZiAnYWRkZWQnIGluIGRhdGEu ZGF0YWNsICV9Cit7JSBmb3IgcHJpdiBpbiBkYXRhLmRhdGFjbC5hZGRlZCAl fQore3sgUFJJVklMRUdFLlNFVChjb25uLCAnVEFCTEUnLCBwcml2LmdyYW50 ZWUsIGRhdGEubmFtZSwgcHJpdi53aXRob3V0X2dyYW50LCBwcml2LndpdGhf Z3JhbnQsIGRhdGEuc2NoZW1hKSB9fQoreyUgZW5kZm9yICV9Cit7JSBlbmRp ZiAlfQoreyUgZW5kaWYgJX0KK3sjIFRoZSBTUUwgZ2VuZXJhdGVkIGJlbG93 IHdpbGwgY2hhbmdlIFNlY3VyaXR5IExhYmVsICN9Cit7JSBpZiBkYXRhLnNl Y2xhYmVscyBpcyBub3Qgbm9uZSBhbmQgZGF0YS5zZWNsYWJlbHN8bGVuZ3Ro ID4gMCAlfQoreyUgc2V0IHNlY2xhYmVscyA9IGRhdGEuc2VjbGFiZWxzICV9 Cit7JSBpZiAnZGVsZXRlZCcgaW4gc2VjbGFiZWxzIGFuZCBzZWNsYWJlbHMu ZGVsZXRlZHxsZW5ndGggPiAwICV9Cit7JSBmb3IgciBpbiBzZWNsYWJlbHMu ZGVsZXRlZCAlfQore3sgU0VDTEFCTEUuRFJPUChjb25uLCAnVklFVycsIGRh dGEubmFtZSwgci5wcm92aWRlcikgfX0KK3slIGVuZGZvciAlfQoreyUgZW5k aWYgJX0KK3slIGlmICdhZGRlZCcgaW4gc2VjbGFiZWxzIGFuZCBzZWNsYWJl bHMuYWRkZWR8bGVuZ3RoID4gMCAlfQoreyUgZm9yIHIgaW4gc2VjbGFiZWxz LmFkZGVkICV9Cit7eyBTRUNMQUJMRS5BUFBMWShjb25uLCAnVklFVycsIGRh dGEubmFtZSwgci5wcm92aWRlciwgci5zZWN1cml0eV9sYWJlbCkgfX0KK3sl IGVuZGZvciAlfQoreyUgZW5kaWYgJX0KK3slIGlmICdjaGFuZ2VkJyBpbiBz ZWNsYWJlbHMgYW5kIHNlY2xhYmVscy5jaGFuZ2VkfGxlbmd0aCA+IDAgJX0K K3slIGZvciByIGluIHNlY2xhYmVscy5jaGFuZ2VkICV9Cit7eyBTRUNMQUJM RS5BUFBMWShjb25uLCAnVklFVycsIGRhdGEubmFtZSwgci5wcm92aWRlciwg ci5zZWN1cml0eV9sYWJlbCkgfX0KK3slIGVuZGZvciAlfQoreyUgZW5kaWYg JX0KK3slIGVuZGlmICV9Cit7JSBlbmRpZiAlfQpkaWZmIC0tZ2l0IGEvd2Vi L3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJh c2VzL3NjaGVtYXMvdmlld3MvdGVtcGxhdGVzL3ZpZXcvcGcvOS4zX3BsdXMv c3FsL3ZpZXdfaWQuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJf Z3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdmlld3MvdGVtcGxh dGVzL3ZpZXcvcGcvOS4zX3BsdXMvc3FsL3ZpZXdfaWQuc3FsCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZkZmYwNGUKLS0tIC9kZXYv bnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMv c2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy92aWV3cy90ZW1wbGF0ZXMvdmll dy9wZy85LjNfcGx1cy9zcWwvdmlld19pZC5zcWwKQEAgLTAsMCArMSw0IEBA Cit7IyBCZWxvdyB3aWxsIHByb3ZpZGUgdmlldyBpZCBmb3IgbmV3bHkgY3Jl YXRlZCB2aWV3ICN9Cit7JSBpZiBkYXRhICV9CitTRUxFQ1QgYy5vaWQgRlJP TSBwZ19jbGFzcyBjIFdIRVJFIGMucmVsbmFtZSA9ICd7eyBkYXRhLm5hbWUg fX0nOworeyUgZW5kaWYgJX0KZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jy b3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFz L3ZpZXdzL3RlbXBsYXRlcy92aWV3L3BnLzkuNF9wbHVzL3NxbC9hY2wuc3Fs IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMv ZGF0YWJhc2VzL3NjaGVtYXMvdmlld3MvdGVtcGxhdGVzL3ZpZXcvcGcvOS40 X3BsdXMvc3FsL2FjbC5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMC4uN2Q3OTFmNQotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2Fk bWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9z Y2hlbWFzL3ZpZXdzL3RlbXBsYXRlcy92aWV3L3BnLzkuNF9wbHVzL3NxbC9h Y2wuc3FsCkBAIC0wLDAgKzEsMzkgQEAKK3sjID09PT09PT09PT09PT09PT09 PT09PT09PT09PT0gR2V0IEFDTHMgPT09PT09PT09PT09PT09PT09PT09PT09 PSAjfQoreyUgaWYgdmlkICV9CitTRUxFQ1QKKyAgICAnZGF0YWNsJyBhcyBk ZWZ0eXBlLAorICAgIENPQUxFU0NFKGd0LnJvbG5hbWUsICdwdWJsaWMnKSBn cmFudGVlLAorICAgIGcucm9sbmFtZSBncmFudG9yLAorICAgIGFycmF5X2Fn Zyhwcml2aWxlZ2VfdHlwZSkgYXMgcHJpdmlsZWdlcywKKyAgICBhcnJheV9h Z2coaXNfZ3JhbnRhYmxlKSBhcyBncmFudGFibGUKK0ZST00KKyAgICAoU0VM RUNUCisgICAgICAgIGQuZ3JhbnRlZSwgZC5ncmFudG9yLCBkLmlzX2dyYW50 YWJsZSwKKyAgICAgICAgQ0FTRSBkLnByaXZpbGVnZV90eXBlCisgICAgICAg IFdIRU4gJ0RFTEVURScgVEhFTiAnZCcKKyAgICAgICAgV0hFTiAnSU5TRVJU JyBUSEVOICdhJworICAgICAgICBXSEVOICdSRUZFUkVOQ0VTJyBUSEVOICd4 JworICAgICAgICBXSEVOICdTRUxFQ1QnIFRIRU4gJ3InCisgICAgICAgIFdI RU4gJ1RSSUdHRVInIFRIRU4gJ3QnCisgICAgICAgIFdIRU4gJ1VQREFURScg VEhFTiAndycKKyAgICAgICAgV0hFTiAnVFJVTkNBVEUnIFRIRU4gJ0QnCisg ICAgICAgIEVMU0UgJ1VOS05PV04nCisgICAgICAgIEVORCBBUyBwcml2aWxl Z2VfdHlwZQorICAgIEZST00KKyAgICAgICAgKFNFTEVDVAorICAgICAgICAg ICAgcmVsYWNsCisgICAgICAgICBGUk9NCisgICAgICAgICAgICBwZ19jbGFz cyBjbAorICAgICAgICAgTEVGVCBPVVRFUiBKT0lOIHBnX3NoZGVzY3JpcHRp b24gZGVzY3IgT04KKyAgICAgICAgICAgIChjbC5vaWQ9ZGVzY3Iub2Jqb2lk IEFORCBkZXNjci5jbGFzc29pZD0ncGdfY2xhc3MnOjpyZWdjbGFzcykKKyAg ICAgICAgIFdIRVJFCisgICAgICAgICAgICBjbC5vaWQgPSB7eyB2aWQgfX06 Ok9JRCBBTkQgcmVsa2luZCA9ICd2JworICAgICAgICApIGFjbCwKKyAgICAg ICAgYWNsZXhwbG9kZShyZWxhY2wpIGQKKyAgICApIGQKK0xFRlQgSk9JTiBw Z19jYXRhbG9nLnBnX3JvbGVzIGcgT04gKGQuZ3JhbnRvciA9IGcub2lkKQor TEVGVCBKT0lOIHBnX2NhdGFsb2cucGdfcm9sZXMgZ3QgT04gKGQuZ3JhbnRl ZSA9IGd0Lm9pZCkKK0dST1VQIEJZCisgICAgZy5yb2xuYW1lLAorICAgIGd0 LnJvbG5hbWUKK3slIGVuZGlmICV9CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1p bi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2No ZW1hcy92aWV3cy90ZW1wbGF0ZXMvdmlldy9wZy85LjRfcGx1cy9zcWwvY3Jl YXRlLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9z ZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3ZpZXdzL3RlbXBsYXRlcy92aWV3 L3BnLzkuNF9wbHVzL3NxbC9jcmVhdGUuc3FsCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAuLmI0M2I1MTkKLS0tIC9kZXYvbnVsbAorKysg Yi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9k YXRhYmFzZXMvc2NoZW1hcy92aWV3cy90ZW1wbGF0ZXMvdmlldy9wZy85LjRf cGx1cy9zcWwvY3JlYXRlLnNxbApAQCAtMCwwICsxLDIyIEBACit7Iz09PT09 PT09PT09PT09PT09PT09PT09PT09PT1DcmVhdGUgbmV3IHZpZXc9PT09PT09 PT09PT09PT09PT09PT09PT09I30KK3slIGlmIGRpc3BsYXlfY29tbWVudHMg JX0KKy0tIFZpZXc6IHt7IGNvbm58cXRJZGVudChkYXRhLnNjaGVtYSwgZGF0 YS5uYW1lKSB9fQorCistLSBEUk9QIFZJRVcge3sgY29ubnxxdElkZW50KGRh dGEuc2NoZW1hLCBkYXRhLm5hbWUpIH19OworCit7JSBlbmRpZiAlfQoreyUg aWYgZGF0YS5uYW1lIGFuZCBkYXRhLnNjaGVtYSBhbmQgZGF0YS5kZWZpbml0 aW9uICV9CitDUkVBVEUgT1IgUkVQTEFDRSBWSUVXIHt7IGNvbm58cXRJZGVu dChkYXRhLnNjaGVtYSwgZGF0YS5uYW1lKSB9fXslIGlmICgoZGF0YS5jaGVj a19vcHRpb24gYW5kIGRhdGEuY2hlY2tfb3B0aW9uLmxvd2VyKCkgIT0gJ25v Jykgb3IgZGF0YS5zZWN1cml0eV9iYXJyaWVyKSAlfXt7ICdcbicgfX1XSVRI ICgKK3slIGlmIGRhdGEuY2hlY2tfb3B0aW9uIGFuZCBkYXRhLmNoZWNrX29w dGlvbi5sb3dlcigpICE9ICdubycgJX0gICAgY2hlY2tfb3B0aW9uPXt7IGRh dGEuY2hlY2tfb3B0aW9uIH19eyUgZW5kaWYgJX17eyAnLFxyJyBpZiBkYXRh LmNoZWNrX29wdGlvbiBhbmQgZGF0YS5jaGVja19vcHRpb24ubG93ZXIoKSAh PSAnbm8nIGFuZCBkYXRhLnNlY3VyaXR5X2JhcnJpZXIgfX17JSBpZiBkYXRh LnNlY3VyaXR5X2JhcnJpZXIgJX0gICAgc2VjdXJpdHlfYmFycmllcj17eyBk YXRhLnNlY3VyaXR5X2JhcnJpZXJ8bG93ZXIgfX17JSBlbmRpZiAlfXt7J1xy J319CispeyUgZW5kaWYgJX0gQVMKK3t7IGRhdGEuZGVmaW5pdGlvbi5yc3Ry aXAoJzsnKSB9fTsKK3slIGlmIGRhdGEub3duZXIgYW5kIGRhdGEubV92aWV3 IGlzIHVuZGVmaW5lZCAlfQorCitBTFRFUiBUQUJMRSB7eyBjb25ufHF0SWRl bnQoZGF0YS5zY2hlbWEsIGRhdGEubmFtZSkgfX0KKyAgICBPV05FUiBUTyB7 eyBjb25ufHF0SWRlbnQoZGF0YS5vd25lcikgfX07Cit7JSBlbmRpZiAlfQor eyUgaWYgZGF0YS5jb21tZW50ICV9CitDT01NRU5UIE9OIFZJRVcge3sgY29u bnxxdElkZW50KGRhdGEuc2NoZW1hLCBkYXRhLm5hbWUpIH19CisgICAgSVMg e3sgZGF0YS5jb21tZW50fHF0TGl0ZXJhbCB9fTsKK3slIGVuZGlmICV9Cit7 JSBlbmRpZiAlfQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9z ZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdmlld3Mv dGVtcGxhdGVzL3ZpZXcvcGcvOS40X3BsdXMvc3FsL2RlbGV0ZS5zcWwgYi93 ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRh YmFzZXMvc2NoZW1hcy92aWV3cy90ZW1wbGF0ZXMvdmlldy9wZy85LjRfcGx1 cy9zcWwvZGVsZXRlLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwLi5lNTBiZWVjCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRt aW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3Nj aGVtYXMvdmlld3MvdGVtcGxhdGVzL3ZpZXcvcGcvOS40X3BsdXMvc3FsL2Rl bGV0ZS5zcWwKQEAgLTAsMCArMSwxMyBAQAoreyMgPT09PT09PT09PT09PT09 PT09PT09PSBEcm9wL0Nhc2NhZGUgdmlldyBieSBuYW1lID09PT09PT09PT09 PT09PT09PT09PSAjfQoreyUgaWYgdmlkICV9CitTRUxFQ1QKKyAgICBjLnJl bG5hbWUgQVMgbmFtZSwKKyAgICBuc3AubnNwbmFtZQorRlJPTQorICAgIHBn X2NsYXNzIGMKK0xFRlQgSk9JTiBwZ19uYW1lc3BhY2UgbnNwIE9OIGMucmVs bmFtZXNwYWNlID0gbnNwLm9pZAorV0hFUkUKKyAgICBjLnJlbGZpbGVub2Rl ID0ge3sgdmlkIH19OworeyUgZWxpZiAobmFtZSBhbmQgbnNwbmFtZSkgJX0K K0RST1AgVklFVyB7e25zcG5hbWV9fS57eyBjb25ufHF0SWRlbnQobmFtZSkg fX0geyUgaWYgY2FzY2FkZSAlfSBDQVNDQURFIHslIGVuZGlmICV9Cit7JSBl bmRpZiAlfQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2 ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdmlld3MvdGVt cGxhdGVzL3ZpZXcvcGcvOS40X3BsdXMvc3FsL2dldF9zY2hlbWEuc3FsIGIv d2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0 YWJhc2VzL3NjaGVtYXMvdmlld3MvdGVtcGxhdGVzL3ZpZXcvcGcvOS40X3Bs dXMvc3FsL2dldF9zY2hlbWEuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAuLjEyN2Q0YjkKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIv cGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFz ZXMvc2NoZW1hcy92aWV3cy90ZW1wbGF0ZXMvdmlldy9wZy85LjRfcGx1cy9z cWwvZ2V0X3NjaGVtYS5zcWwKQEAgLTAsMCArMSw2IEBACitTRUxFQ1QKKyAg ICBuc3BuYW1lCitGUk9NCisgICAgcGdfbmFtZXNwYWNlCitXSEVSRQorICAg IG9pZCA9IHt7IHNjaWQgfX06Om9pZDsKZGlmZiAtLWdpdCBhL3dlYi9wZ2Fk bWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9z Y2hlbWFzL3ZpZXdzL3RlbXBsYXRlcy92aWV3L3BnLzkuNF9wbHVzL3NxbC9n cmFudC5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMv c2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy92aWV3cy90ZW1wbGF0ZXMvdmll dy9wZy85LjRfcGx1cy9zcWwvZ3JhbnQuc3FsCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAuLjU5YTMxMGYKLS0tIC9kZXYvbnVsbAorKysg Yi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9k YXRhYmFzZXMvc2NoZW1hcy92aWV3cy90ZW1wbGF0ZXMvdmlldy9wZy85LjRf cGx1cy9zcWwvZ3JhbnQuc3FsCkBAIC0wLDAgKzEsNiBAQAoreyMgPT09PT0g R3JhbnQgUGVybWlzc2lvbnMgdG8gVXNlciBSb2xlIG9uIFZpZXdzL1RhYmxl cyA9PT09PSAjfQoreyUgaW1wb3J0ICdtYWNyb3Mvc2VjdXJpdHkubWFjcm9z JyBhcyBTRUNMQUJMRSAlfQoreyUgaW1wb3J0ICdtYWNyb3Mvc2NoZW1hcy9w cml2aWxlZ2UubWFjcm9zJyBhcyBQUklWSUxFR0UgJX0KK3sjID09PT09IFdl IHdpbGwgZ2VuZXJhdGUgU2VjdXJpdHkgTGFiZWwgU1FMIHVzaW5nIG1hY3Jv ID09PT09ICN9Cit7JSBpZiBkYXRhLnNlY2xhYmVscyAlfXslIGZvciByIGlu IGRhdGEuc2VjbGFiZWxzICV9e3sgU0VDTEFCTEUuQVBQTFkoY29ubiwgJ1ZJ RVcnLCBkYXRhLm5hbWUsIHIucHJvdmlkZXIsIHIuc2VjdXJpdHlfbGFiZWwp IH19eyUgZW5kZm9yICV9eyUgZW5kaWYgJX17JSBpZiBkYXRhLmRhdGFjbCAl fQoreyUgZm9yIHByaXYgaW4gZGF0YS5kYXRhY2wgJX17eyBQUklWSUxFR0Uu U0VUKGNvbm4sICdUQUJMRScsIHByaXYuZ3JhbnRlZSwgZGF0YS5uYW1lLCBw cml2LndpdGhvdXRfZ3JhbnQsIHByaXYud2l0aF9ncmFudCwgZGF0YS5zY2hl bWEpIH19eyUgZW5kZm9yICV9eyUgZW5kaWYgJX0KZGlmZiAtLWdpdCBhL3dl Yi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFi YXNlcy9zY2hlbWFzL3ZpZXdzL3RlbXBsYXRlcy92aWV3L3BnLzkuNF9wbHVz L3NxbC9wcm9wZXJ0aWVzLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2Vy dmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3ZpZXdzL3Rl bXBsYXRlcy92aWV3L3BnLzkuNF9wbHVzL3NxbC9wcm9wZXJ0aWVzLnNxbApu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNzM4MGQ4Ci0t LSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJf Z3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdmlld3MvdGVtcGxh dGVzL3ZpZXcvcGcvOS40X3BsdXMvc3FsL3Byb3BlcnRpZXMuc3FsCkBAIC0w LDAgKzEsNzcgQEAKK3sjID09PT09PT09PT09PT09PT09PT09PT09PT09IEZl dGNoIFZpZXcgUHJvcGVydGllcyA9PT09PT09PT09PT09PT09PT09PT09PT09 ICN9Cit7JSBpZiAodmlkIGFuZCBkYXRsYXN0c3lzb2lkKSBvciBzY2lkICV9 CitTRUxFQ1QKKyAgICBjLm9pZCwKKyAgICBjLnhtaW4sCisgICAgYy5yZWxr aW5kLAorICAgIGRlc2NyaXB0aW9uLAorICAgIChDQVNFIFdIRU4gbGVuZ3Ro KHNwYy5zcGNuYW1lKSA+IDAgVEhFTiBzcGMuc3BjbmFtZSBFTFNFICdwZ19k ZWZhdWx0JyBFTkQpIGFzIHNwY25hbWUsCisgICAgYy5yZWxuYW1lIEFTIG5h bWUsCisgICAgYy5yZWx0YWJsZXNwYWNlIEFTIHNwY29pZCwKKyAgICBuc3Au bnNwbmFtZSBBUyBzY2hlbWEsCisgICAgYy5yZWxpc3BvcHVsYXRlZCBBUyBp c3BvcHVsYXRlZCwKKyAgICBwZ19nZXRfdXNlcmJ5aWQoYy5yZWxvd25lcikg QVMgb3duZXIsCisgICAgYXJyYXlfdG9fc3RyaW5nKGMucmVsYWNsOjp0ZXh0 W10sICcsICcpIEFTIGFjbCwKKyAgICBwZ19nZXRfdmlld2RlZihjLm9pZCwg dHJ1ZSkgQVMgZGVmaW5pdGlvbiwKKyAgICB7IyA9PT09PSBDaGVja3MgaWYg aXQgaXMgc3lzdGVtIHZpZXcgPT09PT0gI30KKyAgICB7JSBpZiB2aWQgYW5k IGRhdGxhc3RzeXNvaWQgJX0KKyAgICBDQVNFIFdIRU4ge3t2aWR9fSA8PSB7 e2RhdGxhc3RzeXNvaWR9fSBUSEVOIFRydWUgRUxTRSBGYWxzZSBFTkQgQVMg c3lzdGVtX3ZpZXcsCisgICAgeyUgZW5kaWYgJX0KKyhTRUxFQ1QKKyAgICBh cnJheV9hZ2cobGFiZWwpCitGUk9NCisgICAgcGdfc2VjbGFiZWxzIHNsMQor V0hFUkUKKyAgICBzbDEub2Jqb2lkPWMub2lkIEFORCBzbDEub2Jqc3ViaWQ9 MCkgQVMgbGFiZWxzLAorKFNFTEVDVAorICAgIGFycmF5X2FnZyhwcm92aWRl cikKK0ZST00KKyAgICBwZ19zZWNsYWJlbHMgc2wyCitXSEVSRQorICAgIHNs Mi5vYmpvaWQ9Yy5vaWQgQU5EIHNsMi5vYmpzdWJpZD0wKSBBUyBwcm92aWRl cnMsCisgICAgc3Vic3RyaW5nKGFycmF5X3RvX3N0cmluZyhjLnJlbG9wdGlv bnMsICcsJykKKyAgICAgICAgRlJPTSAnY2hlY2tfb3B0aW9uPShbYS16XSop JykgQVMgY2hlY2tfb3B0aW9uLAorICAgIHN1YnN0cmluZyhhcnJheV90b19z dHJpbmcoYy5yZWxvcHRpb25zLCAnLCcpCisgICAgICAgIEZST00gJ3NlY3Vy aXR5X2JhcnJpZXI9KFthLXp8MC05XSopJykgQVMgc2VjdXJpdHlfYmFycmll cgorRlJPTSBwZ19jbGFzcyBjCitMRUZUIE9VVEVSIEpPSU4gcGdfbmFtZXNw YWNlIG5zcCBvbiBuc3Aub2lkID0gYy5yZWxuYW1lc3BhY2UKK0xFRlQgT1VU RVIgSk9JTiBwZ190YWJsZXNwYWNlIHNwYyBvbiBzcGMub2lkPWMucmVsdGFi bGVzcGFjZQorTEVGVCBPVVRFUiBKT0lOIHBnX2Rlc2NyaXB0aW9uIGRlcyBP TiAoZGVzLm9iam9pZD1jLm9pZCBhbmQgZGVzLm9ianN1YmlkPTAgQU5EIGRl cy5jbGFzc29pZD0ncGdfY2xhc3MnOjpyZWdjbGFzcykKK0xFRlQgT1VURVIg Sk9JTiBwZ19jbGFzcyB0c3QgT04gdHN0Lm9pZCA9IGMucmVsdG9hc3RyZWxp ZAorICAgIFdIRVJFICgoYy5yZWxoYXNydWxlcyBBTkQgKEVYSVNUUyAoCisg ICAgICAgIFNFTEVDVAorICAgICAgICAgICAgci5ydWxlbmFtZQorICAgICAg ICBGUk9NCisgICAgICAgICAgICBwZ19yZXdyaXRlIHIKKyAgICAgICAgV0hF UkUKKyAgICAgICAgICAgICgoci5ldl9jbGFzcyA9IGMub2lkKQorICAgICAg ICAgICAgICAgIEFORCAoYnBjaGFyKHIuZXZfdHlwZSkgPSAnMSc6OmJwY2hh cikpICkpKQorICAgICAgICAgICAgQU5EIChjLnJlbGtpbmQgPSAndic6OmNo YXIpCisgICAgICAgICAgKQoreyUgaWYgKHZpZCBhbmQgZGF0bGFzdHN5c29p ZCkgJX0KKyAgICBBTkQgYy5vaWQgPSB7e3ZpZH19OjpvaWQKK3slIGVsaWYg c2NpZCAlfQorICAgIEFORCBjLnJlbG5hbWVzcGFjZSA9IHt7c2NpZH19Ojpv aWQKK09SREVSIEJZCisgICAgYy5yZWxuYW1lCit7JSBlbmRpZiAlfQorCit7 JSBlbGlmIHR5cGUgPT0gJ3JvbGVzJyAlfQorU0VMRUNUCisgICAgcHIucm9s bmFtZQorRlJPTQorICAgIHBnX3JvbGVzIHByCitXSEVSRQorICAgIHByLnJv bGNhbmxvZ2luCitPUkRFUiBCWQorICAgIHByLnJvbG5hbWUKKworeyUgZWxp ZiB0eXBlID09ICdzY2hlbWFzJyAlfQorU0VMRUNUCisgICAgbnNwLm5zcG5h bWUKK0ZST00KKyAgICBwZ19uYW1lc3BhY2UgbnNwCitXSEVSRQorICAgIChu c3AubnNwbmFtZSBOT1QgTElLRSBFJ3BnXFxfJScKKyAgICAgICAgQU5EIG5z cC5uc3BuYW1lICE9ICdpbmZvcm1hdGlvbl9zY2hlbWEnKQoreyUgZW5kaWYg JX0KZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dy b3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3ZpZXdzL3RlbXBsYXRl cy92aWV3L3BnLzkuNF9wbHVzL3NxbC91cGRhdGUuc3FsIGIvd2ViL3BnYWRt aW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3Nj aGVtYXMvdmlld3MvdGVtcGxhdGVzL3ZpZXcvcGcvOS40X3BsdXMvc3FsL3Vw ZGF0ZS5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u NTYxODNmZAotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dz ZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3Zp ZXdzL3RlbXBsYXRlcy92aWV3L3BnLzkuNF9wbHVzL3NxbC91cGRhdGUuc3Fs CkBAIC0wLDAgKzEsODIgQEAKK3sjID09PT09PT09PT09PT09PT09PT09PT09 PT09PT0gVXBkYXRlIFZpZXcgPT09PT09PT09PT09PT09PT09PT09PT09PSAj fQoreyUgaW1wb3J0ICdtYWNyb3Mvc2VjdXJpdHkubWFjcm9zJyBhcyBTRUNM QUJMRSAlfQoreyUgaW1wb3J0ICdtYWNyb3Mvc2NoZW1hcy9wcml2aWxlZ2Uu bWFjcm9zJyBhcyBQUklWSUxFR0UgJX0KK3slIGlmIGRhdGEgJX0KK3slIHNl dCB2aWV3X25hbWUgPSBkYXRhLm5hbWUgaWYgZGF0YS5uYW1lIGVsc2Ugb19k YXRhLm5hbWUgJX0KK3slIHNldCB2aWV3X3NjaGVtYSA9IGRhdGEuc2NoZW1h IGlmIGRhdGEuc2NoZW1hIGVsc2Ugb19kYXRhLnNjaGVtYSAlfQoreyUgc2V0 IGRlZiA9IGRhdGEuZGVmaW5pdGlvbi5yc3RyaXAoJzsnKSBpZiBkYXRhLmRl ZmluaXRpb24gJX0KK3slIGlmIGRhdGEubmFtZSBhbmQgZGF0YS5uYW1lICE9 IG9fZGF0YS5uYW1lICV9CitBTFRFUiBWSUVXIHt7IGNvbm58cXRJZGVudChv X2RhdGEuc2NoZW1hLCBvX2RhdGEubmFtZSkgfX0KKyAgICBSRU5BTUUgVE8g e3sgY29ubnxxdElkZW50KGRhdGEubmFtZSkgfX07Cit7JSBlbmRpZiAlfQor eyUgaWYgZGF0YS5zY2hlbWEgYW5kIGRhdGEuc2NoZW1hICE9IG9fZGF0YS5z Y2hlbWEgJX0KK0FMVEVSIFZJRVcge3sgY29ubnxxdElkZW50KG9fZGF0YS5z Y2hlbWEsIHZpZXdfbmFtZSApIH19CisgICAgU0VUIFNDSEVNQSB7eyBjb25u fHF0SWRlbnQoZGF0YS5zY2hlbWEpIH19OworeyUgZW5kaWYgJX0KK3slIGlm IGRhdGEub3duZXIgYW5kIGRhdGEub3duZXIgIT0gb19kYXRhLm93bmVyICV9 CitBTFRFUiBUQUJMRSB7eyBjb25ufHF0SWRlbnQodmlld19zY2hlbWEsIHZp ZXdfbmFtZSkgfX0KKyAgICBPV05FUiBUTyB7eyBjb25ufHF0SWRlbnQoZGF0 YS5vd25lcikgfX07Cit7JSBlbmRpZiAlfQoreyUgaWYgZGVmIGFuZCBkZWYg IT0gb19kYXRhLmRlZmluaXRpb24ucnN0cmlwKCc7JykgJX0KK0NSRUFURSBP UiBSRVBMQUNFIFZJRVcge3sgY29ubnxxdElkZW50KHZpZXdfc2NoZW1hLCB2 aWV3X25hbWUpIH19Cit7JSBpZiAoZGF0YS5jaGVja19vcHRpb24gYW5kIGRh dGEuY2hlY2tfb3B0aW9uICE9IG9fZGF0YS5jaGVja19vcHRpb24pCisgICAg b3IgKGRhdGEuc2VjdXJpdHlfYmFycmllciBhbmQgZGF0YS5zZWN1cml0eV9i YXJyaWVyICE9IG9fZGF0YS5zZWN1cml0eV9iYXJyaWVyKSAlfQorICAgIFdJ VEggKHslIGlmIChkYXRhLmNoZWNrX29wdGlvbiBhbmQgZGF0YS5jaGVja19v cHRpb24gIT0gJ25vJykgJX1jaGVja19vcHRpb249e3sgZGF0YS5jaGVja19v cHRpb24gfX17JSBlbmRpZiAlfXt7JywgJyBpZiBkYXRhLmNoZWNrX29wdGlv biBhbmQgZGF0YS5jaGVja19vcHRpb24gIT0gJ25vJyBhbmQgZGF0YS5zZWN1 cml0eV9iYXJyaWVyIH19eyUgaWYgZGF0YS5zZWN1cml0eV9iYXJyaWVyICV9 c2VjdXJpdHlfYmFycmllcj17eyBkYXRhLnNlY3VyaXR5X2JhcnJpZXJ8bG93 ZXIgfX17JSBlbmRpZiAlfSkKK3slIGVuZGlmICV9CisgICAgQVN7eyBkZWYg fX07Cit7JSBlbHNlICV9Cit7JSBpZiAoZGF0YS5zZWN1cml0eV9iYXJyaWVy IGlzIGRlZmluZWQgYW5kIGRhdGEuc2VjdXJpdHlfYmFycmllcnxsb3dlciAh PSAgb19kYXRhLnNlY3VyaXR5X2JhcnJpZXJ8bG93ZXIpICV9CitBTFRFUiBW SUVXIHt7IGNvbm58cXRJZGVudCh2aWV3X3NjaGVtYSwgdmlld19uYW1lKSB9 fQorICAgIFNFVCAoc2VjdXJpdHlfYmFycmllcj17eyBkYXRhLnNlY3VyaXR5 X2JhcnJpZXJ8bG93ZXIgfX0pOworeyUgZW5kaWYgJX0KK3slIGlmIChkYXRh LmNoZWNrX29wdGlvbiBhbmQgZGF0YS5jaGVja19vcHRpb24gIT0gb19kYXRh LmNoZWNrX29wdGlvbiBhbmQgZGF0YS5jaGVja19vcHRpb24gIT0gJ25vJykg JX0KK0FMVEVSIFZJRVcge3sgY29ubnxxdElkZW50KHZpZXdfc2NoZW1hLCB2 aWV3X25hbWUpIH19CisgICAgU0VUIChjaGVja19vcHRpb249e3sgZGF0YS5j aGVja19vcHRpb24gfX0pOworeyUgZWxpZiAoZGF0YS5jaGVja19vcHRpb24g YW5kIGRhdGEuY2hlY2tfb3B0aW9uICE9IG9fZGF0YS5jaGVja19vcHRpb24g YW5kIGRhdGEuY2hlY2tfb3B0aW9uID09ICdubycpICV9CitBTFRFUiBWSUVX IHt7IGNvbm58cXRJZGVudCh2aWV3X3NjaGVtYSwgdmlld19uYW1lKSB9fSBS RVNFVCAoY2hlY2tfb3B0aW9uKTsKK3slIGVuZGlmICV9Cit7JSBlbmRpZiAl fQorCit7JSBpZiBkYXRhLmNvbW1lbnQgYW5kIGRhdGEuY29tbWVudCAhPSBv X2RhdGEuY29tbWVudCAlfQorQ09NTUVOVCBPTiBWSUVXIHt7IGNvbm58cXRJ ZGVudCh2aWV3X3NjaGVtYSwgdmlld19uYW1lKSB9fQorICAgIElTIHt7IGRh dGEuY29tbWVudHxxdExpdGVyYWwgfX07Cit7JSBlbmRpZiAlfQoreyMgVGhl IFNRTCBnZW5lcmF0ZWQgYmVsb3cgd2lsbCBjaGFuZ2UgcHJpdmlsZWdlcyAj fQoreyUgaWYgZGF0YS5kYXRhY2wgJX0KK3slIGlmICdkZWxldGVkJyBpbiBk YXRhLmRhdGFjbCAlfQoreyUgZm9yIHByaXYgaW4gZGF0YS5kYXRhY2wuZGVs ZXRlZCAlfQore3sgUFJJVklMRUdFLlVOU0VUQUxMKGNvbm4sICdUQUJMRScs IHByaXYuZ3JhbnRlZSwgZGF0YS5uYW1lLCBkYXRhLnNjaGVtYSkgfX0KK3sl IGVuZGZvciAlfQoreyUgZW5kaWYgJX0KK3slIGlmICdjaGFuZ2VkJyBpbiBk YXRhLmRhdGFjbCAlfQoreyUgZm9yIHByaXYgaW4gZGF0YS5kYXRhY2wuY2hh bmdlZCAlfQore3sgUFJJVklMRUdFLlVOU0VUQUxMKGNvbm4sICdUQUJMRScs IHByaXYuZ3JhbnRlZSwgZGF0YS5uYW1lLCBkYXRhLnNjaGVtYSkgfX0KK3t7 IFBSSVZJTEVHRS5TRVQoY29ubiwgJ1RBQkxFJywgcHJpdi5ncmFudGVlLCBk YXRhLm5hbWUsIHByaXYud2l0aG91dF9ncmFudCwgcHJpdi53aXRoX2dyYW50 LCBkYXRhLnNjaGVtYSkgfX0KK3slIGVuZGZvciAlfQoreyUgZW5kaWYgJX0K K3slIGlmICdhZGRlZCcgaW4gZGF0YS5kYXRhY2wgJX0KK3slIGZvciBwcml2 IGluIGRhdGEuZGF0YWNsLmFkZGVkICV9Cit7eyBQUklWSUxFR0UuU0VUKGNv bm4sICdUQUJMRScsIHByaXYuZ3JhbnRlZSwgZGF0YS5uYW1lLCBwcml2Lndp dGhvdXRfZ3JhbnQsIHByaXYud2l0aF9ncmFudCwgZGF0YS5zY2hlbWEpIH19 Cit7JSBlbmRmb3IgJX0KK3slIGVuZGlmICV9Cit7JSBlbmRpZiAlfQoreyMg VGhlIFNRTCBnZW5lcmF0ZWQgYmVsb3cgd2lsbCBjaGFuZ2UgU2VjdXJpdHkg TGFiZWwgI30KK3slIGlmIGRhdGEuc2VjbGFiZWxzIGlzIG5vdCBub25lIGFu ZCBkYXRhLnNlY2xhYmVsc3xsZW5ndGggPiAwICV9Cit7JSBzZXQgc2VjbGFi ZWxzID0gZGF0YS5zZWNsYWJlbHMgJX0KK3slIGlmICdkZWxldGVkJyBpbiBz ZWNsYWJlbHMgYW5kIHNlY2xhYmVscy5kZWxldGVkfGxlbmd0aCA+IDAgJX0K K3slIGZvciByIGluIHNlY2xhYmVscy5kZWxldGVkICV9Cit7eyBTRUNMQUJM RS5EUk9QKGNvbm4sICdWSUVXJywgZGF0YS5uYW1lLCByLnByb3ZpZGVyKSB9 fQoreyUgZW5kZm9yICV9Cit7JSBlbmRpZiAlfQoreyUgaWYgJ2FkZGVkJyBp biBzZWNsYWJlbHMgYW5kIHNlY2xhYmVscy5hZGRlZHxsZW5ndGggPiAwICV9 Cit7JSBmb3IgciBpbiBzZWNsYWJlbHMuYWRkZWQgJX0KK3t7IFNFQ0xBQkxF LkFQUExZKGNvbm4sICdWSUVXJywgZGF0YS5uYW1lLCByLnByb3ZpZGVyLCBy LnNlY3VyaXR5X2xhYmVsKSB9fQoreyUgZW5kZm9yICV9Cit7JSBlbmRpZiAl fQoreyUgaWYgJ2NoYW5nZWQnIGluIHNlY2xhYmVscyBhbmQgc2VjbGFiZWxz LmNoYW5nZWR8bGVuZ3RoID4gMCAlfQoreyUgZm9yIHIgaW4gc2VjbGFiZWxz LmNoYW5nZWQgJX0KK3t7IFNFQ0xBQkxFLkFQUExZKGNvbm4sICdWSUVXJywg ZGF0YS5uYW1lLCByLnByb3ZpZGVyLCByLnNlY3VyaXR5X2xhYmVsKSB9fQor eyUgZW5kZm9yICV9Cit7JSBlbmRpZiAlfQoreyUgZW5kaWYgJX0KK3slIGVu ZGlmICV9CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZl cl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy92aWV3cy90ZW1w bGF0ZXMvdmlldy9wZy85LjRfcGx1cy9zcWwvdmlld19pZC5zcWwgYi93ZWIv cGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFz ZXMvc2NoZW1hcy92aWV3cy90ZW1wbGF0ZXMvdmlldy9wZy85LjRfcGx1cy9z cWwvdmlld19pZC5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMC4uZWYyNzU5NAotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWlu L2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hl bWFzL3ZpZXdzL3RlbXBsYXRlcy92aWV3L3BnLzkuNF9wbHVzL3NxbC92aWV3 X2lkLnNxbApAQCAtMCwwICsxLDQgQEAKK3sjID09PT09IEJlbG93IHdpbGwg cHJvdmlkZSB2aWV3IGlkIGZvciBsYXN0IGNyZWF0ZWQgdmlldyA9PT09PSAj fQoreyUgaWYgZGF0YSAlfQorU0VMRUNUIGMub2lkIEZST00gcGdfY2xhc3Mg YyBXSEVSRSBjLnJlbG5hbWUgPSAne3sgZGF0YS5uYW1lIH19JzsKK3slIGVu ZGlmICV9CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZl cl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy92aWV3cy90ZW1w bGF0ZXMvdmlldy9wcGFzLzkuMV9wbHVzL3NxbC9hY2wuc3FsIGIvd2ViL3Bn YWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2Vz L3NjaGVtYXMvdmlld3MvdGVtcGxhdGVzL3ZpZXcvcHBhcy85LjFfcGx1cy9z cWwvYWNsLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw Li43ZDc5MWY1Ci0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJv d3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMv dmlld3MvdGVtcGxhdGVzL3ZpZXcvcHBhcy85LjFfcGx1cy9zcWwvYWNsLnNx bApAQCAtMCwwICsxLDM5IEBACit7IyA9PT09PT09PT09PT09PT09PT09PT09 PT09PT09IEdldCBBQ0xzID09PT09PT09PT09PT09PT09PT09PT09PT0gI30K K3slIGlmIHZpZCAlfQorU0VMRUNUCisgICAgJ2RhdGFjbCcgYXMgZGVmdHlw ZSwKKyAgICBDT0FMRVNDRShndC5yb2xuYW1lLCAncHVibGljJykgZ3JhbnRl ZSwKKyAgICBnLnJvbG5hbWUgZ3JhbnRvciwKKyAgICBhcnJheV9hZ2cocHJp dmlsZWdlX3R5cGUpIGFzIHByaXZpbGVnZXMsCisgICAgYXJyYXlfYWdnKGlz X2dyYW50YWJsZSkgYXMgZ3JhbnRhYmxlCitGUk9NCisgICAgKFNFTEVDVAor ICAgICAgICBkLmdyYW50ZWUsIGQuZ3JhbnRvciwgZC5pc19ncmFudGFibGUs CisgICAgICAgIENBU0UgZC5wcml2aWxlZ2VfdHlwZQorICAgICAgICBXSEVO ICdERUxFVEUnIFRIRU4gJ2QnCisgICAgICAgIFdIRU4gJ0lOU0VSVCcgVEhF TiAnYScKKyAgICAgICAgV0hFTiAnUkVGRVJFTkNFUycgVEhFTiAneCcKKyAg ICAgICAgV0hFTiAnU0VMRUNUJyBUSEVOICdyJworICAgICAgICBXSEVOICdU UklHR0VSJyBUSEVOICd0JworICAgICAgICBXSEVOICdVUERBVEUnIFRIRU4g J3cnCisgICAgICAgIFdIRU4gJ1RSVU5DQVRFJyBUSEVOICdEJworICAgICAg ICBFTFNFICdVTktOT1dOJworICAgICAgICBFTkQgQVMgcHJpdmlsZWdlX3R5 cGUKKyAgICBGUk9NCisgICAgICAgIChTRUxFQ1QKKyAgICAgICAgICAgIHJl bGFjbAorICAgICAgICAgRlJPTQorICAgICAgICAgICAgcGdfY2xhc3MgY2wK KyAgICAgICAgIExFRlQgT1VURVIgSk9JTiBwZ19zaGRlc2NyaXB0aW9uIGRl c2NyIE9OCisgICAgICAgICAgICAoY2wub2lkPWRlc2NyLm9iam9pZCBBTkQg ZGVzY3IuY2xhc3NvaWQ9J3BnX2NsYXNzJzo6cmVnY2xhc3MpCisgICAgICAg ICBXSEVSRQorICAgICAgICAgICAgY2wub2lkID0ge3sgdmlkIH19OjpPSUQg QU5EIHJlbGtpbmQgPSAndicKKyAgICAgICAgKSBhY2wsCisgICAgICAgIGFj bGV4cGxvZGUocmVsYWNsKSBkCisgICAgKSBkCitMRUZUIEpPSU4gcGdfY2F0 YWxvZy5wZ19yb2xlcyBnIE9OIChkLmdyYW50b3IgPSBnLm9pZCkKK0xFRlQg Sk9JTiBwZ19jYXRhbG9nLnBnX3JvbGVzIGd0IE9OIChkLmdyYW50ZWUgPSBn dC5vaWQpCitHUk9VUCBCWQorICAgIGcucm9sbmFtZSwKKyAgICBndC5yb2xu YW1lCit7JSBlbmRpZiAlfQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJv d3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMv dmlld3MvdGVtcGxhdGVzL3ZpZXcvcHBhcy85LjFfcGx1cy9zcWwvY3JlYXRl LnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2 ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3ZpZXdzL3RlbXBsYXRlcy92aWV3L3Bw YXMvOS4xX3BsdXMvc3FsL2NyZWF0ZS5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMC4uNTcyMGIxNAotLS0gL2Rldi9udWxsCisrKyBi L3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2Rh dGFiYXNlcy9zY2hlbWFzL3ZpZXdzL3RlbXBsYXRlcy92aWV3L3BwYXMvOS4x X3BsdXMvc3FsL2NyZWF0ZS5zcWwKQEAgLTAsMCArMSwyMCBAQAoreyM9PT09 PT09PT09PT09PT09PT09PT09PT09PT09Q3JlYXRlIG5ldyB2aWV3PT09PT09 PT09PT09PT09PT09PT09PT09PSN9Cit7JSBpZiBkaXNwbGF5X2NvbW1lbnRz ICV9CistLSBWaWV3OiB7eyBjb25ufHF0SWRlbnQoZGF0YS5zY2hlbWEsIGRh dGEubmFtZSkgfX0KKworLS0gRFJPUCBWSUVXIHt7IGNvbm58cXRJZGVudChk YXRhLnNjaGVtYSwgZGF0YS5uYW1lKSB9fTsKKworeyUgZW5kaWYgJX0KK3sl IGlmIGRhdGEubmFtZSBhbmQgZGF0YS5zY2hlbWEgYW5kIGRhdGEuZGVmaW5p dGlvbiAlfQorQ1JFQVRFIE9SIFJFUExBQ0UgVklFVyB7eyBjb25ufHF0SWRl bnQoZGF0YS5zY2hlbWEsIGRhdGEubmFtZSkgfX0gQVMKK3t7IGRhdGEuZGVm aW5pdGlvbi5yc3RyaXAoJzsnKSB9fTsKK3slIGlmIGRhdGEub3duZXIgJX0K KworQUxURVIgVEFCTEUge3sgY29ubnxxdElkZW50KGRhdGEuc2NoZW1hLCBk YXRhLm5hbWUpIH19CisgICAgT1dORVIgVE8ge3sgY29ubnxxdElkZW50KGRh dGEub3duZXIpIH19OworeyUgZW5kaWYgJX0KK3slIGlmIGRhdGEuY29tbWVu dCAlfQorQ09NTUVOVCBPTiBWSUVXIHt7IGNvbm58cXRJZGVudChkYXRhLnNj aGVtYSwgZGF0YS5uYW1lKSB9fQorICAgIElTIHt7IGRhdGEuY29tbWVudHxx dExpdGVyYWwgfX07Cit7JSBlbmRpZiAlfQoreyUgZW5kaWYgJX0KZGlmZiAt LWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2 ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3ZpZXdzL3RlbXBsYXRlcy92aWV3L3Bw YXMvOS4xX3BsdXMvc3FsL2RlbGV0ZS5zcWwgYi93ZWIvcGdhZG1pbi9icm93 c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy92 aWV3cy90ZW1wbGF0ZXMvdmlldy9wcGFzLzkuMV9wbHVzL3NxbC9kZWxldGUu c3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU1MGJl ZWMKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3Nl cnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy92aWV3cy90 ZW1wbGF0ZXMvdmlldy9wcGFzLzkuMV9wbHVzL3NxbC9kZWxldGUuc3FsCkBA IC0wLDAgKzEsMTMgQEAKK3sjID09PT09PT09PT09PT09PT09PT09PT0gRHJv cC9DYXNjYWRlIHZpZXcgYnkgbmFtZSA9PT09PT09PT09PT09PT09PT09PT0g I30KK3slIGlmIHZpZCAlfQorU0VMRUNUCisgICAgYy5yZWxuYW1lIEFTIG5h bWUsCisgICAgbnNwLm5zcG5hbWUKK0ZST00KKyAgICBwZ19jbGFzcyBjCitM RUZUIEpPSU4gcGdfbmFtZXNwYWNlIG5zcCBPTiBjLnJlbG5hbWVzcGFjZSA9 IG5zcC5vaWQKK1dIRVJFCisgICAgYy5yZWxmaWxlbm9kZSA9IHt7IHZpZCB9 fTsKK3slIGVsaWYgKG5hbWUgYW5kIG5zcG5hbWUpICV9CitEUk9QIFZJRVcg e3tuc3BuYW1lfX0ue3sgY29ubnxxdElkZW50KG5hbWUpIH19IHslIGlmIGNh c2NhZGUgJX0gQ0FTQ0FERSB7JSBlbmRpZiAlfQoreyUgZW5kaWYgJX0KZGlm ZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9z ZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3ZpZXdzL3RlbXBsYXRlcy92aWV3 L3BwYXMvOS4xX3BsdXMvc3FsL2dldF9zY2hlbWEuc3FsIGIvd2ViL3BnYWRt aW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3Nj aGVtYXMvdmlld3MvdGVtcGxhdGVzL3ZpZXcvcHBhcy85LjFfcGx1cy9zcWwv Z2V0X3NjaGVtYS5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMC4uMTI3ZDRiOQotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWlu L2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hl bWFzL3ZpZXdzL3RlbXBsYXRlcy92aWV3L3BwYXMvOS4xX3BsdXMvc3FsL2dl dF9zY2hlbWEuc3FsCkBAIC0wLDAgKzEsNiBAQAorU0VMRUNUCisgICAgbnNw bmFtZQorRlJPTQorICAgIHBnX25hbWVzcGFjZQorV0hFUkUKKyAgICBvaWQg PSB7eyBzY2lkIH19OjpvaWQ7CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9i cm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1h cy92aWV3cy90ZW1wbGF0ZXMvdmlldy9wcGFzLzkuMV9wbHVzL3NxbC9ncmFu dC5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2Vy dmVycy9kYXRhYmFzZXMvc2NoZW1hcy92aWV3cy90ZW1wbGF0ZXMvdmlldy9w cGFzLzkuMV9wbHVzL3NxbC9ncmFudC5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMC4uNTlhMzEwZgotLS0gL2Rldi9udWxsCisrKyBi L3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2Rh dGFiYXNlcy9zY2hlbWFzL3ZpZXdzL3RlbXBsYXRlcy92aWV3L3BwYXMvOS4x X3BsdXMvc3FsL2dyYW50LnNxbApAQCAtMCwwICsxLDYgQEAKK3sjID09PT09 IEdyYW50IFBlcm1pc3Npb25zIHRvIFVzZXIgUm9sZSBvbiBWaWV3cy9UYWJs ZXMgPT09PT0gI30KK3slIGltcG9ydCAnbWFjcm9zL3NlY3VyaXR5Lm1hY3Jv cycgYXMgU0VDTEFCTEUgJX0KK3slIGltcG9ydCAnbWFjcm9zL3NjaGVtYXMv cHJpdmlsZWdlLm1hY3JvcycgYXMgUFJJVklMRUdFICV9Cit7IyA9PT09PSBX ZSB3aWxsIGdlbmVyYXRlIFNlY3VyaXR5IExhYmVsIFNRTCB1c2luZyBtYWNy byA9PT09PSAjfQoreyUgaWYgZGF0YS5zZWNsYWJlbHMgJX17JSBmb3IgciBp biBkYXRhLnNlY2xhYmVscyAlfXt7IFNFQ0xBQkxFLkFQUExZKGNvbm4sICdW SUVXJywgZGF0YS5uYW1lLCByLnByb3ZpZGVyLCByLnNlY3VyaXR5X2xhYmVs KSB9fXslIGVuZGZvciAlfXslIGVuZGlmICV9eyUgaWYgZGF0YS5kYXRhY2wg JX0KK3slIGZvciBwcml2IGluIGRhdGEuZGF0YWNsICV9e3sgUFJJVklMRUdF LlNFVChjb25uLCAnVEFCTEUnLCBwcml2LmdyYW50ZWUsIGRhdGEubmFtZSwg cHJpdi53aXRob3V0X2dyYW50LCBwcml2LndpdGhfZ3JhbnQsIGRhdGEuc2No ZW1hKSB9fXslIGVuZGZvciAlfXslIGVuZGlmICV9CmRpZmYgLS1naXQgYS93 ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRh YmFzZXMvc2NoZW1hcy92aWV3cy90ZW1wbGF0ZXMvdmlldy9wcGFzLzkuMV9w bHVzL3NxbC9wcm9wZXJ0aWVzLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIv c2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3ZpZXdz L3RlbXBsYXRlcy92aWV3L3BwYXMvOS4xX3BsdXMvc3FsL3Byb3BlcnRpZXMu c3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJhZjEy NTIKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3Nl cnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy92aWV3cy90 ZW1wbGF0ZXMvdmlldy9wcGFzLzkuMV9wbHVzL3NxbC9wcm9wZXJ0aWVzLnNx bApAQCAtMCwwICsxLDc2IEBACit7JSBpZiAodmlkIGFuZCBkYXRsYXN0c3lz b2lkKSBvciBzY2lkICV9CitTRUxFQ1QKKyAgICBjLm9pZCwKKyAgICBjLnht aW4sCisgICAgYy5yZWxraW5kLAorICAgIGRlc2NyaXB0aW9uLAorICAgIChD QVNFIFdIRU4gbGVuZ3RoKHNwYy5zcGNuYW1lKSA+IDAgVEhFTiBzcGMuc3Bj bmFtZSBFTFNFICdwZ19kZWZhdWx0JyBFTkQpIGFzIHNwY25hbWUsCisgICAg Yy5yZWxuYW1lIEFTIG5hbWUsCisgICAgYy5yZWx0YWJsZXNwYWNlIEFTIHNw Y29pZCwKKyAgICBuc3AubnNwbmFtZSBBUyBzY2hlbWEsCisgICAgYy5yZWxp c3BvcHVsYXRlZCBBUyBpc3BvcHVsYXRlZCwKKyAgICBwZ19nZXRfdXNlcmJ5 aWQoYy5yZWxvd25lcikgQVMgb3duZXIsCisgICAgYXJyYXlfdG9fc3RyaW5n KGMucmVsYWNsOjp0ZXh0W10sICcsICcpIEFTIGFjbCwKKyAgICBwZ19nZXRf dmlld2RlZihjLm9pZCwgdHJ1ZSkgQVMgZGVmaW5pdGlvbiwKKyAgICB7IyA9 PT09PSBDaGVja3MgaWYgaXQgaXMgc3lzdGVtIHZpZXcgPT09PT0gI30KKyAg ICB7JSBpZiB2aWQgYW5kIGRhdGxhc3RzeXNvaWQgJX0KKyAgICBDQVNFIFdI RU4ge3t2aWR9fSA8PSB7e2RhdGxhc3RzeXNvaWR9fSBUSEVOIFRydWUgRUxT RSBGYWxzZSBFTkQgQVMgc3lzdGVtX3ZpZXcsCisgICAgeyUgZW5kaWYgJX0K KyhTRUxFQ1QKKyAgICBhcnJheV9hZ2cobGFiZWwpCitGUk9NCisgICAgcGdf c2VjbGFiZWxzIHNsMQorV0hFUkUKKyAgICBzbDEub2Jqb2lkPWMub2lkIEFO RCBzbDEub2Jqc3ViaWQ9MCkgQVMgbGFiZWxzLAorKFNFTEVDVAorICAgIGFy cmF5X2FnZyhwcm92aWRlcikKK0ZST00KKyAgICBwZ19zZWNsYWJlbHMgc2wy CitXSEVSRQorICAgIHNsMi5vYmpvaWQ9Yy5vaWQgQU5EIHNsMi5vYmpzdWJp ZD0wKSBBUyBwcm92aWRlcnMsCisgICAgc3Vic3RyaW5nKGFycmF5X3RvX3N0 cmluZyhjLnJlbG9wdGlvbnMsICcsJykKKyAgICAgICAgRlJPTSAnY2hlY2tf b3B0aW9uPShbYS16XSopJykgQVMgY2hlY2tfb3B0aW9uLAorICAgIHN1YnN0 cmluZyhhcnJheV90b19zdHJpbmcoYy5yZWxvcHRpb25zLCAnLCcpCisgICAg ICAgIEZST00gJ3NlY3VyaXR5X2JhcnJpZXI9KFthLXp8MC05XSopJykgQVMg c2VjdXJpdHlfYmFycmllcgorRlJPTSBwZ19jbGFzcyBjCitMRUZUIE9VVEVS IEpPSU4gcGdfbmFtZXNwYWNlIG5zcCBvbiBuc3Aub2lkID0gYy5yZWxuYW1l c3BhY2UKK0xFRlQgT1VURVIgSk9JTiBwZ190YWJsZXNwYWNlIHNwYyBvbiBz cGMub2lkPWMucmVsdGFibGVzcGFjZQorTEVGVCBPVVRFUiBKT0lOIHBnX2Rl c2NyaXB0aW9uIGRlcyBPTiAoZGVzLm9iam9pZD1jLm9pZCBhbmQgZGVzLm9i anN1YmlkPTAgQU5EIGRlcy5jbGFzc29pZD0ncGdfY2xhc3MnOjpyZWdjbGFz cykKK0xFRlQgT1VURVIgSk9JTiBwZ19jbGFzcyB0c3QgT04gdHN0Lm9pZCA9 IGMucmVsdG9hc3RyZWxpZAorICAgIFdIRVJFICgoYy5yZWxoYXNydWxlcyBB TkQgKEVYSVNUUyAoCisgICAgICAgIFNFTEVDVAorICAgICAgICAgICAgci5y dWxlbmFtZQorICAgICAgICBGUk9NCisgICAgICAgICAgICBwZ19yZXdyaXRl IHIKKyAgICAgICAgV0hFUkUKKyAgICAgICAgICAgICgoci5ldl9jbGFzcyA9 IGMub2lkKQorICAgICAgICAgICAgICAgIEFORCAoYnBjaGFyKHIuZXZfdHlw ZSkgPSAnMSc6OmJwY2hhcikpICkpKQorICAgICAgICAgICAgQU5EIChjLnJl bGtpbmQgPSAndic6OmNoYXIpCisgICAgICAgICAgKQoreyUgaWYgKHZpZCBh bmQgZGF0bGFzdHN5c29pZCkgJX0KKyAgICBBTkQgYy5vaWQgPSB7e3ZpZH19 OjpvaWQKK3slIGVsaWYgc2NpZCAlfQorICAgIEFORCBjLnJlbG5hbWVzcGFj ZSA9IHt7c2NpZH19OjpvaWQKK09SREVSIEJZCisgICAgYy5yZWxuYW1lCit7 JSBlbmRpZiAlfQorCit7JSBlbGlmIHR5cGUgPT0gJ3JvbGVzJyAlfQorU0VM RUNUCisgICAgcHIucm9sbmFtZQorRlJPTQorICAgIHBnX3JvbGVzIHByCitX SEVSRQorICAgIHByLnJvbGNhbmxvZ2luCitPUkRFUiBCWQorICAgIHByLnJv bG5hbWUKKworeyUgZWxpZiB0eXBlID09ICdzY2hlbWFzJyAlfQorU0VMRUNU CisgICAgbnNwLm5zcG5hbWUKK0ZST00KKyAgICBwZ19uYW1lc3BhY2UgbnNw CitXSEVSRQorICAgIChuc3AubnNwbmFtZSBOT1QgTElLRSBFJ3BnXFxfJScK KyAgICAgICAgQU5EIG5zcC5uc3BuYW1lICE9ICdpbmZvcm1hdGlvbl9zY2hl bWEnKQoreyUgZW5kaWYgJX0KZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jy b3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFz L3ZpZXdzL3RlbXBsYXRlcy92aWV3L3BwYXMvOS4xX3BsdXMvc3FsL3VwZGF0 ZS5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2Vy dmVycy9kYXRhYmFzZXMvc2NoZW1hcy92aWV3cy90ZW1wbGF0ZXMvdmlldy9w cGFzLzkuMV9wbHVzL3NxbC91cGRhdGUuc3FsCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAuLjU2MTgzZmQKLS0tIC9kZXYvbnVsbAorKysg Yi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9k YXRhYmFzZXMvc2NoZW1hcy92aWV3cy90ZW1wbGF0ZXMvdmlldy9wcGFzLzku MV9wbHVzL3NxbC91cGRhdGUuc3FsCkBAIC0wLDAgKzEsODIgQEAKK3sjID09 PT09PT09PT09PT09PT09PT09PT09PT09PT0gVXBkYXRlIFZpZXcgPT09PT09 PT09PT09PT09PT09PT09PT09PSAjfQoreyUgaW1wb3J0ICdtYWNyb3Mvc2Vj dXJpdHkubWFjcm9zJyBhcyBTRUNMQUJMRSAlfQoreyUgaW1wb3J0ICdtYWNy b3Mvc2NoZW1hcy9wcml2aWxlZ2UubWFjcm9zJyBhcyBQUklWSUxFR0UgJX0K K3slIGlmIGRhdGEgJX0KK3slIHNldCB2aWV3X25hbWUgPSBkYXRhLm5hbWUg aWYgZGF0YS5uYW1lIGVsc2Ugb19kYXRhLm5hbWUgJX0KK3slIHNldCB2aWV3 X3NjaGVtYSA9IGRhdGEuc2NoZW1hIGlmIGRhdGEuc2NoZW1hIGVsc2Ugb19k YXRhLnNjaGVtYSAlfQoreyUgc2V0IGRlZiA9IGRhdGEuZGVmaW5pdGlvbi5y c3RyaXAoJzsnKSBpZiBkYXRhLmRlZmluaXRpb24gJX0KK3slIGlmIGRhdGEu bmFtZSBhbmQgZGF0YS5uYW1lICE9IG9fZGF0YS5uYW1lICV9CitBTFRFUiBW SUVXIHt7IGNvbm58cXRJZGVudChvX2RhdGEuc2NoZW1hLCBvX2RhdGEubmFt ZSkgfX0KKyAgICBSRU5BTUUgVE8ge3sgY29ubnxxdElkZW50KGRhdGEubmFt ZSkgfX07Cit7JSBlbmRpZiAlfQoreyUgaWYgZGF0YS5zY2hlbWEgYW5kIGRh dGEuc2NoZW1hICE9IG9fZGF0YS5zY2hlbWEgJX0KK0FMVEVSIFZJRVcge3sg Y29ubnxxdElkZW50KG9fZGF0YS5zY2hlbWEsIHZpZXdfbmFtZSApIH19Cisg ICAgU0VUIFNDSEVNQSB7eyBjb25ufHF0SWRlbnQoZGF0YS5zY2hlbWEpIH19 OworeyUgZW5kaWYgJX0KK3slIGlmIGRhdGEub3duZXIgYW5kIGRhdGEub3du ZXIgIT0gb19kYXRhLm93bmVyICV9CitBTFRFUiBUQUJMRSB7eyBjb25ufHF0 SWRlbnQodmlld19zY2hlbWEsIHZpZXdfbmFtZSkgfX0KKyAgICBPV05FUiBU TyB7eyBjb25ufHF0SWRlbnQoZGF0YS5vd25lcikgfX07Cit7JSBlbmRpZiAl fQoreyUgaWYgZGVmIGFuZCBkZWYgIT0gb19kYXRhLmRlZmluaXRpb24ucnN0 cmlwKCc7JykgJX0KK0NSRUFURSBPUiBSRVBMQUNFIFZJRVcge3sgY29ubnxx dElkZW50KHZpZXdfc2NoZW1hLCB2aWV3X25hbWUpIH19Cit7JSBpZiAoZGF0 YS5jaGVja19vcHRpb24gYW5kIGRhdGEuY2hlY2tfb3B0aW9uICE9IG9fZGF0 YS5jaGVja19vcHRpb24pCisgICAgb3IgKGRhdGEuc2VjdXJpdHlfYmFycmll ciBhbmQgZGF0YS5zZWN1cml0eV9iYXJyaWVyICE9IG9fZGF0YS5zZWN1cml0 eV9iYXJyaWVyKSAlfQorICAgIFdJVEggKHslIGlmIChkYXRhLmNoZWNrX29w dGlvbiBhbmQgZGF0YS5jaGVja19vcHRpb24gIT0gJ25vJykgJX1jaGVja19v cHRpb249e3sgZGF0YS5jaGVja19vcHRpb24gfX17JSBlbmRpZiAlfXt7Jywg JyBpZiBkYXRhLmNoZWNrX29wdGlvbiBhbmQgZGF0YS5jaGVja19vcHRpb24g IT0gJ25vJyBhbmQgZGF0YS5zZWN1cml0eV9iYXJyaWVyIH19eyUgaWYgZGF0 YS5zZWN1cml0eV9iYXJyaWVyICV9c2VjdXJpdHlfYmFycmllcj17eyBkYXRh LnNlY3VyaXR5X2JhcnJpZXJ8bG93ZXIgfX17JSBlbmRpZiAlfSkKK3slIGVu ZGlmICV9CisgICAgQVN7eyBkZWYgfX07Cit7JSBlbHNlICV9Cit7JSBpZiAo ZGF0YS5zZWN1cml0eV9iYXJyaWVyIGlzIGRlZmluZWQgYW5kIGRhdGEuc2Vj dXJpdHlfYmFycmllcnxsb3dlciAhPSAgb19kYXRhLnNlY3VyaXR5X2JhcnJp ZXJ8bG93ZXIpICV9CitBTFRFUiBWSUVXIHt7IGNvbm58cXRJZGVudCh2aWV3 X3NjaGVtYSwgdmlld19uYW1lKSB9fQorICAgIFNFVCAoc2VjdXJpdHlfYmFy cmllcj17eyBkYXRhLnNlY3VyaXR5X2JhcnJpZXJ8bG93ZXIgfX0pOworeyUg ZW5kaWYgJX0KK3slIGlmIChkYXRhLmNoZWNrX29wdGlvbiBhbmQgZGF0YS5j aGVja19vcHRpb24gIT0gb19kYXRhLmNoZWNrX29wdGlvbiBhbmQgZGF0YS5j aGVja19vcHRpb24gIT0gJ25vJykgJX0KK0FMVEVSIFZJRVcge3sgY29ubnxx dElkZW50KHZpZXdfc2NoZW1hLCB2aWV3X25hbWUpIH19CisgICAgU0VUIChj aGVja19vcHRpb249e3sgZGF0YS5jaGVja19vcHRpb24gfX0pOworeyUgZWxp ZiAoZGF0YS5jaGVja19vcHRpb24gYW5kIGRhdGEuY2hlY2tfb3B0aW9uICE9 IG9fZGF0YS5jaGVja19vcHRpb24gYW5kIGRhdGEuY2hlY2tfb3B0aW9uID09 ICdubycpICV9CitBTFRFUiBWSUVXIHt7IGNvbm58cXRJZGVudCh2aWV3X3Nj aGVtYSwgdmlld19uYW1lKSB9fSBSRVNFVCAoY2hlY2tfb3B0aW9uKTsKK3sl IGVuZGlmICV9Cit7JSBlbmRpZiAlfQorCit7JSBpZiBkYXRhLmNvbW1lbnQg YW5kIGRhdGEuY29tbWVudCAhPSBvX2RhdGEuY29tbWVudCAlfQorQ09NTUVO VCBPTiBWSUVXIHt7IGNvbm58cXRJZGVudCh2aWV3X3NjaGVtYSwgdmlld19u YW1lKSB9fQorICAgIElTIHt7IGRhdGEuY29tbWVudHxxdExpdGVyYWwgfX07 Cit7JSBlbmRpZiAlfQoreyMgVGhlIFNRTCBnZW5lcmF0ZWQgYmVsb3cgd2ls bCBjaGFuZ2UgcHJpdmlsZWdlcyAjfQoreyUgaWYgZGF0YS5kYXRhY2wgJX0K K3slIGlmICdkZWxldGVkJyBpbiBkYXRhLmRhdGFjbCAlfQoreyUgZm9yIHBy aXYgaW4gZGF0YS5kYXRhY2wuZGVsZXRlZCAlfQore3sgUFJJVklMRUdFLlVO U0VUQUxMKGNvbm4sICdUQUJMRScsIHByaXYuZ3JhbnRlZSwgZGF0YS5uYW1l LCBkYXRhLnNjaGVtYSkgfX0KK3slIGVuZGZvciAlfQoreyUgZW5kaWYgJX0K K3slIGlmICdjaGFuZ2VkJyBpbiBkYXRhLmRhdGFjbCAlfQoreyUgZm9yIHBy aXYgaW4gZGF0YS5kYXRhY2wuY2hhbmdlZCAlfQore3sgUFJJVklMRUdFLlVO U0VUQUxMKGNvbm4sICdUQUJMRScsIHByaXYuZ3JhbnRlZSwgZGF0YS5uYW1l LCBkYXRhLnNjaGVtYSkgfX0KK3t7IFBSSVZJTEVHRS5TRVQoY29ubiwgJ1RB QkxFJywgcHJpdi5ncmFudGVlLCBkYXRhLm5hbWUsIHByaXYud2l0aG91dF9n cmFudCwgcHJpdi53aXRoX2dyYW50LCBkYXRhLnNjaGVtYSkgfX0KK3slIGVu ZGZvciAlfQoreyUgZW5kaWYgJX0KK3slIGlmICdhZGRlZCcgaW4gZGF0YS5k YXRhY2wgJX0KK3slIGZvciBwcml2IGluIGRhdGEuZGF0YWNsLmFkZGVkICV9 Cit7eyBQUklWSUxFR0UuU0VUKGNvbm4sICdUQUJMRScsIHByaXYuZ3JhbnRl ZSwgZGF0YS5uYW1lLCBwcml2LndpdGhvdXRfZ3JhbnQsIHByaXYud2l0aF9n cmFudCwgZGF0YS5zY2hlbWEpIH19Cit7JSBlbmRmb3IgJX0KK3slIGVuZGlm ICV9Cit7JSBlbmRpZiAlfQoreyMgVGhlIFNRTCBnZW5lcmF0ZWQgYmVsb3cg d2lsbCBjaGFuZ2UgU2VjdXJpdHkgTGFiZWwgI30KK3slIGlmIGRhdGEuc2Vj bGFiZWxzIGlzIG5vdCBub25lIGFuZCBkYXRhLnNlY2xhYmVsc3xsZW5ndGgg PiAwICV9Cit7JSBzZXQgc2VjbGFiZWxzID0gZGF0YS5zZWNsYWJlbHMgJX0K K3slIGlmICdkZWxldGVkJyBpbiBzZWNsYWJlbHMgYW5kIHNlY2xhYmVscy5k ZWxldGVkfGxlbmd0aCA+IDAgJX0KK3slIGZvciByIGluIHNlY2xhYmVscy5k ZWxldGVkICV9Cit7eyBTRUNMQUJMRS5EUk9QKGNvbm4sICdWSUVXJywgZGF0 YS5uYW1lLCByLnByb3ZpZGVyKSB9fQoreyUgZW5kZm9yICV9Cit7JSBlbmRp ZiAlfQoreyUgaWYgJ2FkZGVkJyBpbiBzZWNsYWJlbHMgYW5kIHNlY2xhYmVs cy5hZGRlZHxsZW5ndGggPiAwICV9Cit7JSBmb3IgciBpbiBzZWNsYWJlbHMu YWRkZWQgJX0KK3t7IFNFQ0xBQkxFLkFQUExZKGNvbm4sICdWSUVXJywgZGF0 YS5uYW1lLCByLnByb3ZpZGVyLCByLnNlY3VyaXR5X2xhYmVsKSB9fQoreyUg ZW5kZm9yICV9Cit7JSBlbmRpZiAlfQoreyUgaWYgJ2NoYW5nZWQnIGluIHNl Y2xhYmVscyBhbmQgc2VjbGFiZWxzLmNoYW5nZWR8bGVuZ3RoID4gMCAlfQor eyUgZm9yIHIgaW4gc2VjbGFiZWxzLmNoYW5nZWQgJX0KK3t7IFNFQ0xBQkxF LkFQUExZKGNvbm4sICdWSUVXJywgZGF0YS5uYW1lLCByLnByb3ZpZGVyLCBy LnNlY3VyaXR5X2xhYmVsKSB9fQoreyUgZW5kZm9yICV9Cit7JSBlbmRpZiAl fQoreyUgZW5kaWYgJX0KK3slIGVuZGlmICV9CmRpZmYgLS1naXQgYS93ZWIv cGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFz ZXMvc2NoZW1hcy92aWV3cy90ZW1wbGF0ZXMvdmlldy9wcGFzLzkuMV9wbHVz L3NxbC92aWV3X2lkLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVy X2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3ZpZXdzL3RlbXBs YXRlcy92aWV3L3BwYXMvOS4xX3BsdXMvc3FsL3ZpZXdfaWQuc3FsCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVmMjc1OTQKLS0tIC9k ZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91 cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy92aWV3cy90ZW1wbGF0ZXMv dmlldy9wcGFzLzkuMV9wbHVzL3NxbC92aWV3X2lkLnNxbApAQCAtMCwwICsx LDQgQEAKK3sjID09PT09IEJlbG93IHdpbGwgcHJvdmlkZSB2aWV3IGlkIGZv ciBsYXN0IGNyZWF0ZWQgdmlldyA9PT09PSAjfQoreyUgaWYgZGF0YSAlfQor U0VMRUNUIGMub2lkIEZST00gcGdfY2xhc3MgYyBXSEVSRSBjLnJlbG5hbWUg PSAne3sgZGF0YS5uYW1lIH19JzsKK3slIGVuZGlmICV9CmRpZmYgLS1naXQg YS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9k YXRhYmFzZXMvc2NoZW1hcy92aWV3cy90ZW1wbGF0ZXMvdmlldy9wcGFzLzku Ml9wbHVzL3NxbC9hY2wuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2 ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdmlld3MvdGVt cGxhdGVzL3ZpZXcvcHBhcy85LjJfcGx1cy9zcWwvYWNsLnNxbApuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZjJkMGZiCi0tLSAvZGV2 L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBz L3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdmlld3MvdGVtcGxhdGVzL3Zp ZXcvcHBhcy85LjJfcGx1cy9zcWwvYWNsLnNxbApAQCAtMCwwICsxLDUyIEBA Cit7IyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09IEdldCBBQ0xzID09 PT09PT09PT09PT09PT09PT09PT09PT0gI30KK3slIGlmIHZpZCAlfQorU0VM RUNUCisgICAgJ2RhdGFjbCcgYXMgZGVmdHlwZSwKKyAgICBDT0FMRVNDRShn dC5yb2xuYW1lLCAncHVibGljJykgZ3JhbnRlZSwKKyAgICBnLnJvbG5hbWUg Z3JhbnRvciwKKyAgICBhcnJheV9hZ2cocHJpdmlsZWdlX3R5cGUpIGFzIHBy aXZpbGVnZXMsCisgICAgYXJyYXlfYWdnKGlzX2dyYW50YWJsZSkgYXMgZ3Jh bnRhYmxlCitGUk9NCisgICAgKFNFTEVDVAorICAgICAgICBkLmdyYW50ZWUs IGQuZ3JhbnRvciwgZC5pc19ncmFudGFibGUsCisgICAgICAgIENBU0UgZC5w cml2aWxlZ2VfdHlwZQorICAgICAgICBXSEVOICdERUxFVEUnIFRIRU4gJ2Qn CisgICAgICAgIFdIRU4gJ0lOU0VSVCcgVEhFTiAnYScKKyAgICAgICAgV0hF TiAnUkVGRVJFTkNFUycgVEhFTiAneCcKKyAgICAgICAgV0hFTiAnU0VMRUNU JyBUSEVOICdyJworICAgICAgICBXSEVOICdUUklHR0VSJyBUSEVOICd0Jwor ICAgICAgICBXSEVOICdVUERBVEUnIFRIRU4gJ3cnCisgICAgICAgIFdIRU4g J1RSVU5DQVRFJyBUSEVOICdEJworICAgICAgICBFTFNFICdVTktOT1dOJwor ICAgICAgICBFTkQgQVMgcHJpdmlsZWdlX3R5cGUKKyAgICBGUk9NCisgICAg ICAgIChTRUxFQ1QKKyAgICAgICAgICAgIHJlbGFjbAorICAgICAgICBGUk9N CisgICAgICAgICAgICBwZ19jbGFzcyBjbAorICAgICAgICBMRUZUIE9VVEVS IEpPSU4gcGdfc2hkZXNjcmlwdGlvbiBkZXNjciBPTiAoCisgICAgICAgICAg ICBjbC5vaWQ9ZGVzY3Iub2Jqb2lkIEFORCBkZXNjci5jbGFzc29pZD0ncGdf Y2xhc3MnOjpyZWdjbGFzcykKKyAgICAgICAgV0hFUkUKKyAgICAgICAgICAg IGNsLm9pZCA9IHt7IHZpZCB9fTo6T0lEIEFORCByZWxraW5kID0gJ3YnCisg ICAgICAgICkgYWNsLAorICAgICAgICAoU0VMRUNUCisgICAgICAgICAgICAo ZCkuZ3JhbnRlZSBBUyBncmFudGVlLAorICAgICAgICAgICAgKGQpLmdyYW50 b3IgQVMgZ3JhbnRvciwKKyAgICAgICAgICAgIChkKS5pc19ncmFudGFibGUg QVMgaXNfZ3JhbnRhYmxlLAorICAgICAgICAgICAgKGQpLnByaXZpbGVnZV90 eXBlIEFTIHByaXZpbGVnZV90eXBlCisgICAgICAgIEZST00KKyAgICAgICAg ICAgIChTRUxFQ1QKKyAgICAgICAgICAgICAgICBhY2xleHBsb2RlKHJlbGFj bCkgQVMgZAorICAgICAgICAgICAgIEZST00KKyAgICAgICAgICAgICAgICBw Z19jbGFzcyBjbDEKKyAgICAgICAgICAgICBXSEVSRQorICAgICAgICAgICAg ICAgIGNsMS5vaWQgPSB7eyB2aWQgfX0KKyAgICAgICAgICAgICkgYQorICAg ICAgICApIGQKKyAgICApIGQKK0xFRlQgSk9JTiBwZ19jYXRhbG9nLnBnX3Jv bGVzIGcgT04gKGQuZ3JhbnRvciA9IGcub2lkKQorTEVGVCBKT0lOIHBnX2Nh dGFsb2cucGdfcm9sZXMgZ3QgT04gKGQuZ3JhbnRlZSA9IGd0Lm9pZCkKK0dS T1VQIEJZCisgICAgZy5yb2xuYW1lLAorICAgIGd0LnJvbG5hbWUKK3slIGVu ZGlmICV9CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZl cl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy92aWV3cy90ZW1w bGF0ZXMvdmlldy9wcGFzLzkuMl9wbHVzL3NxbC9jcmVhdGUuc3FsIGIvd2Vi L3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJh c2VzL3NjaGVtYXMvdmlld3MvdGVtcGxhdGVzL3ZpZXcvcHBhcy85LjJfcGx1 cy9zcWwvY3JlYXRlLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwLi5kYzRhM2FiCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRt aW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3Nj aGVtYXMvdmlld3MvdGVtcGxhdGVzL3ZpZXcvcHBhcy85LjJfcGx1cy9zcWwv Y3JlYXRlLnNxbApAQCAtMCwwICsxLDIzIEBACit7Iz09PT09PT09PT09PT09 PT09PT09PT09PT09PT1DcmVhdGUgbmV3IHZpZXc9PT09PT09PT09PT09PT09 PT09PT09PT09I30KK3slIGlmIGRpc3BsYXlfY29tbWVudHMgJX0KKy0tIFZp ZXc6IHt7IGNvbm58cXRJZGVudChkYXRhLnNjaGVtYSwgZGF0YS5uYW1lKSB9 fQorCistLSBEUk9QIFZJRVcge3sgY29ubnxxdElkZW50KGRhdGEuc2NoZW1h LCBkYXRhLm5hbWUpIH19OworCit7JSBlbmRpZiAlfQoreyUgaWYgZGF0YS5u YW1lIGFuZCBkYXRhLnNjaGVtYSBhbmQgZGF0YS5kZWZpbml0aW9uICV9CitD UkVBVEUgT1IgUkVQTEFDRSBWSUVXIHt7IGNvbm58cXRJZGVudChkYXRhLnNj aGVtYSwgZGF0YS5uYW1lKSB9fXslIGlmIChkYXRhLnNlY3VyaXR5X2JhcnJp ZXIpICV9e3snXHInfX0KK1dJVEggKAoreyUgaWYgZGF0YS5zZWN1cml0eV9i YXJyaWVyICV9ICAgIHNlY3VyaXR5X2JhcnJpZXI9e3sgZGF0YS5zZWN1cml0 eV9iYXJyaWVyfGxvd2VyIH19eyUgZW5kaWYgJX17eydccid9fQorKXslIGVu ZGlmICV9IEFTCit7eyBkYXRhLmRlZmluaXRpb24ucnN0cmlwKCc7JykgfX07 Cit7JSBpZiBkYXRhLm93bmVyICV9CisKK0FMVEVSIFRBQkxFIHt7IGNvbm58 cXRJZGVudChkYXRhLnNjaGVtYSwgZGF0YS5uYW1lKSB9fQorICBPV05FUiBU TyB7eyBkYXRhLm93bmVyIH19OworeyUgZW5kaWYgJX0KK3slIGlmIGRhdGEu Y29tbWVudCAlfQorQ09NTUVOVCBPTiBWSUVXIHt7IGNvbm58cXRJZGVudChk YXRhLnNjaGVtYSwgZGF0YS5uYW1lKSB9fQorICAgIElTIHt7IGRhdGEuY29t bWVudHxxdExpdGVyYWwgfX07Cit7JSBlbmRpZiAlfQoreyUgZW5kaWYgJX0K ZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3ZpZXdzL3RlbXBsYXRlcy92 aWV3L3BwYXMvOS4yX3BsdXMvc3FsL2RlbGV0ZS5zcWwgYi93ZWIvcGdhZG1p bi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2No ZW1hcy92aWV3cy90ZW1wbGF0ZXMvdmlldy9wcGFzLzkuMl9wbHVzL3NxbC9k ZWxldGUuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu LmU1MGJlZWMKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93 c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy92 aWV3cy90ZW1wbGF0ZXMvdmlldy9wcGFzLzkuMl9wbHVzL3NxbC9kZWxldGUu c3FsCkBAIC0wLDAgKzEsMTMgQEAKK3sjID09PT09PT09PT09PT09PT09PT09 PT0gRHJvcC9DYXNjYWRlIHZpZXcgYnkgbmFtZSA9PT09PT09PT09PT09PT09 PT09PT0gI30KK3slIGlmIHZpZCAlfQorU0VMRUNUCisgICAgYy5yZWxuYW1l IEFTIG5hbWUsCisgICAgbnNwLm5zcG5hbWUKK0ZST00KKyAgICBwZ19jbGFz cyBjCitMRUZUIEpPSU4gcGdfbmFtZXNwYWNlIG5zcCBPTiBjLnJlbG5hbWVz cGFjZSA9IG5zcC5vaWQKK1dIRVJFCisgICAgYy5yZWxmaWxlbm9kZSA9IHt7 IHZpZCB9fTsKK3slIGVsaWYgKG5hbWUgYW5kIG5zcG5hbWUpICV9CitEUk9Q IFZJRVcge3tuc3BuYW1lfX0ue3sgY29ubnxxdElkZW50KG5hbWUpIH19IHsl IGlmIGNhc2NhZGUgJX0gQ0FTQ0FERSB7JSBlbmRpZiAlfQoreyUgZW5kaWYg JX0KZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dy b3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3ZpZXdzL3RlbXBsYXRl cy92aWV3L3BwYXMvOS4yX3BsdXMvc3FsL2dldF9zY2hlbWEuc3FsIGIvd2Vi L3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJh c2VzL3NjaGVtYXMvdmlld3MvdGVtcGxhdGVzL3ZpZXcvcHBhcy85LjJfcGx1 cy9zcWwvZ2V0X3NjaGVtYS5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMC4uMTI3ZDRiOQotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9w Z2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNl cy9zY2hlbWFzL3ZpZXdzL3RlbXBsYXRlcy92aWV3L3BwYXMvOS4yX3BsdXMv c3FsL2dldF9zY2hlbWEuc3FsCkBAIC0wLDAgKzEsNiBAQAorU0VMRUNUCisg ICAgbnNwbmFtZQorRlJPTQorICAgIHBnX25hbWVzcGFjZQorV0hFUkUKKyAg ICBvaWQgPSB7eyBzY2lkIH19OjpvaWQ7CmRpZmYgLS1naXQgYS93ZWIvcGdh ZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMv c2NoZW1hcy92aWV3cy90ZW1wbGF0ZXMvdmlldy9wcGFzLzkuMl9wbHVzL3Nx bC9ncmFudC5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91 cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy92aWV3cy90ZW1wbGF0ZXMv dmlldy9wcGFzLzkuMl9wbHVzL3NxbC9ncmFudC5zcWwKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTlhMzEwZgotLS0gL2Rldi9udWxs CisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2 ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3ZpZXdzL3RlbXBsYXRlcy92aWV3L3Bw YXMvOS4yX3BsdXMvc3FsL2dyYW50LnNxbApAQCAtMCwwICsxLDYgQEAKK3sj ID09PT09IEdyYW50IFBlcm1pc3Npb25zIHRvIFVzZXIgUm9sZSBvbiBWaWV3 cy9UYWJsZXMgPT09PT0gI30KK3slIGltcG9ydCAnbWFjcm9zL3NlY3VyaXR5 Lm1hY3JvcycgYXMgU0VDTEFCTEUgJX0KK3slIGltcG9ydCAnbWFjcm9zL3Nj aGVtYXMvcHJpdmlsZWdlLm1hY3JvcycgYXMgUFJJVklMRUdFICV9Cit7IyA9 PT09PSBXZSB3aWxsIGdlbmVyYXRlIFNlY3VyaXR5IExhYmVsIFNRTCB1c2lu ZyBtYWNybyA9PT09PSAjfQoreyUgaWYgZGF0YS5zZWNsYWJlbHMgJX17JSBm b3IgciBpbiBkYXRhLnNlY2xhYmVscyAlfXt7IFNFQ0xBQkxFLkFQUExZKGNv bm4sICdWSUVXJywgZGF0YS5uYW1lLCByLnByb3ZpZGVyLCByLnNlY3VyaXR5 X2xhYmVsKSB9fXslIGVuZGZvciAlfXslIGVuZGlmICV9eyUgaWYgZGF0YS5k YXRhY2wgJX0KK3slIGZvciBwcml2IGluIGRhdGEuZGF0YWNsICV9e3sgUFJJ VklMRUdFLlNFVChjb25uLCAnVEFCTEUnLCBwcml2LmdyYW50ZWUsIGRhdGEu bmFtZSwgcHJpdi53aXRob3V0X2dyYW50LCBwcml2LndpdGhfZ3JhbnQsIGRh dGEuc2NoZW1hKSB9fXslIGVuZGZvciAlfXslIGVuZGlmICV9CmRpZmYgLS1n aXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVy cy9kYXRhYmFzZXMvc2NoZW1hcy92aWV3cy90ZW1wbGF0ZXMvdmlldy9wcGFz LzkuMl9wbHVzL3NxbC9wcm9wZXJ0aWVzLnNxbCBiL3dlYi9wZ2FkbWluL2Jy b3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFz L3ZpZXdzL3RlbXBsYXRlcy92aWV3L3BwYXMvOS4yX3BsdXMvc3FsL3Byb3Bl cnRpZXMuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu LmVlYmUwZjUKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93 c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy92 aWV3cy90ZW1wbGF0ZXMvdmlldy9wcGFzLzkuMl9wbHVzL3NxbC9wcm9wZXJ0 aWVzLnNxbApAQCAtMCwwICsxLDcwIEBACit7JSBpZiAodmlkIGFuZCBkYXRs YXN0c3lzb2lkKSBvciBzY2lkICV9CitTRUxFQ1QKKyAgICBjLm9pZCwKKyAg ICBjLnhtaW4sCisgICAgYy5yZWxuYW1lIEFTIG5hbWUsCisgICAgYy5yZWx0 YWJsZXNwYWNlIEFTIHNwY29pZCwKKyAgICAoQ0FTRSBXSEVOIGxlbmd0aChz cGMuc3BjbmFtZSkgPiAwIFRIRU4gc3BjLnNwY25hbWUgRUxTRSAncGdfZGVm YXVsdCcgRU5EKSBhcyBzcGNuYW1lLAorICAgIHBnX2dldF91c2VyYnlpZChj LnJlbG93bmVyKSBBUyBvd25lciwKKyAgICBkZXNjcmlwdGlvbiBBcyBjb21t ZW50LAorICAgIHBnX2dldF92aWV3ZGVmKGMub2lkLCB0cnVlKSBBUyBkZWZp bml0aW9uLAorICAgIG5zcC5uc3BuYW1lIEFTIHNjaGVtYSwKKyAgICBhcnJh eV90b19zdHJpbmcoYy5yZWxhY2w6OnRleHRbXSwgJywgJykgQVMgYWNsLAor ICAgIHsjPT09PT09PT09PT09PUNoZWNrcyBpZiBpdCBpcyBzeXN0ZW0gdmll dz09PT09PT09PT09PT09PT0jfQorICAgIHslIGlmIHZpZCBhbmQgZGF0bGFz dHN5c29pZCAlfQorICAgIENBU0UgV0hFTiB7e3ZpZH19IDw9IHt7ZGF0bGFz dHN5c29pZH19IFRIRU4gVHJ1ZSBFTFNFIEZhbHNlIEVORCBBUyBzeXN0ZW1f dmlldywKKyAgICB7JSBlbmRpZiAlfQorKFNFTEVDVAorICAgIGFycmF5X2Fn ZyhsYWJlbCkKK0ZST00KKyAgICBwZ19zZWNsYWJlbHMgc2wxCitXSEVSRQor ICAgIHNsMS5vYmpvaWQ9Yy5vaWQgQU5EIHNsMS5vYmpzdWJpZD0wKSBBUyBs YWJlbHMsCisoU0VMRUNUCisgICAgYXJyYXlfYWdnKHByb3ZpZGVyKQorRlJP TQorICAgIHBnX3NlY2xhYmVscyBzbDIKK1dIRVJFCisgICAgc2wyLm9iam9p ZD1jLm9pZCBBTkQgc2wyLm9ianN1YmlkPTApIEFTIHByb3ZpZGVycworICAg ICwgc3Vic3RyaW5nKGFycmF5X3RvX3N0cmluZyhjLnJlbG9wdGlvbnMsICcs JykKKyAgICAgICAgRlJPTSAnc2VjdXJpdHlfYmFycmllcj0oW2EtenwwLTld KiknKSBBUyBzZWN1cml0eV9iYXJyaWVyCitGUk9NIHBnX2NsYXNzIGMKK0xF RlQgT1VURVIgSk9JTiBwZ19uYW1lc3BhY2UgbnNwIG9uIG5zcC5vaWQgPSBj LnJlbG5hbWVzcGFjZQorTEVGVCBPVVRFUiBKT0lOIHBnX3RhYmxlc3BhY2Ug c3BjIG9uIHNwYy5vaWQ9Yy5yZWx0YWJsZXNwYWNlCitMRUZUIE9VVEVSIEpP SU4gcGdfZGVzY3JpcHRpb24gZGVzIE9OIChkZXMub2Jqb2lkPWMub2lkIGFu ZCBkZXMub2Jqc3ViaWQ9MCBBTkQgZGVzLmNsYXNzb2lkPSdwZ19jbGFzcyc6 OnJlZ2NsYXNzKQorICAgIFdIRVJFICgoYy5yZWxoYXNydWxlcyBBTkQgKEVY SVNUUyAoCisgICAgICAgICAgICBTRUxFQ1QKKyAgICAgICAgICAgICAgICBy LnJ1bGVuYW1lCisgICAgICAgICAgICBGUk9NCisgICAgICAgICAgICAgICAg cGdfcmV3cml0ZSByCisgICAgICAgICAgICBXSEVSRQorICAgICAgICAgICAg ICAgICgoci5ldl9jbGFzcyA9IGMub2lkKQorICAgICAgICAgICAgICAgICAg ICBBTkQgKGJwY2hhcihyLmV2X3R5cGUpID0gJzEnOjpicGNoYXIpCisgICAg ICAgICAgICAgICAgKSApKQorICAgICAgICAgICApIEFORCAoYy5yZWxraW5k ID0gJ3YnOjpjaGFyKQorICAgICAgICAgICkKK3slIGlmICh2aWQgYW5kIGRh dGxhc3RzeXNvaWQpICV9CisgICAgQU5EIGMub2lkID0ge3t2aWR9fTo6b2lk Cit7JSBlbGlmIHNjaWQgJX0KKyAgICBBTkQgYy5yZWxuYW1lc3BhY2UgPSB7 e3NjaWR9fTo6b2lkIE9SREVSIEJZIGMucmVsbmFtZQoreyUgZW5kaWYgJX0K KworeyUgZWxpZiB0eXBlID09ICdyb2xlcycgJX0KK1NFTEVDVAorICAgIHBy LnJvbG5hbWUKK0ZST00KKyAgICBwZ19yb2xlcyBwcgorV0hFUkUKKyAgICBw ci5yb2xjYW5sb2dpbgorT1JERVIgQlkKKyAgICBwci5yb2xuYW1lCisKK3sl IGVsaWYgdHlwZSA9PSAnc2NoZW1hcycgJX0KK1NFTEVDVAorICAgIG5zcC5u c3BuYW1lCitGUk9NCisgICAgcGdfbmFtZXNwYWNlIG5zcAorV0hFUkUKKyAg ICAobnNwLm5zcG5hbWUgTk9UIExJS0UgRSdwZ1xcXyUnCisgICAgICAgIEFO RCBuc3AubnNwbmFtZSAhPSAnaW5mb3JtYXRpb25fc2NoZW1hJykKK3slIGVu ZGlmICV9CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZl cl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy92aWV3cy90ZW1w bGF0ZXMvdmlldy9wcGFzLzkuMl9wbHVzL3NxbC91cGRhdGUuc3FsIGIvd2Vi L3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJh c2VzL3NjaGVtYXMvdmlld3MvdGVtcGxhdGVzL3ZpZXcvcHBhcy85LjJfcGx1 cy9zcWwvdXBkYXRlLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwLi5jMzdkNGJhCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRt aW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3Nj aGVtYXMvdmlld3MvdGVtcGxhdGVzL3ZpZXcvcHBhcy85LjJfcGx1cy9zcWwv dXBkYXRlLnNxbApAQCAtMCwwICsxLDc0IEBACit7IyA9PT09PT09PT09PT09 PT09PT09PT09PT09PT09IFVwZGF0ZSBWaWV3ID09PT09PT09PT09PT09PT09 PT09PT09PT0gI30KK3slIGltcG9ydCAnbWFjcm9zL3NlY3VyaXR5Lm1hY3Jv cycgYXMgU0VDTEFCTEUgJX0KK3slIGltcG9ydCAnbWFjcm9zL3NjaGVtYXMv cHJpdmlsZWdlLm1hY3JvcycgYXMgUFJJVklMRUdFICV9Cit7JSBpZiBkYXRh ICV9Cit7JSBzZXQgdmlld19uYW1lID0gZGF0YS5uYW1lIGlmIGRhdGEubmFt ZSBlbHNlIG9fZGF0YS5uYW1lICV9Cit7JSBzZXQgdmlld19zY2hlbWEgPSBk YXRhLnNjaGVtYSBpZiBkYXRhLnNjaGVtYSBlbHNlIG9fZGF0YS5zY2hlbWEg JX0KK3slIHNldCBkZWYgPSBkYXRhLmRlZmluaXRpb24ucnN0cmlwKCc7Jykg aWYgZGF0YS5kZWZpbml0aW9uICV9Cit7JSBpZiBkYXRhLm5hbWUgYW5kIGRh dGEubmFtZSAhPSBvX2RhdGEubmFtZSAlfQorQUxURVIgVklFVyB7eyBjb25u fHF0SWRlbnQob19kYXRhLnNjaGVtYSwgb19kYXRhLm5hbWUpIH19CisgICAg UkVOQU1FIFRPIHt7IGNvbm58cXRJZGVudChkYXRhLm5hbWUpIH19OworeyUg ZW5kaWYgJX0KK3slIGlmIGRhdGEuc2NoZW1hIGFuZCBkYXRhLnNjaGVtYSAh PSBvX2RhdGEuc2NoZW1hICV9CitBTFRFUiBWSUVXIHt7IGNvbm58cXRJZGVu dChvX2RhdGEuc2NoZW1hLCB2aWV3X25hbWUgKSB9fQorICAgIFNFVCBTQ0hF TUEge3sgY29ubnxxdElkZW50KGRhdGEuc2NoZW1hKSB9fTsKK3slIGVuZGlm ICV9Cit7JSBpZiBkYXRhLm93bmVyIGFuZCBkYXRhLm93bmVyICE9IG9fZGF0 YS5vd25lciAlfQorQUxURVIgVEFCTEUge3sgY29ubnxxdElkZW50KHZpZXdf c2NoZW1hLCB2aWV3X25hbWUpIH19CisgICAgT1dORVIgVE8ge3sgY29ubnxx dElkZW50KGRhdGEub3duZXIpIH19OworeyUgZW5kaWYgJX0KK3slIGlmIGRl ZiBhbmQgZGVmICE9IG9fZGF0YS5kZWZpbml0aW9uLnJzdHJpcCgnOycpICV9 CitDUkVBVEUgT1IgUkVQTEFDRSBWSUVXIHt7IGNvbm58cXRJZGVudCh2aWV3 X3NjaGVtYSwgdmlld19uYW1lKSB9fQoreyUgaWYgKGRhdGEuc2VjdXJpdHlf YmFycmllciBhbmQgZGF0YS5zZWN1cml0eV9iYXJyaWVyICE9IG9fZGF0YS5z ZWN1cml0eV9iYXJyaWVyKSAlfQorICAgIFdJVEggKHslIGlmIGRhdGEuc2Vj dXJpdHlfYmFycmllciAlfXNlY3VyaXR5X2JhcnJpZXI9e3sgZGF0YS5zZWN1 cml0eV9iYXJyaWVyfGxvd2VyIH19eyUgZW5kaWYgJX0pIHslIGVuZGlmICV9 CisgICAgQVN7eyBkZWYgfX07Cit7JSBlbHNlICV9Cit7JSBpZiAoZGF0YS5z ZWN1cml0eV9iYXJyaWVyIGlzIGRlZmluZWQgYW5kIGRhdGEuc2VjdXJpdHlf YmFycmllcnxsb3dlciAhPSAgb19kYXRhLnNlY3VyaXR5X2JhcnJpZXJ8bG93 ZXIpICV9CitBTFRFUiBWSUVXIHt7IGNvbm58cXRJZGVudCh2aWV3X3NjaGVt YSwgdmlld19uYW1lKSB9fQorICAgIFNFVCAoc2VjdXJpdHlfYmFycmllcj17 eyBkYXRhLnNlY3VyaXR5X2JhcnJpZXJ8bG93ZXIgfX0pOworeyUgZW5kaWYg JX0KK3slIGVuZGlmICV9CisKK3slIGlmIGRhdGEuY29tbWVudCBhbmQgZGF0 YS5jb21tZW50ICE9IG9fZGF0YS5jb21tZW50ICV9CitDT01NRU5UIE9OIFZJ RVcge3sgY29ubnxxdElkZW50KHZpZXdfc2NoZW1hLCB2aWV3X25hbWUpIH19 CisgICAgSVMge3sgZGF0YS5jb21tZW50fHF0TGl0ZXJhbCB9fTsKK3slIGVu ZGlmICV9Cit7IyBUaGUgU1FMIGdlbmVyYXRlZCBiZWxvdyB3aWxsIGNoYW5n ZSBwcml2aWxlZ2VzICN9Cit7JSBpZiBkYXRhLmRhdGFjbCAlfQoreyUgaWYg J2RlbGV0ZWQnIGluIGRhdGEuZGF0YWNsICV9Cit7JSBmb3IgcHJpdiBpbiBk YXRhLmRhdGFjbC5kZWxldGVkICV9Cit7eyBQUklWSUxFR0UuVU5TRVRBTEwo Y29ubiwgJ1RBQkxFJywgcHJpdi5ncmFudGVlLCBkYXRhLm5hbWUsIGRhdGEu c2NoZW1hKSB9fQoreyUgZW5kZm9yICV9Cit7JSBlbmRpZiAlfQoreyUgaWYg J2NoYW5nZWQnIGluIGRhdGEuZGF0YWNsICV9Cit7JSBmb3IgcHJpdiBpbiBk YXRhLmRhdGFjbC5jaGFuZ2VkICV9Cit7eyBQUklWSUxFR0UuVU5TRVRBTEwo Y29ubiwgJ1RBQkxFJywgcHJpdi5ncmFudGVlLCBkYXRhLm5hbWUsIGRhdGEu c2NoZW1hKSB9fQore3sgUFJJVklMRUdFLlNFVChjb25uLCAnVEFCTEUnLCBw cml2LmdyYW50ZWUsIGRhdGEubmFtZSwgcHJpdi53aXRob3V0X2dyYW50LCBw cml2LndpdGhfZ3JhbnQsIGRhdGEuc2NoZW1hKSB9fQoreyUgZW5kZm9yICV9 Cit7JSBlbmRpZiAlfQoreyUgaWYgJ2FkZGVkJyBpbiBkYXRhLmRhdGFjbCAl fQoreyUgZm9yIHByaXYgaW4gZGF0YS5kYXRhY2wuYWRkZWQgJX0KK3t7IFBS SVZJTEVHRS5TRVQoY29ubiwgJ1RBQkxFJywgcHJpdi5ncmFudGVlLCBkYXRh Lm5hbWUsIHByaXYud2l0aG91dF9ncmFudCwgcHJpdi53aXRoX2dyYW50LCBk YXRhLnNjaGVtYSkgfX0KK3slIGVuZGZvciAlfQoreyUgZW5kaWYgJX0KK3sl IGVuZGlmICV9Cit7IyBUaGUgU1FMIGdlbmVyYXRlZCBiZWxvdyB3aWxsIGNo YW5nZSBTZWN1cml0eSBMYWJlbCAjfQoreyUgaWYgZGF0YS5zZWNsYWJlbHMg aXMgbm90IG5vbmUgYW5kIGRhdGEuc2VjbGFiZWxzfGxlbmd0aCA+IDAgJX0K K3slIHNldCBzZWNsYWJlbHMgPSBkYXRhLnNlY2xhYmVscyAlfQoreyUgaWYg J2RlbGV0ZWQnIGluIHNlY2xhYmVscyBhbmQgc2VjbGFiZWxzLmRlbGV0ZWR8 bGVuZ3RoID4gMCAlfQoreyUgZm9yIHIgaW4gc2VjbGFiZWxzLmRlbGV0ZWQg JX0KK3t7IFNFQ0xBQkxFLkRST1AoY29ubiwgJ1ZJRVcnLCBkYXRhLm5hbWUs IHIucHJvdmlkZXIpIH19Cit7JSBlbmRmb3IgJX0KK3slIGVuZGlmICV9Cit7 JSBpZiAnYWRkZWQnIGluIHNlY2xhYmVscyBhbmQgc2VjbGFiZWxzLmFkZGVk fGxlbmd0aCA+IDAgJX0KK3slIGZvciByIGluIHNlY2xhYmVscy5hZGRlZCAl fQore3sgU0VDTEFCTEUuQVBQTFkoY29ubiwgJ1ZJRVcnLCBkYXRhLm5hbWUs IHIucHJvdmlkZXIsIHIuc2VjdXJpdHlfbGFiZWwpIH19Cit7JSBlbmRmb3Ig JX0KK3slIGVuZGlmICV9Cit7JSBpZiAnY2hhbmdlZCcgaW4gc2VjbGFiZWxz IGFuZCBzZWNsYWJlbHMuY2hhbmdlZHxsZW5ndGggPiAwICV9Cit7JSBmb3Ig ciBpbiBzZWNsYWJlbHMuY2hhbmdlZCAlfQore3sgU0VDTEFCTEUuQVBQTFko Y29ubiwgJ1ZJRVcnLCBkYXRhLm5hbWUsIHIucHJvdmlkZXIsIHIuc2VjdXJp dHlfbGFiZWwpIH19Cit7JSBlbmRmb3IgJX0KK3slIGVuZGlmICV9Cit7JSBl bmRpZiAlfQoreyUgZW5kaWYgJX0KZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWlu L2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hl bWFzL3ZpZXdzL3RlbXBsYXRlcy92aWV3L3BwYXMvOS4yX3BsdXMvc3FsL3Zp ZXdfaWQuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBz L3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdmlld3MvdGVtcGxhdGVzL3Zp ZXcvcHBhcy85LjJfcGx1cy9zcWwvdmlld19pZC5zcWwKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmRmZjA0ZQotLS0gL2Rldi9udWxs CisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2 ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3ZpZXdzL3RlbXBsYXRlcy92aWV3L3Bw YXMvOS4yX3BsdXMvc3FsL3ZpZXdfaWQuc3FsCkBAIC0wLDAgKzEsNCBAQAor eyMgQmVsb3cgd2lsbCBwcm92aWRlIHZpZXcgaWQgZm9yIG5ld2x5IGNyZWF0 ZWQgdmlldyAjfQoreyUgaWYgZGF0YSAlfQorU0VMRUNUIGMub2lkIEZST00g cGdfY2xhc3MgYyBXSEVSRSBjLnJlbG5hbWUgPSAne3sgZGF0YS5uYW1lIH19 JzsKK3slIGVuZGlmICV9CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93 c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy92 aWV3cy90ZW1wbGF0ZXMvdmlldy9wcGFzLzkuM19wbHVzL3NxbC9hY2wuc3Fs IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMv ZGF0YWJhc2VzL3NjaGVtYXMvdmlld3MvdGVtcGxhdGVzL3ZpZXcvcHBhcy85 LjNfcGx1cy9zcWwvYWNsLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwLi44NDMwMGNmCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3Bn YWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2Vz L3NjaGVtYXMvdmlld3MvdGVtcGxhdGVzL3ZpZXcvcHBhcy85LjNfcGx1cy9z cWwvYWNsLnNxbApAQCAtMCwwICsxLDM4IEBACit7IyA9PT09PT09PT09PT09 PT09PT09PT09PT09PT09IEdldCBBQ0xzID09PT09PT09PT09PT09PT09PT09 PT09PT0gI30KK3slIGlmIHZpZCAlfQorU0VMRUNUCisgICAgJ2RhdGFjbCcg YXMgZGVmdHlwZSwKKyAgICBDT0FMRVNDRShndC5yb2xuYW1lLCAncHVibGlj JykgZ3JhbnRlZSwKKyAgICBnLnJvbG5hbWUgZ3JhbnRvciwKKyAgICBhcnJh eV9hZ2cocHJpdmlsZWdlX3R5cGUpIGFzIHByaXZpbGVnZXMsCisgICAgYXJy YXlfYWdnKGlzX2dyYW50YWJsZSkgYXMgZ3JhbnRhYmxlCitGUk9NCisgICAg KFNFTEVDVAorICAgICAgICBkLmdyYW50ZWUsIGQuZ3JhbnRvciwgZC5pc19n cmFudGFibGUsCisgICAgICAgIENBU0UgZC5wcml2aWxlZ2VfdHlwZQorICAg ICAgICBXSEVOICdERUxFVEUnIFRIRU4gJ2QnCisgICAgICAgIFdIRU4gJ0lO U0VSVCcgVEhFTiAnYScKKyAgICAgICAgV0hFTiAnUkVGRVJFTkNFUycgVEhF TiAneCcKKyAgICAgICAgV0hFTiAnU0VMRUNUJyBUSEVOICdyJworICAgICAg ICBXSEVOICdUUklHR0VSJyBUSEVOICd0JworICAgICAgICBXSEVOICdVUERB VEUnIFRIRU4gJ3cnCisgICAgICAgIFdIRU4gJ1RSVU5DQVRFJyBUSEVOICdE JworICAgICAgICBFTFNFICdVTktOT1dOJworICAgICAgICBFTkQgQVMgcHJp dmlsZWdlX3R5cGUKKyAgICBGUk9NCisgICAgICAgIChTRUxFQ1QKKyAgICAg ICAgICAgIHJlbGFjbAorICAgICAgICBGUk9NCisgICAgICAgICAgICBwZ19j bGFzcyBjbAorICAgICAgICBMRUZUIE9VVEVSIEpPSU4gcGdfc2hkZXNjcmlw dGlvbiBkZXNjciBPTiAoCisgICAgICAgICAgICBjbC5vaWQ9ZGVzY3Iub2Jq b2lkIEFORCBkZXNjci5jbGFzc29pZD0ncGdfY2xhc3MnOjpyZWdjbGFzcykK KyAgICAgICAgV0hFUkUgY2wub2lkID0ge3sgdmlkIH19OjpPSUQgQU5EIHJl bGtpbmQgPSAndicKKyAgICAgICAgKSBhY2wsCisgICAgICAgIGFjbGV4cGxv ZGUocmVsYWNsKSBkCisgICAgKSBkCitMRUZUIEpPSU4gcGdfY2F0YWxvZy5w Z19yb2xlcyBnIE9OIChkLmdyYW50b3IgPSBnLm9pZCkKK0xFRlQgSk9JTiBw Z19jYXRhbG9nLnBnX3JvbGVzIGd0IE9OIChkLmdyYW50ZWUgPSBndC5vaWQp CitHUk9VUCBCWQorICAgIGcucm9sbmFtZSwKKyAgICBndC5yb2xuYW1lCit7 JSBlbmRpZiAlfQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9z ZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdmlld3Mv dGVtcGxhdGVzL3ZpZXcvcHBhcy85LjNfcGx1cy9zcWwvY3JlYXRlLnNxbCBi L3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2Rh dGFiYXNlcy9zY2hlbWFzL3ZpZXdzL3RlbXBsYXRlcy92aWV3L3BwYXMvOS4z X3BsdXMvc3FsL2NyZWF0ZS5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMC4uZGM0YTNhYgotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9w Z2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNl cy9zY2hlbWFzL3ZpZXdzL3RlbXBsYXRlcy92aWV3L3BwYXMvOS4zX3BsdXMv c3FsL2NyZWF0ZS5zcWwKQEAgLTAsMCArMSwyMyBAQAoreyM9PT09PT09PT09 PT09PT09PT09PT09PT09PT09Q3JlYXRlIG5ldyB2aWV3PT09PT09PT09PT09 PT09PT09PT09PT09PSN9Cit7JSBpZiBkaXNwbGF5X2NvbW1lbnRzICV9Cist LSBWaWV3OiB7eyBjb25ufHF0SWRlbnQoZGF0YS5zY2hlbWEsIGRhdGEubmFt ZSkgfX0KKworLS0gRFJPUCBWSUVXIHt7IGNvbm58cXRJZGVudChkYXRhLnNj aGVtYSwgZGF0YS5uYW1lKSB9fTsKKworeyUgZW5kaWYgJX0KK3slIGlmIGRh dGEubmFtZSBhbmQgZGF0YS5zY2hlbWEgYW5kIGRhdGEuZGVmaW5pdGlvbiAl fQorQ1JFQVRFIE9SIFJFUExBQ0UgVklFVyB7eyBjb25ufHF0SWRlbnQoZGF0 YS5zY2hlbWEsIGRhdGEubmFtZSkgfX17JSBpZiAoZGF0YS5zZWN1cml0eV9i YXJyaWVyKSAlfXt7J1xyJ319CitXSVRIICgKK3slIGlmIGRhdGEuc2VjdXJp dHlfYmFycmllciAlfSAgICBzZWN1cml0eV9iYXJyaWVyPXt7IGRhdGEuc2Vj dXJpdHlfYmFycmllcnxsb3dlciB9fXslIGVuZGlmICV9e3snXHInfX0KKyl7 JSBlbmRpZiAlfSBBUwore3sgZGF0YS5kZWZpbml0aW9uLnJzdHJpcCgnOycp IH19OworeyUgaWYgZGF0YS5vd25lciAlfQorCitBTFRFUiBUQUJMRSB7eyBj b25ufHF0SWRlbnQoZGF0YS5zY2hlbWEsIGRhdGEubmFtZSkgfX0KKyAgT1dO RVIgVE8ge3sgZGF0YS5vd25lciB9fTsKK3slIGVuZGlmICV9Cit7JSBpZiBk YXRhLmNvbW1lbnQgJX0KK0NPTU1FTlQgT04gVklFVyB7eyBjb25ufHF0SWRl bnQoZGF0YS5zY2hlbWEsIGRhdGEubmFtZSkgfX0KKyAgICBJUyB7eyBkYXRh LmNvbW1lbnR8cXRMaXRlcmFsIH19OworeyUgZW5kaWYgJX0KK3slIGVuZGlm ICV9CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9n cm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy92aWV3cy90ZW1wbGF0 ZXMvdmlldy9wcGFzLzkuM19wbHVzL3NxbC9kZWxldGUuc3FsIGIvd2ViL3Bn YWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2Vz L3NjaGVtYXMvdmlld3MvdGVtcGxhdGVzL3ZpZXcvcHBhcy85LjNfcGx1cy9z cWwvZGVsZXRlLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwLi5lNTBiZWVjCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4v YnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVt YXMvdmlld3MvdGVtcGxhdGVzL3ZpZXcvcHBhcy85LjNfcGx1cy9zcWwvZGVs ZXRlLnNxbApAQCAtMCwwICsxLDEzIEBACit7IyA9PT09PT09PT09PT09PT09 PT09PT09IERyb3AvQ2FzY2FkZSB2aWV3IGJ5IG5hbWUgPT09PT09PT09PT09 PT09PT09PT09ICN9Cit7JSBpZiB2aWQgJX0KK1NFTEVDVAorICAgIGMucmVs bmFtZSBBUyBuYW1lLAorICAgIG5zcC5uc3BuYW1lCitGUk9NCisgICAgcGdf Y2xhc3MgYworTEVGVCBKT0lOIHBnX25hbWVzcGFjZSBuc3AgT04gYy5yZWxu YW1lc3BhY2UgPSBuc3Aub2lkCitXSEVSRQorICAgIGMucmVsZmlsZW5vZGUg PSB7eyB2aWQgfX07Cit7JSBlbGlmIChuYW1lIGFuZCBuc3BuYW1lKSAlfQor RFJPUCBWSUVXIHt7bnNwbmFtZX19Lnt7IGNvbm58cXRJZGVudChuYW1lKSB9 fSB7JSBpZiBjYXNjYWRlICV9IENBU0NBREUgeyUgZW5kaWYgJX0KK3slIGVu ZGlmICV9CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZl cl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy92aWV3cy90ZW1w bGF0ZXMvdmlldy9wcGFzLzkuM19wbHVzL3NxbC9nZXRfc2NoZW1hLnNxbCBi L3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2Rh dGFiYXNlcy9zY2hlbWFzL3ZpZXdzL3RlbXBsYXRlcy92aWV3L3BwYXMvOS4z X3BsdXMvc3FsL2dldF9zY2hlbWEuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAuLjEyN2Q0YjkKLS0tIC9kZXYvbnVsbAorKysgYi93 ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRh YmFzZXMvc2NoZW1hcy92aWV3cy90ZW1wbGF0ZXMvdmlldy9wcGFzLzkuM19w bHVzL3NxbC9nZXRfc2NoZW1hLnNxbApAQCAtMCwwICsxLDYgQEAKK1NFTEVD VAorICAgIG5zcG5hbWUKK0ZST00KKyAgICBwZ19uYW1lc3BhY2UKK1dIRVJF CisgICAgb2lkID0ge3sgc2NpZCB9fTo6b2lkOwpkaWZmIC0tZ2l0IGEvd2Vi L3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJh c2VzL3NjaGVtYXMvdmlld3MvdGVtcGxhdGVzL3ZpZXcvcHBhcy85LjNfcGx1 cy9zcWwvZ3JhbnQuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJf Z3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdmlld3MvdGVtcGxh dGVzL3ZpZXcvcHBhcy85LjNfcGx1cy9zcWwvZ3JhbnQuc3FsCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU5YTMxMGYKLS0tIC9kZXYv bnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMv c2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy92aWV3cy90ZW1wbGF0ZXMvdmll dy9wcGFzLzkuM19wbHVzL3NxbC9ncmFudC5zcWwKQEAgLTAsMCArMSw2IEBA Cit7IyA9PT09PSBHcmFudCBQZXJtaXNzaW9ucyB0byBVc2VyIFJvbGUgb24g Vmlld3MvVGFibGVzID09PT09ICN9Cit7JSBpbXBvcnQgJ21hY3Jvcy9zZWN1 cml0eS5tYWNyb3MnIGFzIFNFQ0xBQkxFICV9Cit7JSBpbXBvcnQgJ21hY3Jv cy9zY2hlbWFzL3ByaXZpbGVnZS5tYWNyb3MnIGFzIFBSSVZJTEVHRSAlfQor eyMgPT09PT0gV2Ugd2lsbCBnZW5lcmF0ZSBTZWN1cml0eSBMYWJlbCBTUUwg dXNpbmcgbWFjcm8gPT09PT0gI30KK3slIGlmIGRhdGEuc2VjbGFiZWxzICV9 eyUgZm9yIHIgaW4gZGF0YS5zZWNsYWJlbHMgJX17eyBTRUNMQUJMRS5BUFBM WShjb25uLCAnVklFVycsIGRhdGEubmFtZSwgci5wcm92aWRlciwgci5zZWN1 cml0eV9sYWJlbCkgfX17JSBlbmRmb3IgJX17JSBlbmRpZiAlfXslIGlmIGRh dGEuZGF0YWNsICV9Cit7JSBmb3IgcHJpdiBpbiBkYXRhLmRhdGFjbCAlfXt7 IFBSSVZJTEVHRS5TRVQoY29ubiwgJ1RBQkxFJywgcHJpdi5ncmFudGVlLCBk YXRhLm5hbWUsIHByaXYud2l0aG91dF9ncmFudCwgcHJpdi53aXRoX2dyYW50 LCBkYXRhLnNjaGVtYSkgfX17JSBlbmRmb3IgJX17JSBlbmRpZiAlfQpkaWZm IC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3Nl cnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdmlld3MvdGVtcGxhdGVzL3ZpZXcv cHBhcy85LjNfcGx1cy9zcWwvcHJvcGVydGllcy5zcWwgYi93ZWIvcGdhZG1p bi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2No ZW1hcy92aWV3cy90ZW1wbGF0ZXMvdmlldy9wcGFzLzkuM19wbHVzL3NxbC9w cm9wZXJ0aWVzLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwLi41ZDNkMWU0Ci0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4v YnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVt YXMvdmlld3MvdGVtcGxhdGVzL3ZpZXcvcHBhcy85LjNfcGx1cy9zcWwvcHJv cGVydGllcy5zcWwKQEAgLTAsMCArMSw3NCBAQAoreyUgaWYgKHZpZCBhbmQg ZGF0bGFzdHN5c29pZCkgb3Igc2NpZCAlfQorU0VMRUNUCisgICAgYy5vaWQs CisgICAgYy54bWluLAorICAgIGMucmVsa2luZCwKKyAgICBkZXNjcmlwdGlv biwKKyAgICAoQ0FTRSBXSEVOIGxlbmd0aChzcGMuc3BjbmFtZSkgPiAwIFRI RU4gc3BjLnNwY25hbWUgRUxTRSAncGdfZGVmYXVsdCcgRU5EKSBhcyBzcGNu YW1lLAorICAgIGMucmVsbmFtZSBBUyBuYW1lLAorICAgIG5zcC5uc3BuYW1l IEFTIHNjaGVtYSwKKyAgICBjLnJlbHRhYmxlc3BhY2UgQVMgc3Bjb2lkLAor ICAgIGMucmVsaXNwb3B1bGF0ZWQgQVMgaXNwb3B1bGF0ZWQsCisgICAgcGdf Z2V0X3VzZXJieWlkKGMucmVsb3duZXIpIEFTIG93bmVyLAorICAgIGFycmF5 X3RvX3N0cmluZyhjLnJlbGFjbDo6dGV4dFtdLCAnLCAnKSBBUyBhY2wsCisg ICAgcGdfZ2V0X3ZpZXdkZWYoYy5vaWQsIHRydWUpIEFTIGRlZmluaXRpb24s CisgICAgeyMgPT09PT0gQ2hlY2tzIGlmIGl0IGlzIHN5c3RlbSB2aWV3ID09 PT09ICN9CisgICAgeyUgaWYgdmlkIGFuZCBkYXRsYXN0c3lzb2lkICV9Cisg ICAgQ0FTRSBXSEVOIHt7dmlkfX0gPD0ge3tkYXRsYXN0c3lzb2lkfX0gVEhF TiBUcnVlIEVMU0UgRmFsc2UgRU5EIEFTIHN5c3RlbV92aWV3LAorICAgIHsl IGVuZGlmICV9CisoU0VMRUNUCisgICAgYXJyYXlfYWdnKGxhYmVsKQorRlJP TQorICAgIHBnX3NlY2xhYmVscyBzbDEKK1dIRVJFCisgICAgc2wxLm9iam9p ZD1jLm9pZCBBTkQgc2wxLm9ianN1YmlkPTApIEFTIGxhYmVscywKKyhTRUxF Q1QKKyAgICBhcnJheV9hZ2cocHJvdmlkZXIpCitGUk9NCisgICAgcGdfc2Vj bGFiZWxzIHNsMgorV0hFUkUKKyAgICBzbDIub2Jqb2lkPWMub2lkIEFORCBz bDIub2Jqc3ViaWQ9MCkgQVMgcHJvdmlkZXJzLAorICAgIHN1YnN0cmluZyhh cnJheV90b19zdHJpbmcoYy5yZWxvcHRpb25zLCAnLCcpCisgICAgICAgIEZS T00gJ3NlY3VyaXR5X2JhcnJpZXI9KFthLXp8MC05XSopJykgQVMgc2VjdXJp dHlfYmFycmllcgorRlJPTSBwZ19jbGFzcyBjCitMRUZUIE9VVEVSIEpPSU4g cGdfbmFtZXNwYWNlIG5zcCBvbiBuc3Aub2lkID0gYy5yZWxuYW1lc3BhY2UK K0xFRlQgT1VURVIgSk9JTiBwZ190YWJsZXNwYWNlIHNwYyBvbiBzcGMub2lk PWMucmVsdGFibGVzcGFjZQorTEVGVCBPVVRFUiBKT0lOIHBnX2Rlc2NyaXB0 aW9uIGRlcyBPTiAoZGVzLm9iam9pZD1jLm9pZCBhbmQgZGVzLm9ianN1Ymlk PTAgQU5EIGRlcy5jbGFzc29pZD0ncGdfY2xhc3MnOjpyZWdjbGFzcykKK0xF RlQgT1VURVIgSk9JTiBwZ19jbGFzcyB0c3QgT04gdHN0Lm9pZCA9IGMucmVs dG9hc3RyZWxpZAorICAgIFdIRVJFICgoYy5yZWxoYXNydWxlcyBBTkQgKEVY SVNUUyAoCisgICAgICAgIFNFTEVDVAorICAgICAgICAgICAgci5ydWxlbmFt ZQorICAgICAgICBGUk9NCisgICAgICAgICAgICBwZ19yZXdyaXRlIHIKKyAg ICAgICAgV0hFUkUKKyAgICAgICAgICAgICgoci5ldl9jbGFzcyA9IGMub2lk KQorICAgICAgICAgICAgICAgIEFORCAoYnBjaGFyKHIuZXZfdHlwZSkgPSAn MSc6OmJwY2hhcikpICkpKQorICAgICAgICAgICAgQU5EIChjLnJlbGtpbmQg PSAndic6OmNoYXIpCisgICAgICAgICAgKQoreyUgaWYgKHZpZCBhbmQgZGF0 bGFzdHN5c29pZCkgJX0KKyAgICBBTkQgYy5vaWQgPSB7e3ZpZH19OjpvaWQK K3slIGVsaWYgc2NpZCAlfQorICAgIEFORCBjLnJlbG5hbWVzcGFjZSA9IHt7 c2NpZH19OjpvaWQKK09SREVSIEJZCisgICAgYy5yZWxuYW1lCit7JSBlbmRp ZiAlfQorCit7JSBlbGlmIHR5cGUgPT0gJ3JvbGVzJyAlfQorU0VMRUNUCisg ICAgcHIucm9sbmFtZQorRlJPTQorICAgIHBnX3JvbGVzIHByCitXSEVSRQor ICAgIHByLnJvbGNhbmxvZ2luCitPUkRFUiBCWQorICAgIHByLnJvbG5hbWUK KworeyUgZWxpZiB0eXBlID09ICdzY2hlbWFzJyAlfQorU0VMRUNUCisgICAg bnNwLm5zcG5hbWUKK0ZST00KKyAgICBwZ19uYW1lc3BhY2UgbnNwCitXSEVS RQorICAgIChuc3AubnNwbmFtZSBOT1QgTElLRSBFJ3BnXFxfJScKKyAgICAg ICAgQU5EIG5zcC5uc3BuYW1lICE9ICdpbmZvcm1hdGlvbl9zY2hlbWEnKQor eyUgZW5kaWYgJX0KZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIv c2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3ZpZXdz L3RlbXBsYXRlcy92aWV3L3BwYXMvOS4zX3BsdXMvc3FsL3VwZGF0ZS5zcWwg Yi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9k YXRhYmFzZXMvc2NoZW1hcy92aWV3cy90ZW1wbGF0ZXMvdmlldy9wcGFzLzku M19wbHVzL3NxbC91cGRhdGUuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAuLjAyZDhmMzcKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIv cGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFz ZXMvc2NoZW1hcy92aWV3cy90ZW1wbGF0ZXMvdmlldy9wcGFzLzkuM19wbHVz L3NxbC91cGRhdGUuc3FsCkBAIC0wLDAgKzEsNzUgQEAKK3sjID09PT09PT09 PT09PT09PT09PT09PT09PT09PT0gVXBkYXRlIFZpZXcgPT09PT09PT09PT09 PT09PT09PT09PT09PSAjfQoreyUgaW1wb3J0ICdtYWNyb3Mvc2VjdXJpdHku bWFjcm9zJyBhcyBTRUNMQUJMRSAlfQoreyUgaW1wb3J0ICdtYWNyb3Mvc2No ZW1hcy9wcml2aWxlZ2UubWFjcm9zJyBhcyBQUklWSUxFR0UgJX0KK3slIGlm IGRhdGEgJX0KK3slIHNldCB2aWV3X25hbWUgPSBkYXRhLm5hbWUgaWYgZGF0 YS5uYW1lIGVsc2Ugb19kYXRhLm5hbWUgJX0KK3slIHNldCB2aWV3X3NjaGVt YSA9IGRhdGEuc2NoZW1hIGlmIGRhdGEuc2NoZW1hIGVsc2Ugb19kYXRhLnNj aGVtYSAlfQoreyUgc2V0IGRlZiA9IGRhdGEuZGVmaW5pdGlvbi5yc3RyaXAo JzsnKSBpZiBkYXRhLmRlZmluaXRpb24gJX0KK3slIGlmIGRhdGEubmFtZSBh bmQgZGF0YS5uYW1lICE9IG9fZGF0YS5uYW1lICV9CitBTFRFUiBWSUVXIHt7 IGNvbm58cXRJZGVudChvX2RhdGEuc2NoZW1hLCBvX2RhdGEubmFtZSkgfX0K KyAgICBSRU5BTUUgVE8ge3sgY29ubnxxdElkZW50KGRhdGEubmFtZSkgfX07 Cit7JSBlbmRpZiAlfQoreyUgaWYgZGF0YS5zY2hlbWEgYW5kIGRhdGEuc2No ZW1hICE9IG9fZGF0YS5zY2hlbWEgJX0KK0FMVEVSIFZJRVcge3sgY29ubnxx dElkZW50KG9fZGF0YS5zY2hlbWEsIHZpZXdfbmFtZSApIH19CisgICAgU0VU IFNDSEVNQSB7eyBjb25ufHF0SWRlbnQoZGF0YS5zY2hlbWEpIH19OworeyUg ZW5kaWYgJX0KK3slIGlmIGRhdGEub3duZXIgYW5kIGRhdGEub3duZXIgIT0g b19kYXRhLm93bmVyICV9CitBTFRFUiBUQUJMRSB7eyBjb25ufHF0SWRlbnQo dmlld19zY2hlbWEsIHZpZXdfbmFtZSkgfX0KKyAgICBPV05FUiBUTyB7eyBj b25ufHF0SWRlbnQoZGF0YS5vd25lcikgfX07Cit7JSBlbmRpZiAlfQoreyUg aWYgZGVmIGFuZCBkZWYgIT0gb19kYXRhLmRlZmluaXRpb24ucnN0cmlwKCc7 JykgJX0KK0NSRUFURSBPUiBSRVBMQUNFIFZJRVcge3sgY29ubnxxdElkZW50 KHZpZXdfc2NoZW1hLCB2aWV3X25hbWUpIH19Cit7JSBpZiAoZGF0YS5zZWN1 cml0eV9iYXJyaWVyIGFuZCBkYXRhLnNlY3VyaXR5X2JhcnJpZXIgIT0gb19k YXRhLnNlY3VyaXR5X2JhcnJpZXIpICV9CisgICAgV0lUSCAoeyUgaWYgZGF0 YS5zZWN1cml0eV9iYXJyaWVyICV9c2VjdXJpdHlfYmFycmllcj17eyBkYXRh LnNlY3VyaXR5X2JhcnJpZXJ8bG93ZXIgfX17JSBlbmRpZiAlfSkKK3slIGVu ZGlmICV9CisgICAgQVN7eyBkZWYgfX07Cit7JSBlbHNlICV9Cit7JSBpZiAo ZGF0YS5zZWN1cml0eV9iYXJyaWVyIGlzIGRlZmluZWQgYW5kIGRhdGEuc2Vj dXJpdHlfYmFycmllcnxsb3dlciAhPSAgb19kYXRhLnNlY3VyaXR5X2JhcnJp ZXJ8bG93ZXIpICV9CitBTFRFUiBWSUVXIHt7IGNvbm58cXRJZGVudCh2aWV3 X3NjaGVtYSwgdmlld19uYW1lKSB9fQorICAgIFNFVCAoc2VjdXJpdHlfYmFy cmllcj17eyBkYXRhLnNlY3VyaXR5X2JhcnJpZXJ8bG93ZXIgfX0pOworeyUg ZW5kaWYgJX0KK3slIGVuZGlmICV9CisKK3slIGlmIGRhdGEuY29tbWVudCBh bmQgZGF0YS5jb21tZW50ICE9IG9fZGF0YS5jb21tZW50ICV9CitDT01NRU5U IE9OIFZJRVcge3sgY29ubnxxdElkZW50KHZpZXdfc2NoZW1hLCB2aWV3X25h bWUpIH19CisgICAgSVMge3sgZGF0YS5jb21tZW50fHF0TGl0ZXJhbCB9fTsK K3slIGVuZGlmICV9Cit7IyBUaGUgU1FMIGdlbmVyYXRlZCBiZWxvdyB3aWxs IGNoYW5nZSBwcml2aWxlZ2VzICN9Cit7JSBpZiBkYXRhLmRhdGFjbCAlfQor eyUgaWYgJ2RlbGV0ZWQnIGluIGRhdGEuZGF0YWNsICV9Cit7JSBmb3IgcHJp diBpbiBkYXRhLmRhdGFjbC5kZWxldGVkICV9Cit7eyBQUklWSUxFR0UuVU5T RVRBTEwoY29ubiwgJ1RBQkxFJywgcHJpdi5ncmFudGVlLCBkYXRhLm5hbWUs IGRhdGEuc2NoZW1hKSB9fQoreyUgZW5kZm9yICV9Cit7JSBlbmRpZiAlfQor eyUgaWYgJ2NoYW5nZWQnIGluIGRhdGEuZGF0YWNsICV9Cit7JSBmb3IgcHJp diBpbiBkYXRhLmRhdGFjbC5jaGFuZ2VkICV9Cit7eyBQUklWSUxFR0UuVU5T RVRBTEwoY29ubiwgJ1RBQkxFJywgcHJpdi5ncmFudGVlLCBkYXRhLm5hbWUs IGRhdGEuc2NoZW1hKSB9fQore3sgUFJJVklMRUdFLlNFVChjb25uLCAnVEFC TEUnLCBwcml2LmdyYW50ZWUsIGRhdGEubmFtZSwgcHJpdi53aXRob3V0X2dy YW50LCBwcml2LndpdGhfZ3JhbnQsIGRhdGEuc2NoZW1hKSB9fQoreyUgZW5k Zm9yICV9Cit7JSBlbmRpZiAlfQoreyUgaWYgJ2FkZGVkJyBpbiBkYXRhLmRh dGFjbCAlfQoreyUgZm9yIHByaXYgaW4gZGF0YS5kYXRhY2wuYWRkZWQgJX0K K3t7IFBSSVZJTEVHRS5TRVQoY29ubiwgJ1RBQkxFJywgcHJpdi5ncmFudGVl LCBkYXRhLm5hbWUsIHByaXYud2l0aG91dF9ncmFudCwgcHJpdi53aXRoX2dy YW50LCBkYXRhLnNjaGVtYSkgfX0KK3slIGVuZGZvciAlfQoreyUgZW5kaWYg JX0KK3slIGVuZGlmICV9Cit7IyBUaGUgU1FMIGdlbmVyYXRlZCBiZWxvdyB3 aWxsIGNoYW5nZSBTZWN1cml0eSBMYWJlbCAjfQoreyUgaWYgZGF0YS5zZWNs YWJlbHMgaXMgbm90IG5vbmUgYW5kIGRhdGEuc2VjbGFiZWxzfGxlbmd0aCA+ IDAgJX0KK3slIHNldCBzZWNsYWJlbHMgPSBkYXRhLnNlY2xhYmVscyAlfQor eyUgaWYgJ2RlbGV0ZWQnIGluIHNlY2xhYmVscyBhbmQgc2VjbGFiZWxzLmRl bGV0ZWR8bGVuZ3RoID4gMCAlfQoreyUgZm9yIHIgaW4gc2VjbGFiZWxzLmRl bGV0ZWQgJX0KK3t7IFNFQ0xBQkxFLkRST1AoY29ubiwgJ1ZJRVcnLCBkYXRh Lm5hbWUsIHIucHJvdmlkZXIpIH19Cit7JSBlbmRmb3IgJX0KK3slIGVuZGlm ICV9Cit7JSBpZiAnYWRkZWQnIGluIHNlY2xhYmVscyBhbmQgc2VjbGFiZWxz LmFkZGVkfGxlbmd0aCA+IDAgJX0KK3slIGZvciByIGluIHNlY2xhYmVscy5h ZGRlZCAlfQore3sgU0VDTEFCTEUuQVBQTFkoY29ubiwgJ1ZJRVcnLCBkYXRh Lm5hbWUsIHIucHJvdmlkZXIsIHIuc2VjdXJpdHlfbGFiZWwpIH19Cit7JSBl bmRmb3IgJX0KK3slIGVuZGlmICV9Cit7JSBpZiAnY2hhbmdlZCcgaW4gc2Vj bGFiZWxzIGFuZCBzZWNsYWJlbHMuY2hhbmdlZHxsZW5ndGggPiAwICV9Cit7 JSBmb3IgciBpbiBzZWNsYWJlbHMuY2hhbmdlZCAlfQore3sgU0VDTEFCTEUu QVBQTFkoY29ubiwgJ1ZJRVcnLCBkYXRhLm5hbWUsIHIucHJvdmlkZXIsIHIu c2VjdXJpdHlfbGFiZWwpIH19Cit7JSBlbmRmb3IgJX0KK3slIGVuZGlmICV9 Cit7JSBlbmRpZiAlfQoreyUgZW5kaWYgJX0KZGlmZiAtLWdpdCBhL3dlYi9w Z2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNl cy9zY2hlbWFzL3ZpZXdzL3RlbXBsYXRlcy92aWV3L3BwYXMvOS4zX3BsdXMv c3FsL3ZpZXdfaWQuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJf Z3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdmlld3MvdGVtcGxh dGVzL3ZpZXcvcHBhcy85LjNfcGx1cy9zcWwvdmlld19pZC5zcWwKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmRmZjA0ZQotLS0gL2Rl di9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3ZpZXdzL3RlbXBsYXRlcy92 aWV3L3BwYXMvOS4zX3BsdXMvc3FsL3ZpZXdfaWQuc3FsCkBAIC0wLDAgKzEs NCBAQAoreyMgQmVsb3cgd2lsbCBwcm92aWRlIHZpZXcgaWQgZm9yIG5ld2x5 IGNyZWF0ZWQgdmlldyAjfQoreyUgaWYgZGF0YSAlfQorU0VMRUNUIGMub2lk IEZST00gcGdfY2xhc3MgYyBXSEVSRSBjLnJlbG5hbWUgPSAne3sgZGF0YS5u YW1lIH19JzsKK3slIGVuZGlmICV9CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1p bi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2No ZW1hcy92aWV3cy90ZW1wbGF0ZXMvdmlldy9wcGFzLzkuNF9wbHVzL3NxbC9h Y2wuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3Nl cnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdmlld3MvdGVtcGxhdGVzL3ZpZXcv cHBhcy85LjRfcGx1cy9zcWwvYWNsLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwLi43ZDc5MWY1Ci0tLSAvZGV2L251bGwKKysrIGIv d2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0 YWJhc2VzL3NjaGVtYXMvdmlld3MvdGVtcGxhdGVzL3ZpZXcvcHBhcy85LjRf cGx1cy9zcWwvYWNsLnNxbApAQCAtMCwwICsxLDM5IEBACit7IyA9PT09PT09 PT09PT09PT09PT09PT09PT09PT09IEdldCBBQ0xzID09PT09PT09PT09PT09 PT09PT09PT09PT0gI30KK3slIGlmIHZpZCAlfQorU0VMRUNUCisgICAgJ2Rh dGFjbCcgYXMgZGVmdHlwZSwKKyAgICBDT0FMRVNDRShndC5yb2xuYW1lLCAn cHVibGljJykgZ3JhbnRlZSwKKyAgICBnLnJvbG5hbWUgZ3JhbnRvciwKKyAg ICBhcnJheV9hZ2cocHJpdmlsZWdlX3R5cGUpIGFzIHByaXZpbGVnZXMsCisg ICAgYXJyYXlfYWdnKGlzX2dyYW50YWJsZSkgYXMgZ3JhbnRhYmxlCitGUk9N CisgICAgKFNFTEVDVAorICAgICAgICBkLmdyYW50ZWUsIGQuZ3JhbnRvciwg ZC5pc19ncmFudGFibGUsCisgICAgICAgIENBU0UgZC5wcml2aWxlZ2VfdHlw ZQorICAgICAgICBXSEVOICdERUxFVEUnIFRIRU4gJ2QnCisgICAgICAgIFdI RU4gJ0lOU0VSVCcgVEhFTiAnYScKKyAgICAgICAgV0hFTiAnUkVGRVJFTkNF UycgVEhFTiAneCcKKyAgICAgICAgV0hFTiAnU0VMRUNUJyBUSEVOICdyJwor ICAgICAgICBXSEVOICdUUklHR0VSJyBUSEVOICd0JworICAgICAgICBXSEVO ICdVUERBVEUnIFRIRU4gJ3cnCisgICAgICAgIFdIRU4gJ1RSVU5DQVRFJyBU SEVOICdEJworICAgICAgICBFTFNFICdVTktOT1dOJworICAgICAgICBFTkQg QVMgcHJpdmlsZWdlX3R5cGUKKyAgICBGUk9NCisgICAgICAgIChTRUxFQ1QK KyAgICAgICAgICAgIHJlbGFjbAorICAgICAgICAgRlJPTQorICAgICAgICAg ICAgcGdfY2xhc3MgY2wKKyAgICAgICAgIExFRlQgT1VURVIgSk9JTiBwZ19z aGRlc2NyaXB0aW9uIGRlc2NyIE9OCisgICAgICAgICAgICAoY2wub2lkPWRl c2NyLm9iam9pZCBBTkQgZGVzY3IuY2xhc3NvaWQ9J3BnX2NsYXNzJzo6cmVn Y2xhc3MpCisgICAgICAgICBXSEVSRQorICAgICAgICAgICAgY2wub2lkID0g e3sgdmlkIH19OjpPSUQgQU5EIHJlbGtpbmQgPSAndicKKyAgICAgICAgKSBh Y2wsCisgICAgICAgIGFjbGV4cGxvZGUocmVsYWNsKSBkCisgICAgKSBkCitM RUZUIEpPSU4gcGdfY2F0YWxvZy5wZ19yb2xlcyBnIE9OIChkLmdyYW50b3Ig PSBnLm9pZCkKK0xFRlQgSk9JTiBwZ19jYXRhbG9nLnBnX3JvbGVzIGd0IE9O IChkLmdyYW50ZWUgPSBndC5vaWQpCitHUk9VUCBCWQorICAgIGcucm9sbmFt ZSwKKyAgICBndC5yb2xuYW1lCit7JSBlbmRpZiAlfQpkaWZmIC0tZ2l0IGEv d2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0 YWJhc2VzL3NjaGVtYXMvdmlld3MvdGVtcGxhdGVzL3ZpZXcvcHBhcy85LjRf cGx1cy9zcWwvY3JlYXRlLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2Vy dmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3ZpZXdzL3Rl bXBsYXRlcy92aWV3L3BwYXMvOS40X3BsdXMvc3FsL2NyZWF0ZS5zcWwKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjQzYjUxOQotLS0g L2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dy b3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3ZpZXdzL3RlbXBsYXRl cy92aWV3L3BwYXMvOS40X3BsdXMvc3FsL2NyZWF0ZS5zcWwKQEAgLTAsMCAr MSwyMiBAQAoreyM9PT09PT09PT09PT09PT09PT09PT09PT09PT09Q3JlYXRl IG5ldyB2aWV3PT09PT09PT09PT09PT09PT09PT09PT09PSN9Cit7JSBpZiBk aXNwbGF5X2NvbW1lbnRzICV9CistLSBWaWV3OiB7eyBjb25ufHF0SWRlbnQo ZGF0YS5zY2hlbWEsIGRhdGEubmFtZSkgfX0KKworLS0gRFJPUCBWSUVXIHt7 IGNvbm58cXRJZGVudChkYXRhLnNjaGVtYSwgZGF0YS5uYW1lKSB9fTsKKwor eyUgZW5kaWYgJX0KK3slIGlmIGRhdGEubmFtZSBhbmQgZGF0YS5zY2hlbWEg YW5kIGRhdGEuZGVmaW5pdGlvbiAlfQorQ1JFQVRFIE9SIFJFUExBQ0UgVklF VyB7eyBjb25ufHF0SWRlbnQoZGF0YS5zY2hlbWEsIGRhdGEubmFtZSkgfX17 JSBpZiAoKGRhdGEuY2hlY2tfb3B0aW9uIGFuZCBkYXRhLmNoZWNrX29wdGlv bi5sb3dlcigpICE9ICdubycpIG9yIGRhdGEuc2VjdXJpdHlfYmFycmllcikg JX17eyAnXG4nIH19V0lUSCAoCit7JSBpZiBkYXRhLmNoZWNrX29wdGlvbiBh bmQgZGF0YS5jaGVja19vcHRpb24ubG93ZXIoKSAhPSAnbm8nICV9ICAgIGNo ZWNrX29wdGlvbj17eyBkYXRhLmNoZWNrX29wdGlvbiB9fXslIGVuZGlmICV9 e3sgJyxccicgaWYgZGF0YS5jaGVja19vcHRpb24gYW5kIGRhdGEuY2hlY2tf b3B0aW9uLmxvd2VyKCkgIT0gJ25vJyBhbmQgZGF0YS5zZWN1cml0eV9iYXJy aWVyIH19eyUgaWYgZGF0YS5zZWN1cml0eV9iYXJyaWVyICV9ICAgIHNlY3Vy aXR5X2JhcnJpZXI9e3sgZGF0YS5zZWN1cml0eV9iYXJyaWVyfGxvd2VyIH19 eyUgZW5kaWYgJX17eydccid9fQorKXslIGVuZGlmICV9IEFTCit7eyBkYXRh LmRlZmluaXRpb24ucnN0cmlwKCc7JykgfX07Cit7JSBpZiBkYXRhLm93bmVy IGFuZCBkYXRhLm1fdmlldyBpcyB1bmRlZmluZWQgJX0KKworQUxURVIgVEFC TEUge3sgY29ubnxxdElkZW50KGRhdGEuc2NoZW1hLCBkYXRhLm5hbWUpIH19 CisgICAgT1dORVIgVE8ge3sgY29ubnxxdElkZW50KGRhdGEub3duZXIpIH19 OworeyUgZW5kaWYgJX0KK3slIGlmIGRhdGEuY29tbWVudCAlfQorQ09NTUVO VCBPTiBWSUVXIHt7IGNvbm58cXRJZGVudChkYXRhLnNjaGVtYSwgZGF0YS5u YW1lKSB9fQorICAgIElTIHt7IGRhdGEuY29tbWVudHxxdExpdGVyYWwgfX07 Cit7JSBlbmRpZiAlfQoreyUgZW5kaWYgJX0KZGlmZiAtLWdpdCBhL3dlYi9w Z2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNl cy9zY2hlbWFzL3ZpZXdzL3RlbXBsYXRlcy92aWV3L3BwYXMvOS40X3BsdXMv c3FsL2RlbGV0ZS5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9n cm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy92aWV3cy90ZW1wbGF0 ZXMvdmlldy9wcGFzLzkuNF9wbHVzL3NxbC9kZWxldGUuc3FsCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU1MGJlZWMKLS0tIC9kZXYv bnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMv c2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy92aWV3cy90ZW1wbGF0ZXMvdmll dy9wcGFzLzkuNF9wbHVzL3NxbC9kZWxldGUuc3FsCkBAIC0wLDAgKzEsMTMg QEAKK3sjID09PT09PT09PT09PT09PT09PT09PT0gRHJvcC9DYXNjYWRlIHZp ZXcgYnkgbmFtZSA9PT09PT09PT09PT09PT09PT09PT0gI30KK3slIGlmIHZp ZCAlfQorU0VMRUNUCisgICAgYy5yZWxuYW1lIEFTIG5hbWUsCisgICAgbnNw Lm5zcG5hbWUKK0ZST00KKyAgICBwZ19jbGFzcyBjCitMRUZUIEpPSU4gcGdf bmFtZXNwYWNlIG5zcCBPTiBjLnJlbG5hbWVzcGFjZSA9IG5zcC5vaWQKK1dI RVJFCisgICAgYy5yZWxmaWxlbm9kZSA9IHt7IHZpZCB9fTsKK3slIGVsaWYg KG5hbWUgYW5kIG5zcG5hbWUpICV9CitEUk9QIFZJRVcge3tuc3BuYW1lfX0u e3sgY29ubnxxdElkZW50KG5hbWUpIH19IHslIGlmIGNhc2NhZGUgJX0gQ0FT Q0FERSB7JSBlbmRpZiAlfQoreyUgZW5kaWYgJX0KZGlmZiAtLWdpdCBhL3dl Yi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFi YXNlcy9zY2hlbWFzL3ZpZXdzL3RlbXBsYXRlcy92aWV3L3BwYXMvOS40X3Bs dXMvc3FsL2dldF9zY2hlbWEuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9z ZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdmlld3Mv dGVtcGxhdGVzL3ZpZXcvcHBhcy85LjRfcGx1cy9zcWwvZ2V0X3NjaGVtYS5z cWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTI3ZDRi OQotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2Vy dmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3ZpZXdzL3Rl bXBsYXRlcy92aWV3L3BwYXMvOS40X3BsdXMvc3FsL2dldF9zY2hlbWEuc3Fs CkBAIC0wLDAgKzEsNiBAQAorU0VMRUNUCisgICAgbnNwbmFtZQorRlJPTQor ICAgIHBnX25hbWVzcGFjZQorV0hFUkUKKyAgICBvaWQgPSB7eyBzY2lkIH19 OjpvaWQ7CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZl cl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy92aWV3cy90ZW1w bGF0ZXMvdmlldy9wcGFzLzkuNF9wbHVzL3NxbC9ncmFudC5zcWwgYi93ZWIv cGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFz ZXMvc2NoZW1hcy92aWV3cy90ZW1wbGF0ZXMvdmlldy9wcGFzLzkuNF9wbHVz L3NxbC9ncmFudC5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMC4uNTlhMzEwZgotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWlu L2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hl bWFzL3ZpZXdzL3RlbXBsYXRlcy92aWV3L3BwYXMvOS40X3BsdXMvc3FsL2dy YW50LnNxbApAQCAtMCwwICsxLDYgQEAKK3sjID09PT09IEdyYW50IFBlcm1p c3Npb25zIHRvIFVzZXIgUm9sZSBvbiBWaWV3cy9UYWJsZXMgPT09PT0gI30K K3slIGltcG9ydCAnbWFjcm9zL3NlY3VyaXR5Lm1hY3JvcycgYXMgU0VDTEFC TEUgJX0KK3slIGltcG9ydCAnbWFjcm9zL3NjaGVtYXMvcHJpdmlsZWdlLm1h Y3JvcycgYXMgUFJJVklMRUdFICV9Cit7IyA9PT09PSBXZSB3aWxsIGdlbmVy YXRlIFNlY3VyaXR5IExhYmVsIFNRTCB1c2luZyBtYWNybyA9PT09PSAjfQor eyUgaWYgZGF0YS5zZWNsYWJlbHMgJX17JSBmb3IgciBpbiBkYXRhLnNlY2xh YmVscyAlfXt7IFNFQ0xBQkxFLkFQUExZKGNvbm4sICdWSUVXJywgZGF0YS5u YW1lLCByLnByb3ZpZGVyLCByLnNlY3VyaXR5X2xhYmVsKSB9fXslIGVuZGZv ciAlfXslIGVuZGlmICV9eyUgaWYgZGF0YS5kYXRhY2wgJX0KK3slIGZvciBw cml2IGluIGRhdGEuZGF0YWNsICV9e3sgUFJJVklMRUdFLlNFVChjb25uLCAn VEFCTEUnLCBwcml2LmdyYW50ZWUsIGRhdGEubmFtZSwgcHJpdi53aXRob3V0 X2dyYW50LCBwcml2LndpdGhfZ3JhbnQsIGRhdGEuc2NoZW1hKSB9fXslIGVu ZGZvciAlfXslIGVuZGlmICV9CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9i cm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1h cy92aWV3cy90ZW1wbGF0ZXMvdmlldy9wcGFzLzkuNF9wbHVzL3NxbC9wcm9w ZXJ0aWVzLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3ZpZXdzL3RlbXBsYXRlcy92 aWV3L3BwYXMvOS40X3BsdXMvc3FsL3Byb3BlcnRpZXMuc3FsCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM3MzgwZDgKLS0tIC9kZXYv bnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMv c2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy92aWV3cy90ZW1wbGF0ZXMvdmll dy9wcGFzLzkuNF9wbHVzL3NxbC9wcm9wZXJ0aWVzLnNxbApAQCAtMCwwICsx LDc3IEBACit7IyA9PT09PT09PT09PT09PT09PT09PT09PT09PSBGZXRjaCBW aWV3IFByb3BlcnRpZXMgPT09PT09PT09PT09PT09PT09PT09PT09PSAjfQor eyUgaWYgKHZpZCBhbmQgZGF0bGFzdHN5c29pZCkgb3Igc2NpZCAlfQorU0VM RUNUCisgICAgYy5vaWQsCisgICAgYy54bWluLAorICAgIGMucmVsa2luZCwK KyAgICBkZXNjcmlwdGlvbiwKKyAgICAoQ0FTRSBXSEVOIGxlbmd0aChzcGMu c3BjbmFtZSkgPiAwIFRIRU4gc3BjLnNwY25hbWUgRUxTRSAncGdfZGVmYXVs dCcgRU5EKSBhcyBzcGNuYW1lLAorICAgIGMucmVsbmFtZSBBUyBuYW1lLAor ICAgIGMucmVsdGFibGVzcGFjZSBBUyBzcGNvaWQsCisgICAgbnNwLm5zcG5h bWUgQVMgc2NoZW1hLAorICAgIGMucmVsaXNwb3B1bGF0ZWQgQVMgaXNwb3B1 bGF0ZWQsCisgICAgcGdfZ2V0X3VzZXJieWlkKGMucmVsb3duZXIpIEFTIG93 bmVyLAorICAgIGFycmF5X3RvX3N0cmluZyhjLnJlbGFjbDo6dGV4dFtdLCAn LCAnKSBBUyBhY2wsCisgICAgcGdfZ2V0X3ZpZXdkZWYoYy5vaWQsIHRydWUp IEFTIGRlZmluaXRpb24sCisgICAgeyMgPT09PT0gQ2hlY2tzIGlmIGl0IGlz IHN5c3RlbSB2aWV3ID09PT09ICN9CisgICAgeyUgaWYgdmlkIGFuZCBkYXRs YXN0c3lzb2lkICV9CisgICAgQ0FTRSBXSEVOIHt7dmlkfX0gPD0ge3tkYXRs YXN0c3lzb2lkfX0gVEhFTiBUcnVlIEVMU0UgRmFsc2UgRU5EIEFTIHN5c3Rl bV92aWV3LAorICAgIHslIGVuZGlmICV9CisoU0VMRUNUCisgICAgYXJyYXlf YWdnKGxhYmVsKQorRlJPTQorICAgIHBnX3NlY2xhYmVscyBzbDEKK1dIRVJF CisgICAgc2wxLm9iam9pZD1jLm9pZCBBTkQgc2wxLm9ianN1YmlkPTApIEFT IGxhYmVscywKKyhTRUxFQ1QKKyAgICBhcnJheV9hZ2cocHJvdmlkZXIpCitG Uk9NCisgICAgcGdfc2VjbGFiZWxzIHNsMgorV0hFUkUKKyAgICBzbDIub2Jq b2lkPWMub2lkIEFORCBzbDIub2Jqc3ViaWQ9MCkgQVMgcHJvdmlkZXJzLAor ICAgIHN1YnN0cmluZyhhcnJheV90b19zdHJpbmcoYy5yZWxvcHRpb25zLCAn LCcpCisgICAgICAgIEZST00gJ2NoZWNrX29wdGlvbj0oW2Etel0qKScpIEFT IGNoZWNrX29wdGlvbiwKKyAgICBzdWJzdHJpbmcoYXJyYXlfdG9fc3RyaW5n KGMucmVsb3B0aW9ucywgJywnKQorICAgICAgICBGUk9NICdzZWN1cml0eV9i YXJyaWVyPShbYS16fDAtOV0qKScpIEFTIHNlY3VyaXR5X2JhcnJpZXIKK0ZS T00gcGdfY2xhc3MgYworTEVGVCBPVVRFUiBKT0lOIHBnX25hbWVzcGFjZSBu c3Agb24gbnNwLm9pZCA9IGMucmVsbmFtZXNwYWNlCitMRUZUIE9VVEVSIEpP SU4gcGdfdGFibGVzcGFjZSBzcGMgb24gc3BjLm9pZD1jLnJlbHRhYmxlc3Bh Y2UKK0xFRlQgT1VURVIgSk9JTiBwZ19kZXNjcmlwdGlvbiBkZXMgT04gKGRl cy5vYmpvaWQ9Yy5vaWQgYW5kIGRlcy5vYmpzdWJpZD0wIEFORCBkZXMuY2xh c3NvaWQ9J3BnX2NsYXNzJzo6cmVnY2xhc3MpCitMRUZUIE9VVEVSIEpPSU4g cGdfY2xhc3MgdHN0IE9OIHRzdC5vaWQgPSBjLnJlbHRvYXN0cmVsaWQKKyAg ICBXSEVSRSAoKGMucmVsaGFzcnVsZXMgQU5EIChFWElTVFMgKAorICAgICAg ICBTRUxFQ1QKKyAgICAgICAgICAgIHIucnVsZW5hbWUKKyAgICAgICAgRlJP TQorICAgICAgICAgICAgcGdfcmV3cml0ZSByCisgICAgICAgIFdIRVJFCisg ICAgICAgICAgICAoKHIuZXZfY2xhc3MgPSBjLm9pZCkKKyAgICAgICAgICAg ICAgICBBTkQgKGJwY2hhcihyLmV2X3R5cGUpID0gJzEnOjpicGNoYXIpKSAp KSkKKyAgICAgICAgICAgIEFORCAoYy5yZWxraW5kID0gJ3YnOjpjaGFyKQor ICAgICAgICAgICkKK3slIGlmICh2aWQgYW5kIGRhdGxhc3RzeXNvaWQpICV9 CisgICAgQU5EIGMub2lkID0ge3t2aWR9fTo6b2lkCit7JSBlbGlmIHNjaWQg JX0KKyAgICBBTkQgYy5yZWxuYW1lc3BhY2UgPSB7e3NjaWR9fTo6b2lkCitP UkRFUiBCWQorICAgIGMucmVsbmFtZQoreyUgZW5kaWYgJX0KKworeyUgZWxp ZiB0eXBlID09ICdyb2xlcycgJX0KK1NFTEVDVAorICAgIHByLnJvbG5hbWUK K0ZST00KKyAgICBwZ19yb2xlcyBwcgorV0hFUkUKKyAgICBwci5yb2xjYW5s b2dpbgorT1JERVIgQlkKKyAgICBwci5yb2xuYW1lCisKK3slIGVsaWYgdHlw ZSA9PSAnc2NoZW1hcycgJX0KK1NFTEVDVAorICAgIG5zcC5uc3BuYW1lCitG Uk9NCisgICAgcGdfbmFtZXNwYWNlIG5zcAorV0hFUkUKKyAgICAobnNwLm5z cG5hbWUgTk9UIExJS0UgRSdwZ1xcXyUnCisgICAgICAgIEFORCBuc3AubnNw bmFtZSAhPSAnaW5mb3JtYXRpb25fc2NoZW1hJykKK3slIGVuZGlmICV9CmRp ZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMv c2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy92aWV3cy90ZW1wbGF0ZXMvdmll dy9wcGFzLzkuNF9wbHVzL3NxbC91cGRhdGUuc3FsIGIvd2ViL3BnYWRtaW4v YnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVt YXMvdmlld3MvdGVtcGxhdGVzL3ZpZXcvcHBhcy85LjRfcGx1cy9zcWwvdXBk YXRlLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41 NjE4M2ZkCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nl ci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdmll d3MvdGVtcGxhdGVzL3ZpZXcvcHBhcy85LjRfcGx1cy9zcWwvdXBkYXRlLnNx bApAQCAtMCwwICsxLDgyIEBACit7IyA9PT09PT09PT09PT09PT09PT09PT09 PT09PT09IFVwZGF0ZSBWaWV3ID09PT09PT09PT09PT09PT09PT09PT09PT0g I30KK3slIGltcG9ydCAnbWFjcm9zL3NlY3VyaXR5Lm1hY3JvcycgYXMgU0VD TEFCTEUgJX0KK3slIGltcG9ydCAnbWFjcm9zL3NjaGVtYXMvcHJpdmlsZWdl Lm1hY3JvcycgYXMgUFJJVklMRUdFICV9Cit7JSBpZiBkYXRhICV9Cit7JSBz ZXQgdmlld19uYW1lID0gZGF0YS5uYW1lIGlmIGRhdGEubmFtZSBlbHNlIG9f ZGF0YS5uYW1lICV9Cit7JSBzZXQgdmlld19zY2hlbWEgPSBkYXRhLnNjaGVt YSBpZiBkYXRhLnNjaGVtYSBlbHNlIG9fZGF0YS5zY2hlbWEgJX0KK3slIHNl dCBkZWYgPSBkYXRhLmRlZmluaXRpb24ucnN0cmlwKCc7JykgaWYgZGF0YS5k ZWZpbml0aW9uICV9Cit7JSBpZiBkYXRhLm5hbWUgYW5kIGRhdGEubmFtZSAh PSBvX2RhdGEubmFtZSAlfQorQUxURVIgVklFVyB7eyBjb25ufHF0SWRlbnQo b19kYXRhLnNjaGVtYSwgb19kYXRhLm5hbWUpIH19CisgICAgUkVOQU1FIFRP IHt7IGNvbm58cXRJZGVudChkYXRhLm5hbWUpIH19OworeyUgZW5kaWYgJX0K K3slIGlmIGRhdGEuc2NoZW1hIGFuZCBkYXRhLnNjaGVtYSAhPSBvX2RhdGEu c2NoZW1hICV9CitBTFRFUiBWSUVXIHt7IGNvbm58cXRJZGVudChvX2RhdGEu c2NoZW1hLCB2aWV3X25hbWUgKSB9fQorICAgIFNFVCBTQ0hFTUEge3sgY29u bnxxdElkZW50KGRhdGEuc2NoZW1hKSB9fTsKK3slIGVuZGlmICV9Cit7JSBp ZiBkYXRhLm93bmVyIGFuZCBkYXRhLm93bmVyICE9IG9fZGF0YS5vd25lciAl fQorQUxURVIgVEFCTEUge3sgY29ubnxxdElkZW50KHZpZXdfc2NoZW1hLCB2 aWV3X25hbWUpIH19CisgICAgT1dORVIgVE8ge3sgY29ubnxxdElkZW50KGRh dGEub3duZXIpIH19OworeyUgZW5kaWYgJX0KK3slIGlmIGRlZiBhbmQgZGVm ICE9IG9fZGF0YS5kZWZpbml0aW9uLnJzdHJpcCgnOycpICV9CitDUkVBVEUg T1IgUkVQTEFDRSBWSUVXIHt7IGNvbm58cXRJZGVudCh2aWV3X3NjaGVtYSwg dmlld19uYW1lKSB9fQoreyUgaWYgKGRhdGEuY2hlY2tfb3B0aW9uIGFuZCBk YXRhLmNoZWNrX29wdGlvbiAhPSBvX2RhdGEuY2hlY2tfb3B0aW9uKQorICAg IG9yIChkYXRhLnNlY3VyaXR5X2JhcnJpZXIgYW5kIGRhdGEuc2VjdXJpdHlf YmFycmllciAhPSBvX2RhdGEuc2VjdXJpdHlfYmFycmllcikgJX0KKyAgICBX SVRIICh7JSBpZiAoZGF0YS5jaGVja19vcHRpb24gYW5kIGRhdGEuY2hlY2tf b3B0aW9uICE9ICdubycpICV9Y2hlY2tfb3B0aW9uPXt7IGRhdGEuY2hlY2tf b3B0aW9uIH19eyUgZW5kaWYgJX17eycsICcgaWYgZGF0YS5jaGVja19vcHRp b24gYW5kIGRhdGEuY2hlY2tfb3B0aW9uICE9ICdubycgYW5kIGRhdGEuc2Vj dXJpdHlfYmFycmllciB9fXslIGlmIGRhdGEuc2VjdXJpdHlfYmFycmllciAl fXNlY3VyaXR5X2JhcnJpZXI9e3sgZGF0YS5zZWN1cml0eV9iYXJyaWVyfGxv d2VyIH19eyUgZW5kaWYgJX0pCit7JSBlbmRpZiAlfQorICAgIEFTe3sgZGVm IH19OworeyUgZWxzZSAlfQoreyUgaWYgKGRhdGEuc2VjdXJpdHlfYmFycmll ciBpcyBkZWZpbmVkIGFuZCBkYXRhLnNlY3VyaXR5X2JhcnJpZXJ8bG93ZXIg IT0gIG9fZGF0YS5zZWN1cml0eV9iYXJyaWVyfGxvd2VyKSAlfQorQUxURVIg VklFVyB7eyBjb25ufHF0SWRlbnQodmlld19zY2hlbWEsIHZpZXdfbmFtZSkg fX0KKyAgICBTRVQgKHNlY3VyaXR5X2JhcnJpZXI9e3sgZGF0YS5zZWN1cml0 eV9iYXJyaWVyfGxvd2VyIH19KTsKK3slIGVuZGlmICV9Cit7JSBpZiAoZGF0 YS5jaGVja19vcHRpb24gYW5kIGRhdGEuY2hlY2tfb3B0aW9uICE9IG9fZGF0 YS5jaGVja19vcHRpb24gYW5kIGRhdGEuY2hlY2tfb3B0aW9uICE9ICdubycp ICV9CitBTFRFUiBWSUVXIHt7IGNvbm58cXRJZGVudCh2aWV3X3NjaGVtYSwg dmlld19uYW1lKSB9fQorICAgIFNFVCAoY2hlY2tfb3B0aW9uPXt7IGRhdGEu Y2hlY2tfb3B0aW9uIH19KTsKK3slIGVsaWYgKGRhdGEuY2hlY2tfb3B0aW9u IGFuZCBkYXRhLmNoZWNrX29wdGlvbiAhPSBvX2RhdGEuY2hlY2tfb3B0aW9u IGFuZCBkYXRhLmNoZWNrX29wdGlvbiA9PSAnbm8nKSAlfQorQUxURVIgVklF VyB7eyBjb25ufHF0SWRlbnQodmlld19zY2hlbWEsIHZpZXdfbmFtZSkgfX0g UkVTRVQgKGNoZWNrX29wdGlvbik7Cit7JSBlbmRpZiAlfQoreyUgZW5kaWYg JX0KKworeyUgaWYgZGF0YS5jb21tZW50IGFuZCBkYXRhLmNvbW1lbnQgIT0g b19kYXRhLmNvbW1lbnQgJX0KK0NPTU1FTlQgT04gVklFVyB7eyBjb25ufHF0 SWRlbnQodmlld19zY2hlbWEsIHZpZXdfbmFtZSkgfX0KKyAgICBJUyB7eyBk YXRhLmNvbW1lbnR8cXRMaXRlcmFsIH19OworeyUgZW5kaWYgJX0KK3sjIFRo ZSBTUUwgZ2VuZXJhdGVkIGJlbG93IHdpbGwgY2hhbmdlIHByaXZpbGVnZXMg I30KK3slIGlmIGRhdGEuZGF0YWNsICV9Cit7JSBpZiAnZGVsZXRlZCcgaW4g ZGF0YS5kYXRhY2wgJX0KK3slIGZvciBwcml2IGluIGRhdGEuZGF0YWNsLmRl bGV0ZWQgJX0KK3t7IFBSSVZJTEVHRS5VTlNFVEFMTChjb25uLCAnVEFCTEUn LCBwcml2LmdyYW50ZWUsIGRhdGEubmFtZSwgZGF0YS5zY2hlbWEpIH19Cit7 JSBlbmRmb3IgJX0KK3slIGVuZGlmICV9Cit7JSBpZiAnY2hhbmdlZCcgaW4g ZGF0YS5kYXRhY2wgJX0KK3slIGZvciBwcml2IGluIGRhdGEuZGF0YWNsLmNo YW5nZWQgJX0KK3t7IFBSSVZJTEVHRS5VTlNFVEFMTChjb25uLCAnVEFCTEUn LCBwcml2LmdyYW50ZWUsIGRhdGEubmFtZSwgZGF0YS5zY2hlbWEpIH19Cit7 eyBQUklWSUxFR0UuU0VUKGNvbm4sICdUQUJMRScsIHByaXYuZ3JhbnRlZSwg ZGF0YS5uYW1lLCBwcml2LndpdGhvdXRfZ3JhbnQsIHByaXYud2l0aF9ncmFu dCwgZGF0YS5zY2hlbWEpIH19Cit7JSBlbmRmb3IgJX0KK3slIGVuZGlmICV9 Cit7JSBpZiAnYWRkZWQnIGluIGRhdGEuZGF0YWNsICV9Cit7JSBmb3IgcHJp diBpbiBkYXRhLmRhdGFjbC5hZGRlZCAlfQore3sgUFJJVklMRUdFLlNFVChj b25uLCAnVEFCTEUnLCBwcml2LmdyYW50ZWUsIGRhdGEubmFtZSwgcHJpdi53 aXRob3V0X2dyYW50LCBwcml2LndpdGhfZ3JhbnQsIGRhdGEuc2NoZW1hKSB9 fQoreyUgZW5kZm9yICV9Cit7JSBlbmRpZiAlfQoreyUgZW5kaWYgJX0KK3sj IFRoZSBTUUwgZ2VuZXJhdGVkIGJlbG93IHdpbGwgY2hhbmdlIFNlY3VyaXR5 IExhYmVsICN9Cit7JSBpZiBkYXRhLnNlY2xhYmVscyBpcyBub3Qgbm9uZSBh bmQgZGF0YS5zZWNsYWJlbHN8bGVuZ3RoID4gMCAlfQoreyUgc2V0IHNlY2xh YmVscyA9IGRhdGEuc2VjbGFiZWxzICV9Cit7JSBpZiAnZGVsZXRlZCcgaW4g c2VjbGFiZWxzIGFuZCBzZWNsYWJlbHMuZGVsZXRlZHxsZW5ndGggPiAwICV9 Cit7JSBmb3IgciBpbiBzZWNsYWJlbHMuZGVsZXRlZCAlfQore3sgU0VDTEFC TEUuRFJPUChjb25uLCAnVklFVycsIGRhdGEubmFtZSwgci5wcm92aWRlcikg fX0KK3slIGVuZGZvciAlfQoreyUgZW5kaWYgJX0KK3slIGlmICdhZGRlZCcg aW4gc2VjbGFiZWxzIGFuZCBzZWNsYWJlbHMuYWRkZWR8bGVuZ3RoID4gMCAl fQoreyUgZm9yIHIgaW4gc2VjbGFiZWxzLmFkZGVkICV9Cit7eyBTRUNMQUJM RS5BUFBMWShjb25uLCAnVklFVycsIGRhdGEubmFtZSwgci5wcm92aWRlciwg ci5zZWN1cml0eV9sYWJlbCkgfX0KK3slIGVuZGZvciAlfQoreyUgZW5kaWYg JX0KK3slIGlmICdjaGFuZ2VkJyBpbiBzZWNsYWJlbHMgYW5kIHNlY2xhYmVs cy5jaGFuZ2VkfGxlbmd0aCA+IDAgJX0KK3slIGZvciByIGluIHNlY2xhYmVs cy5jaGFuZ2VkICV9Cit7eyBTRUNMQUJMRS5BUFBMWShjb25uLCAnVklFVycs IGRhdGEubmFtZSwgci5wcm92aWRlciwgci5zZWN1cml0eV9sYWJlbCkgfX0K K3slIGVuZGZvciAlfQoreyUgZW5kaWYgJX0KK3slIGVuZGlmICV9Cit7JSBl bmRpZiAlfQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2 ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdmlld3MvdGVt cGxhdGVzL3ZpZXcvcHBhcy85LjRfcGx1cy9zcWwvdmlld19pZC5zcWwgYi93 ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRh YmFzZXMvc2NoZW1hcy92aWV3cy90ZW1wbGF0ZXMvdmlldy9wcGFzLzkuNF9w bHVzL3NxbC92aWV3X2lkLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwLi5lZjI3NTk0Ci0tLSAvZGV2L251bGwKKysrIGIvd2ViL3Bn YWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2Vz L3NjaGVtYXMvdmlld3MvdGVtcGxhdGVzL3ZpZXcvcHBhcy85LjRfcGx1cy9z cWwvdmlld19pZC5zcWwKQEAgLTAsMCArMSw0IEBACit7IyA9PT09PSBCZWxv dyB3aWxsIHByb3ZpZGUgdmlldyBpZCBmb3IgbGFzdCBjcmVhdGVkIHZpZXcg PT09PT0gI30KK3slIGlmIGRhdGEgJX0KK1NFTEVDVCBjLm9pZCBGUk9NIHBn X2NsYXNzIGMgV0hFUkUgYy5yZWxuYW1lID0gJ3t7IGRhdGEubmFtZSB9fSc7 Cit7JSBlbmRpZiAlfQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vc3RhdGlj L2pzL2JhY2tmb3JtLnBnYWRtaW4uanMgYi93ZWIvcGdhZG1pbi9zdGF0aWMv anMvYmFja2Zvcm0ucGdhZG1pbi5qcwppbmRleCBhYjJmMmZiLi5lYzRhNmI0 IDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi9zdGF0aWMvanMvYmFja2Zvcm0u cGdhZG1pbi5qcworKysgYi93ZWIvcGdhZG1pbi9zdGF0aWMvanMvYmFja2Zv cm0ucGdhZG1pbi5qcwpAQCAtMTY2MCwxMyArMTY2MCwxOCBAQAogICAgICAg ICAgICAgICAoXy5pc1VuZGVmaW5lZChzLm1pbl92ZXJzaW9uKSA/IHRydWUg OgogICAgICAgICAgICAgICAgKHNlcnZlcl9pbmZvLnZlcnNpb24gPj0gcy5t aW5fdmVyc2lvbikpICYmCiAgICAgICAgICAgICAgIChfLmlzVW5kZWZpbmVk KHMubWF4X3ZlcnNpb24pID8gdHJ1ZSA6Ci0gICAgICAgICAgICAgICAoc2Vy dmVyX2luZm8udmVyc2lvbiA8PSBzLm1heF92ZXJzaW9uKSkpKTsKKyAgICAg ICAgICAgICAgIChzZXJ2ZXJfaW5mby52ZXJzaW9uIDw9IHMubWF4X3ZlcnNp b24pKSkpLAorICAgICAgICAgICAgICB2aXNpYmxlID0gdHJ1ZTsKKworICAg ICAgICAgIGlmIChzLm1vZGUgJiYgXy5pc09iamVjdChzLm1vZGUpKQorICAg ICAgICAgICAgdmlzaWJsZSA9IChfLmluZGV4T2Yocy5tb2RlLCBtb2RlKSA+ IC0xKTsKKyAgICAgICAgICBpZiAodmlzaWJsZSkKKyAgICAgICAgICAgIHZp c2libGUgPSBldmFsQVNGdW5jKHMudmlzaWJsZSk7CisKICAgICAgICAgICBn cm91cEluZm9bcy5pZF0gPSB7CiAgICAgICAgICAgICBsYWJlbDogcy5sYWJl bCB8fCBzLmlkLAogICAgICAgICAgICAgdmVyc2lvbl9jb21wYXRpYmxlOiB2 ZXJfaW5fbGltaXQsCi0gICAgICAgICAgICB2aXNpYmxlOiAhcy5tb2RlIHx8 ICgKLSAgICAgICAgICAgICAgcyAmJiBzLm1vZGUgJiYgXy5pc09iamVjdChz Lm1vZGUpICYmCi0gICAgICAgICAgICAgICAgXy5pbmRleE9mKHMubW9kZSwg bW9kZSkgIT0gLTEpICYmIGV2YWxBU0Z1bmMocy52aXNpYmxlKSB8fCB0cnVl CisgICAgICAgICAgICB2aXNpYmxlOiB2aXNpYmxlCiAgICAgICAgICAgfTsK ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTE3NjMsOSArMTc2 OCwxMyBAQAogICAgICAgLy8gQ3JlYXRlIGFuIGFycmF5IGZyb20gdGhlIGRp Y3Rpb25hcnkgd2l0aCBwcm9wZXIgcmVxdWlyZWQKICAgICAgIC8vIHN0cnVj dHVyZS4KICAgICAgIF8uZWFjaChncm91cHMsIGZ1bmN0aW9uKHZhbCwga2V5 KSB7Ci0gICAgICAgIGZpZWxkcy5wdXNoKF8uZXh0ZW5kKHsKLSAgICAgICAg ICBsYWJlbDoga2V5LCBmaWVsZHM6IHZhbAotICAgICAgICB9LCAoZ3JvdXBJ bmZvW2tleV0gfHwge3ZlcnNpb25fY29tcGF0aWJsZTogdHJ1ZSwgdmlzaWJs ZTogdHJ1ZX0pKSk7CisgICAgICAgIGZpZWxkcy5wdXNoKAorICAgICAgICAg IF8uZXh0ZW5kKAorICAgICAgICAgICAgXy5kZWZhdWx0cygKKyAgICAgICAg ICAgICAgZ3JvdXBJbmZvW2tleV0gfHwge2xhYmVsOiBrZXl9LAorICAgICAg ICAgICAgICB7dmVyc2lvbl9jb21wYXRpYmxlOiB0cnVlLCB2aXNpYmxlOiB0 cnVlfQorICAgICAgICAgICAgKSwge2ZpZWxkczogdmFsfSkKKyAgICAgICAg ICApOwogICAgICAgfSk7CiAgICAgfQogCg== --047d7ba9742229e9c40531a098c9 Content-Type: text/plain Content-Disposition: inline Content-Transfer-Encoding: 8bit MIME-Version: 1.0 -- Sent via pgadmin-hackers mailing list (pgadmin-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgadmin-hackers --047d7ba9742229e9c40531a098c9--