[Indic-dev] Latex Workshop at Pune in June 2003

S. venkataraman indic-dev@tug.org
Tue, 17 Dec 2002 10:27:04 +0530


This is a multi-part message in MIME format.

------_=_NextPart_001_01C2A588.BE3B5BF8
Content-Type: text/plain;
	charset="us-ascii"
Content-Transfer-Encoding: quoted-printable

Hi,
Regarding graphics packages, texcad is a nice, easy to use package.
This is relevant only for windows users perhaps. Linux users are=20
probably happy with xfig.
Texcad version 3.2 has problems in machines with a fast processor. =20
Pentium 1 seems OK, it has problems in faster machines.  This is
basically=20
due to a bug in turbo pascal which is well known.  Since I desperately
needed
to use it on a pentium II machine, I looked around for some solutions.
I found that, the source=20
code supplied with texcad32 does not contain a file called timers.tpu. I
then found that=20
Georg Horne has released his earlier version texcad3.0 in the public
domain. After
 changing one=20
line pertaining to graphics settings, I could compile version 3.0=20
using the open source free=20
pascal compiler(go32v2 dos version available from www.freepascal.org)
and it runs fairly satisfactorily
 ( It compiles even without the=20
change, but the display looks ugly.) It runs in windows 98me, pentium
900mhz machine I have at home.(  It=20
did hang once, but only once. Still it is better to save often. )
  It doesn't work very well in win2k. If anyone else is interested,
 they can download=20
version 3.0(not version3.2) from
 koblenz-net.de/~horn/export/texcad.zip. =20
They can replace the tc_glob.pas with the changed version=20
I am attaching with this message, compile and use the program.  The
package comes with documentation in=20
tex.  You can read that.  I tried to compile and run it in linux but I
could not because I am having problems=20
installing svgalib which is needed for compiling the program.
Unfortunately, I am still a novice in linux
and I have not found the time to do the necessary research to get things
working satisfactorily.  Perhaps,
some linux expert in the group can try and try to compile the program on
linux.(I have problems compiling
with win32 version of the compiler either.)
Venkataraman
 <<tc_glob.pas>>=20

> -----Original Message-----
> From:	manjusha joshi [SMTP:manjushasj@math.unipune.ernet.in]
> Sent:	Monday, December 16, 2002 12:13 PM
> To:	indic-dev@tug.org
> Cc:	bhaskara_p@vsnl.com
> Subject:	[Indic-dev] Latex Workshop at Pune in June 2003
>=20
>=20
> In June, 2003, we are arranging latex workshop at Pune, in
> Bhaskaracharya Pratishthana, http://education.vsnl.in/bp.
>=20
> It will be of 6 days from 9th- 14th June, 2003.
>=20
> It is mainly for people in educational field for e.g. research
>  students, Professors from dept.s of universities, teachers form
> colleges,
> etc.
>=20
> Most of the users are windows user in Pune  and around so in the
> workshop
> we will have session
> on installation of latex. First 2 days we will have few basic things
> like
> installation, problems in that, how to get mirror print, how to obtain
> 2
> pages output on one page etc.
>=20
> Days 3-4 will have graphics part, how to include graphics in tex file,
> how
> to draw functions? geometrical fig.s and general drawing,
> Prof. E. Krishnan (Tvm) will take care of this part.
>=20
> Days 5-6  not yet fully decided. But may be POVRay can be done, if
> Dr. Kaveh Bazaragan manage to come.
> So I think it will be good idea if we, Indic-dev list can suggest
> topics,
> new things in latex, new style files which will be helpful for these
> people. And also new ideas to make this workshop successful.
>=20
> total 50 participants 20 local and 30 outstations
> Also Cvr is agreed to come for the workshop, he will take more
> sessions
> in the workshop.
>=20
> So, how is that if we, Indic-dev list, meet before/after workshop in
> Pune?
> Pune is center place in India. And just 3 and half hr.s Bus journey
> from
> Mumbai(Bommbay).
>=20
>=20
> Please feel free to ask your queries and also suggestions to the
> workshop.
>=20
> Yours sincerely,
>=20
> Manjusha Joshi
> =20
>=20
>  --=20
>=20
>=20
> _______________________________________________
> Indic-dev mailing list

------_=_NextPart_001_01C2A588.BE3B5BF8
Content-Type: application/octet-stream;
	name="tc_glob.pas"
Content-Transfer-Encoding: base64
Content-Description: tc_glob.pas
Content-Disposition: attachment;
	filename="tc_glob.pas"

dW5pdCB0Y19nbG9iOw0Ke0Rla2xhcmllcnQgZGllIHZvbiBUZVhjYWQgYmVudXR6dGVuIGdsb2Jh
bGVuIFZhcmlhYmxlbiBzb3dpZSBkaWUgUHJvemVkdXJlbg0KIGZ1ZXIgZGFzIFplaWNobmVuIGRl
ciBPYmpla3RlIHVuZCBmdWVyIGRpZSBCZW51dHplcm9iZXJmbGFlY2hlLn0NCg0KaW50ZXJmYWNl
DQoNCnVzZXMgZG9zLGNydCxncmFwaCxtb3VzZTsNCg0KdHlwZSBvcHRpb25zX3R5cGU9cmVjb3Jk
DQogICAgICAgZHJpdmVyX3BhdGgsICAgICAge1BmYWQgenVtIExhZGVuIGRlcyBHcmFwaGlrdHJl
aWJlcnN9DQogICAgICAgdGV4X3BhdGgsICAgICAgICAge1BmYWQgenVtIFNwZWljaGVybiB1bmQg
TGFkZW4gZGVyIExhVGVYLUNvZGVzfQ0KICAgICAgIHRleF9zdWZmLCAgICAgICAgIHtTdWZmaXgg
ZnVlciBUZVgtRGF0ZWllbn0NCiAgICAgICBtYWNfcGF0aCwgICAgICAgICB7UGZhZCB6dW0gU3Bl
aWNoZXJuIHVuZCBMYWRlbiBkZXIgTWFjcm9zfQ0KICAgICAgIG1hY19zdWZmOnN0cmluZ1s4MF07
IHtTdWZmaXggZnVlciBNYWNyby1EYXRlaWVufQ0KICAgICAgIG1hdHRlczpib29sZWFuOyAgIHtM
aW5pZW4gbWl0IGJlbC4gU3RlaWd1bmc/fQ0KICAgICAgIHNuYXBwaW5nOmJvb2xlYW47IHtTY2hu
YXBwLUZ1bmt0aW9uIGFuIG9kZXIgYXVzfQ0KICAgICAgIHNuYXBfYXNwOmludGVnZXI7IHtSYXN0
ZXJicmVpdGUgZnVlciBTY2huYXBwLUZ1bmt0aW9ufQ0KICAgICAgIHpvb21fZmFjOnJlYWw7ICAg
IHtWZXJncm9l4WVydW5nc2Zha3Rvcn0NCiAgICAgICB1bml0bGVuZ3RoLCAgICAgICB7TGFUZVgt
RWluaGVpdHNsYWVuZ2UgZGVyIEJpbGRlcn0NCiAgICAgICBsaW5ld2lkdGg6c3RyaW5nWzIwXTsg
e0xpbmllbmJyZWl0ZX0NCiAgICAgZW5kOw0KDQp2YXIgb3B0Om9wdGlvbnNfdHlwZTsNCiAgICBv
cHRfZmlsZTpmaWxlIG9mIG9wdGlvbnNfdHlwZTsNCiAgICBvcHRfbmFtZSxob21lZGlyOnBhdGhz
dHI7DQoNCnR5cGUgb2JqX2FydF90eXBlPSh0eHQsYm94LGxpbix2ZWMsY2lyYyxvdmFsLGF1eCxi
ZXppZXIpOw0KICAgICBwdHJfb2JqX3R5cGU9Xm9ial90eXBlOw0KICAgICBvYmpfdHlwZT1yZWNv
cmQNCiAgICAgICAgeF9wb3MsIHlfcG9zLCB3aWR0aCwgaGVpZ2h0OnJlYWw7DQogICAgICAgIG5l
eHQ6cHRyX29ial90eXBlOw0KICAgICAgICBwaWNrZWQ6Ym9vbGVhbjsNCiAgICAgICAgY2FzZSBh
cnQ6b2JqX2FydF90eXBlIG9mDQogICAgICAgICAgIHR4dCxib3g6KGluaGFsdDpec3RyaW5nOyBh
ZGp1c3Q6c3RyaW5nWzJdOw0KICAgICAgICAgICAgICAgICAgICBkYXNoLHNvbGlkOmJvb2xlYW47
IGRhc2hfZGltZW46cmVhbDspOw0KICAgICAgICAgICBsaW4sdmVjOihlbTpib29sZWFuOyBoX3Ns
b3BlLCB2X3Nsb3BlOmludGVnZXI7IGxlbjpyZWFsOyk7DQogICAgICAgICAgIGNpcmM6KHJhZDpy
ZWFsOyBmaWxsOmJvb2xlYW47KTsNCiAgICAgICAgICAgb3ZhbDoobHV4LGx1eTpyZWFsOyBwYXJ0
OnN0cmluZ1syXTspOw0KICAgICAgICAgICBiZXppZXI6KHh4X3Bvcyx5eV9wb3MsbnVtOnJlYWw7
KTsNCiAgICAgZW5kOyB7cmVjb3JkfQ0KDQp2YXIgcm9vdCxjdXJfb2JqOnB0cl9vYmpfdHlwZTsN
Cg0KdmFyIG9sZF9leGl0X3Byb2MsaGVhcF9ib3R0b206cG9pbnRlcjsNCiAgICBncmFwaF9kcml2
ZXIsZ3JhcGhfbW9kZSwge0dyYXBoaWttb2R1cyB1bmQgLXRyZWliZXJ9DQogICAgbWF4X3gsbWF4
X3ksIHttYXhpbWFsZSBCaWxkc2NoaXJtLUtvb3JkaW5hdGVufQ0KICAgIGNvbG9yLG1heF9jb2xv
ciwge25vcm1hbGUsIG1heGltYWxlIFplaWNoZW5mYXJiZX0NCiAgICBtX3gsbV95LCB7bWF4aW1h
bGVzIHggdW5kIHkgaW0gWmVpY2hlbmZlbnN0ZXJ9DQogICAgaG9yX3NwbGl0dCx2ZXJfc3BsaXR0
LCB7QXVmdGVpbHVuZyBkZXMgQmlsZHNjaGlybXN9DQogICAgY3Vyc194LGN1cnNfeTppbnRlZ2Vy
OyB7Q3Vyc29ycG9zaXRpb24gaW4gQmlsZHNjaGlybS1Lb29yZC59DQogICAgaF9tYWcsdl9tYWcs
YXNwLCB7RmFrdG9yZW4gdW5kIEFzcGVjdC1yYXRpbyB1bQ0KICAgICAgICAgICAgICAgICAgICAg
IFdlbHQtIGluIEJpbGRzY2hpcm1rb29yZGluYXRlbiB1bXp1cmVjaG5lbn0NCiAgICB4MCx5MCwg
e2xpbmtlIHVudGVyZSBFY2tlIGRlcyBhbmdlemVpZ3RlbiBCaWxkYXVzc2Nobml0dGVzfQ0KICAg
IHd4LHd5LCB7Q3Vyc29ycG9zaXRpb24gaW4gV2VsdGtvb3JkaW5hdGVufQ0KICAgIG1fd3gsbV93
eTpyZWFsOyB7bWF4aW1hbGVzIHggdW5kIHkgaW4gV2VsdGtvb3JkaW5hdGVufQ0KICAgIHNhdmVk
OmJvb2xlYW47IHtCaWxkIGdlc3BlaWNoZXJ0P30NCmNvbnN0IG1heF9mdW5jPTExOw0KdmFyIGZ1
bms6YXJyYXlbMC4ubWF4X2Z1bmNdb2Ygc3RyaW5nWzIwXTsNCiAgICBtZW51X3BvczphcnJheVsw
Li5tYXhfZnVuY11vZiBpbnRlZ2VyOw0KICAgIG1lbnVfY3Vycyx2ZXJfY3Vycyxob3JfY3Vyczpw
b2ludGVyOw0KICAgIG1zZ19saW5lOmludGVnZXI7DQoNCnByb2NlZHVyZSBsb2FkX29wdCh2YXIg
bzpvcHRpb25zX3R5cGU7IHZhciBzdWNjOmJvb2xlYW4pOw0Ke0yEZHQgZGllIFBhcmFtZXRlcmRh
dGVpfQ0KDQpwcm9jZWR1cmUgcGljdF9wb3J0Ow0Ke1NldHp0IGRhcyBaZWljaGVuZmVuc3Rlcn0N
Cg0KcHJvY2VkdXJlIHJ1bGVyczsNCntaZWljaG5ldCBkaWUgTGluZWFsZSBpbSBaZWljaGVuZmVu
c3Rlcn0NCg0KcHJvY2VkdXJlIHB1dF9jdXJzb3I7DQp7WmVpY2huZXQgZGVuIEN1cnNvciBhbiBk
aWUgUG9zaXRpb24gKGN1cnNfeCxjdXJzX3kpfQ0KDQpwcm9jZWR1cmUgdHJhbnMoeCx5OiByZWFs
OyB2YXIgc3gsc3k6IGludGVnZXIpOw0Ke1JlY2huZXQgZGllIFdlbHRrb29yZGluYXRlbiAoeCx5
KSBpbiBCaWxkc2NoaXJta29vcmRpbmF0ZW4gKHN4LHN5KSB1bX0NCg0KcHJvY2VkdXJlIGRyYXdf
dGV4dCh0ZXh0X3B0cjpwdHJfb2JqX3R5cGUpOw0Ke1plaWNobmV0IGVpbmUgVGV4dG1hcmtpZXJ1
bmd9DQoNCnByb2NlZHVyZSBkcmF3X2JveF90ZXh0KGJveF9wdHI6cHRyX29ial90eXBlKTsNCnta
ZWljaG5ldCBlaW5lIEJveFRleHRtYXJraWVydW5nIGluIGVpbmUgQm94fQ0KDQpwcm9jZWR1cmUg
ZHJhd19ib3goYm94X3B0cjpwdHJfb2JqX3R5cGUpOw0Ke1plaWNobmV0IGVpbmUgKGdlc3RyaWNo
ZWx0ZSkgQm94fQ0KDQpwcm9jZWR1cmUgZHJhd19saW5lKGxpbmVfcHRyOnB0cl9vYmpfdHlwZSk7
DQp7WmVpY2huZXQgZWluZSBMaW5pZSBvZGVyIGVpbmVuIFBmZWlsfQ0KDQpwcm9jZWR1cmUgZHJh
d19jaXJjKGNpcmNfcHRyOnB0cl9vYmpfdHlwZSk7DQp7WmVpY2huZXQgZWluZW4gKGdlZiJ1bGx0
ZW4pIEtyZWlzfQ0KDQpwcm9jZWR1cmUgZHJhd19vdmFsKG92YWxfcHRyOnB0cl9vYmpfdHlwZSk7
DQp7WmVpY2huZXQgZWluKGVuIFRlaWwgZWluZXMpIE92YWwocyl9DQoNCnByb2NlZHVyZSBkcmF3
X2JlemllcihwdHI6cHRyX29ial90eXBlOyBmYXJiZTppbnRlZ2VyKTsNCntaZWljaG5ldCBlaW5l
IEJlemllcmt1cnZlIGluIGRlciBGYXJiZSBmYXJiZX0NCg0KcHJvY2VkdXJlIHJlZHJhdzsNCntC
YXV0IGRhcyBCaWxkIGltIFplaWNoZW5mZW5zdGVyIG5ldSBhdWZ9DQoNCnByb2NlZHVyZSB0b2dn
bGVfc25hcDsNCntTY2hhbHRldCBTY2huYXBwZnVua3Rpb24gZWluIHVuZCBhdXN9DQoNCmZ1bmN0
aW9uIG1vdXNlX3N0YXQ6aW50ZWdlcjsNCns8MTogTW91c2VzdGF0dXMsIDA9a2VpbmUsIC0xPWxp
bmtlLCAtMj1yZWNodGUgVGFzdGUgbG9zZ2VsYXNzZW4sDQogICAgIChtX3hwb3MsbV95cG9zKT1N
b3VzZXBvc2l0aW9uIGluIFBpeGVsLA0KICAgICAod3gsd3kpPU1vdXNlcG9zaXRpb24gaW4gV2Vs
dGtvb3JkaW5hdGVuOw0KID4wOiBIaS1CeXRlPTAsIExvLUJ5dGU9ZWluZ2VnZWJlbmVzIFplaWNo
ZW59DQoNCnByb2NlZHVyZSBnZXRfcG9pbnQodmFyIHN4LHN5OmludGVnZXI7IHZhciB4LHk6cmVh
bDsgdmFyIGVuZGU6Ym9vbGVhbik7DQp7TGllZmVydCBkaWUgS29vcmRpbmF0ZW4gZWluZXMgZ2V3
YWVobHRlbiBQdW5rdGVzIGluIEJpbGRzY2hpcm0tDQogdW5kIGluIFdlbHRrb29yZGluYXRlbi59
DQoNCnByb2NlZHVyZSBnZXRfYXJlYSh2YXIgc3gxLHN5MSxzeDIsc3kyOmludGVnZXI7IHZhciBl
bmRlOmJvb2xlYW4pOw0Ke0xpZWZlcnQgZGllIFBpeGVsLUtvb3JkaW5hdGVuIGVpbmVzIGFuenVn
ZWJlbmRlbiBGZW5zdGVycy59DQoNCnByb2NlZHVyZSBtZXNzYWdlKG1zZzpzdHJpbmcpOw0Ke0dp
YnQgZWluZSBOYWNocmljaHQgaW0gRmVuc3RlciByZWNodHMgb2JlbiBhdXMsIGJ6dy4gbG9lc2No
dCBkYXMgRmVuc3Rlci59DQoNCmZ1bmN0aW9uIHllc19ubyh0MSx0MjpjaGFyKTpib29sZWFuOw0K
e0xpZWZlcnQgVFJVRSwgd2VubiBUYXN0ZSBUMSBvZGVyIGxpbmtlciBNb3VzZWtub3BmIGdlZHJ1
ZWNrdCwNCiBsaWVmZXJ0IEZBTFNFLCB3ZW5uIFRhc3RlIFQyIG9kZXIgcmVjaHRlciBNb3VzZWtu
b3BmIGdlZHJ1ZWNrdC59DQoNCnByb2NlZHVyZSBnZXRfc3RyKHk6aW50ZWdlcjsgdmFyIHN0OnN0
cmluZzsgdmFyIGVuZGU6Ym9vbGVhbik7DQp7R2lidCBkZW4gU3RyaW5nIFNUIGFiIFBvc2l0aW9u
ICgwLFkpIHp1bSBFZGl0aWVyZW4gYXVzLn0NCg0KcHJvY2VkdXJlIG1lbnUoYW56OmludGVnZXI7
IHZhciB3YWhsOmludGVnZXIpOw0Ke0dpYnQgZWluIE1lbnUgaW0gRmVuc3RlciByZWNodHMgdW50
ZW4gYXVzfQ0KDQppbXBsZW1lbnRhdGlvbg0KDQp7JGYrfQ0KcHJvY2VkdXJlIGV4Ow0Ke1NldHp0
IGRlbiBaZWlnZXIgJ2V4aXRwcm9jJyB6dXJ1ZWNrIHVuZCBiZWVuZGV0IGRhcyBHcmFwaGlrcGFr
ZXR9DQpiZWdpbg0KICAgZXhpdHByb2M6PW9sZF9leGl0X3Byb2M7IGNsb3NlZ3JhcGg7DQplbmQ7
IHtleH0NCnskZi19DQoNCnByb2NlZHVyZSBpbml0Ow0Ke0luaXRpYWxpc2llcnQgZGFzIEdyYXBo
aWtwYWtldCB1bmQgZGllIGdsb2JhbGVuIFZhcmlhYmxlbn0NCnZhciBkcml2ZXIsbW9kZSxlcnJf
Y29kZSxpLGg6aW50ZWdlcjsNCiAgICB4X2FzcCx5X2FzcDp3b3JkOw0KICAgIHZhciBvcHRfbG9h
ZGVkOmJvb2xlYW47DQogICAgaHN0cjpzdHJpbmdbMjBdOw0KYmVnaW4NCiAgIGhvbWVkaXI6PXBh
cmFtc3RyKDApOyBpOj1sZW5ndGgoaG9tZWRpcik7DQogICB3aGlsZSBob21lZGlyW2ldPD4nXCcg
ZG8gZGVjKGkpOyBob21lZGlyWzBdOj1jaHIoaSk7DQogICBvcHRfbmFtZTo9ZmV4cGFuZCgndGV4
Y2FkLm9wdCcpOyBsb2FkX29wdChvcHQsb3B0X2xvYWRlZCk7DQogICBpZiBub3Qgb3B0X2xvYWRl
ZCB0aGVuIGJlZ2luDQogICAgICBvcHRfbmFtZTo9aG9tZWRpcisndGV4Y2FkLm9wdCc7IGxvYWRf
b3B0KG9wdCxvcHRfbG9hZGVkKTsNCiAgICAgIGlmIG5vdCBvcHRfbG9hZGVkIHRoZW4gd2l0aCBv
cHQgZG8gYmVnaW4NCiAgICAgICAgIGRyaXZlcl9wYXRoOj0nJzsgdGV4X3BhdGg6PScnOyB0ZXhf
c3VmZjo9Jy5waWMnOw0KICAgICAgICAgbWFjX3BhdGg6PScnOyBtYWNfc3VmZjo9Jy5tYWMnOyB1
bml0bGVuZ3RoOj0nMW1tJzsNCiAgICAgICAgIG1hdHRlczo9ZmFsc2U7IGxpbmV3aWR0aDo9JzAu
NHB0JzsNCiAgICAgICAgIHNuYXBwaW5nOj1mYWxzZTsgc25hcF9hc3A6PTE7IHpvb21fZmFjOj0x
Ow0KICAgICAgZW5kOw0KICAgZW5kOw0KICAgcm9vdDo9bmlsOyBjdXJfb2JqOj1uaWw7DQogICBv
bGRfZXhpdF9wcm9jOj1leGl0cHJvYzsgZXhpdHByb2M6PWFkZHIoZXgpOw0KICAgZHJpdmVyOj1E
OGJpdDsgbW9kZTo9bTY0MHg0ODA7DQogICBpZiBwYXJhbWNvdW50PjAgdGhlbiBiZWdpbg0KICAg
ICAgZm9yIGk6PTEgdG8gcGFyYW1jb3VudCBkbyBiZWdpbg0KICAgICAgICAgaHN0cjo9cGFyYW1z
dHIoaSk7DQogICAgICAgICBpZiBjb3B5KGhzdHIsMSwyKT0nLWcnIHRoZW4gYmVnaW4NCiAgICAg
ICAgICAgIGRlbGV0ZShoc3RyLDEsMik7DQogICAgICAgICAgICBoOj1wb3MoJywnLGhzdHIpOw0K
ICAgICAgICAgICAgaWYgaD0wIHRoZW4gYmVnaW4NCiAgICAgICAgICAgICAgIHZhbChoc3RyLGRy
aXZlcixlcnJfY29kZSk7DQogICAgICAgICAgICAgICBpZiBlcnJfY29kZTw+MCB0aGVuIGRyaXZl
cjo9ZGV0ZWN0Ow0KICAgICAgICAgICAgICAgbW9kZTo9MDsNCiAgICAgICAgICAgIGVuZCBlbHNl
IGJlZ2luDQogICAgICAgICAgICAgICB2YWwoY29weShoc3RyLDEsaC0xKSxkcml2ZXIsZXJyX2Nv
ZGUpOw0KICAgICAgICAgICAgICAgaWYgZXJyX2NvZGU8PjAgdGhlbiBkcml2ZXI6PWRldGVjdA0K
ICAgICAgICAgICAgICAgZWxzZSBiZWdpbg0KICAgICAgICAgICAgICAgICAgdmFsKGNvcHkoaHN0
cixoKzEsMSksbW9kZSxlcnJfY29kZSk7DQogICAgICAgICAgICAgICAgICBpZiBlcnJfY29kZTw+
MCB0aGVuIG1vZGU6PTA7DQogICAgICAgICAgICAgICBlbmQ7DQogICAgICAgICAgICBlbmQ7DQog
ICAgICAgICBlbmQ7DQogICAgICBlbmQ7DQogICBlbmQ7DQogICByZXBlYXQNCiAgICAgIGdyYXBo
X2RyaXZlcjo9ZHJpdmVyOyBncmFwaF9tb2RlOj1tb2RlOw0KICAgICAgaW5pdGdyYXBoKGdyYXBo
X2RyaXZlcixncmFwaF9tb2RlLG9wdC5kcml2ZXJfcGF0aCk7DQogICAgICBlcnJfY29kZTo9Z3Jh
cGhyZXN1bHQ7DQogICAgICBpZiBlcnJfY29kZTw+MCB0aGVuIGJlZ2luDQogICAgICAgIHdyaXRl
bG4oJ0dyYXBoaWNzLUVycm9yICcsZXJyX2NvZGUsJzogJyxncmFwaGVycm9ybXNnKGVycl9jb2Rl
KSk7DQogICAgICAgIGlmIGVycl9jb2RlPWdyZmlsZW5vdGZvdW5kIHRoZW4gYmVnaW4NCiAgICAg
ICAgICAgd3JpdGUoJ0VudGVyIHBhdGggb3IgcHJlc3MgUkVUVVJOIHRvIGV4aXQ6ICcpOw0KICAg
ICAgICAgICByZWFkbG4ob3B0LmRyaXZlcl9wYXRoKTsNCiAgICAgICAgICAgaWYgb3B0LmRyaXZl
cl9wYXRoPScnIHRoZW4gaGFsdCgxKTsNCiAgICAgICAgZW5kIGVsc2UgaGFsdCgxKTsNCiAgICAg
IGVuZDsNCiAgIHVudGlsIGVycl9jb2RlPWdyb2s7DQogICBtYXhfeDo9Z2V0bWF4eDsgbWF4X3k6
PWdldG1heHk7IGNvbG9yOj1nZXRjb2xvcjsgbWF4X2NvbG9yOj1nZXRtYXhjb2xvcjsNCiAgIGhv
cl9zcGxpdHQ6PXJvdW5kKChtYXhfeCsxKSowLjc1KSsxOyB2ZXJfc3BsaXR0Oj1yb3VuZCgobWF4
X3krMSkqMC40KSsxOw0KICAgZ2V0YXNwZWN0cmF0aW8oeF9hc3AseV9hc3ApOyBhc3A6PXhfYXNw
L3lfYXNwOw0KICAgaF9tYWc6PW9wdC56b29tX2ZhYyozOyB2X21hZzo9aF9tYWcqYXNwOyB4MDo9
MDsgeTA6PTA7DQogICBtX3g6PWhvcl9zcGxpdHQtMzsgbV95Oj1tYXhfeS0yOyBtX3d4Oj1tX3gv
aF9tYWc7IG1fd3k6PW1feS92X21hZzsNCiAgIGN1cnNfeDo9MDsgY3Vyc195Oj1tYXhfeS0yOyB3
eDo9MDsgd3k6PTA7IG1zZ19saW5lOj0wOw0KICAgaDo9KG1heF95LXZlcl9zcGxpdHQpIGRpdiAo
bWF4X2Z1bmMrMSk7IG1lbnVfcG9zWzBdOj0wOw0KICAgZm9yIGk6PTEgdG8gbWF4X2Z1bmMgZG8g
bWVudV9wb3NbaV06PW1lbnVfcG9zW2ktMV0raDsNCiAgIHNhdmVkOj10cnVlOw0KICAgcmVjdGFu
Z2xlKDAsMCxtYXhfeCxtYXhfeSk7DQogICBzZXRsaW5lc3R5bGUoc29saWRsbiwwLHRoaWNrd2lk
dGgpOw0KICAgbGluZShob3Jfc3BsaXR0LDAsaG9yX3NwbGl0dCxtYXhfeSk7DQogICBsaW5lKGhv
cl9zcGxpdHQsdmVyX3NwbGl0dCxtYXhfeCx2ZXJfc3BsaXR0KTsNCiAgIHNldGxpbmVzdHlsZShz
b2xpZGxuLDAsbm9ybXdpZHRoKTsNCiAgIGk6PWltYWdlc2l6ZSgwLDAsbV94LDApOw0KICAgZ2V0
bWVtKGhvcl9jdXJzLGkpOyBnZXRpbWFnZSgwLDAsbV94LDAsaG9yX2N1cnNeKTsNCiAgIGk6PWlt
YWdlc2l6ZSgwLDAsMCxtX3kpOw0KICAgZ2V0bWVtKHZlcl9jdXJzLGkpOyBnZXRpbWFnZSgwLDAs
MCxtX3ksdmVyX2N1cnNeKTsNCiAgIGJhcihob3Jfc3BsaXR0KzEwLDIsbWF4X3gtMTAsMTApOw0K
ICAgaTo9aW1hZ2VzaXplKGhvcl9zcGxpdHQrMTAsMixtYXhfeC0xMCwxMCk7IGdldG1lbShtZW51
X2N1cnMsaSk7DQogICBnZXRpbWFnZShob3Jfc3BsaXR0KzEwLDIsbWF4X3gtMTAsMTAsbWVudV9j
dXJzXik7DQogICBwdXRpbWFnZShob3Jfc3BsaXR0KzEwLDIsbWVudV9jdXJzXix4b3JwdXQpOw0K
ICAgcnVsZXJzOw0KICAgbWFyayhoZWFwX2JvdHRvbSk7DQplbmQ7IHtpbml0fQ0KDQpwcm9jZWR1
cmUgbG9hZF9vcHQodmFyIG86b3B0aW9uc190eXBlOyB2YXIgc3VjYzpib29sZWFuKTsNCmJlZ2lu
DQogICBzdWNjOj1mYWxzZTsNCiAgIGFzc2lnbihvcHRfZmlsZSxvcHRfbmFtZSk7DQogICB7JEkt
fSByZXNldChvcHRfZmlsZSk7DQogICBpZiBpb3Jlc3VsdD0wIHRoZW4gYmVnaW4NCiAgICAgIHJl
YWQob3B0X2ZpbGUsbyk7DQogICAgICBzdWNjOj1pb3Jlc3VsdD0wOw0KICAgICAgeyRJK30gY2xv
c2Uob3B0X2ZpbGUpOw0KICAgZW5kOw0KZW5kOyB7bG9hZF9vcHR9DQoNCnByb2NlZHVyZSBwaWN0
X3BvcnQ7DQpiZWdpbg0KICAgc2V0dmlld3BvcnQoMSwxLGhvcl9zcGxpdHQtMixtYXhfeS0xLGNs
aXBvbik7DQogICBzZXRfbW91c2Vfd2luZG93KDAsMCxtX3gsbV95KTsNCiAgIHNldF9tb3VzZV9w
b3MoY3Vyc194LGN1cnNfeSk7DQogICBzZXRfbW91c2Vfc3BlZWQoMiwzKTsNCmVuZDsge3BpY3Rf
cG9ydH0NCg0KcHJvY2VkdXJlIHJ1bGVyczsNCnZhciBpOmludGVnZXI7DQogICAgajpzdHJpbmdb
NV07DQogICAgcjpyZWFsOw0KYmVnaW4NCiAgIHBpY3RfcG9ydDsgY2xlYXJ2aWV3cG9ydDsNCiAg
IHNldHRleHRqdXN0aWZ5KGNlbnRlcnRleHQsdG9wdGV4dCk7DQogICBpZiBmcmFjKHgwKT0wIHRo
ZW4gaTo9dHJ1bmMoeDApDQogICAgICBlbHNlIGk6PXRydW5jKHgwKSsxOw0KICAgcjo9aF9tYWcq
KGkteDApOw0KICAgcmVwZWF0IHtYLUxpbmVhbH0NCiAgICAgIGlmIGkgbW9kIDU9MCB0aGVuIGJl
Z2luDQogICAgICAgICBpZiBpIG1vZCAxMD0wIHRoZW4gYmVnaW4NCiAgICAgICAgICAgIHN0cihp
IGRpdiAxMCxqKTsgb3V0dGV4dHh5KHJvdW5kKHIpLDYsaik7DQogICAgICAgICBlbmQ7DQogICAg
ICAgICBsaW5lKHJvdW5kKHIpLDAscm91bmQociksNik7DQogICAgICBlbmQgZWxzZSBsaW5lKHJv
dW5kKHIpLDAscm91bmQociksMyk7DQogICAgICByOj1yK2hfbWFnOyBpOj1pKzENCiAgIHVudGls
IHI+PWhvcl9zcGxpdHQ7DQogICBzZXR0ZXh0anVzdGlmeShyaWdodHRleHQsY2VudGVydGV4dCk7
DQogICBpZiBmcmFjKHkwKT0wIHRoZW4gaTo9dHJ1bmMoeTApDQogICAgICBlbHNlIGk6PXRydW5j
KHkwKSsxOw0KICAgcjo9bV95LXZfbWFnKihpLXkwKTsNCiAgIHJlcGVhdCB7WS1MaW5lYWx9DQog
ICAgICBpZiBpIG1vZCA1PTAgdGhlbiBiZWdpbg0KICAgICAgICAgaWYgaSBtb2QgMTA9MCB0aGVu
IGJlZ2luDQogICAgICAgICAgICBzdHIoaSBkaXYgMTAsaik7IG91dHRleHR4eShtX3gtOSxyb3Vu
ZChyKSxqKTsNCiAgICAgICAgIGVuZDsNCiAgICAgICAgIGxpbmUobV94LHJvdW5kKHIpLG1feC05
LHJvdW5kKHIpKTsNCiAgICAgIGVuZCBlbHNlIGxpbmUobV94LHJvdW5kKHIpLG1feC00LHJvdW5k
KHIpKTsNCiAgICAgIHI6PXItdl9tYWc7IGk6PWkrMTsNCiAgIHVudGlsIHI8PTA7DQogICBzZXR0
ZXh0anVzdGlmeShsZWZ0dGV4dCx0b3B0ZXh0KTsNCmVuZDsge3J1bGVyc30NCg0KcHJvY2VkdXJl
IHB1dF9jdXJzb3I7DQpiZWdpbg0KICAgcHV0aW1hZ2UoY3Vyc194LDAsdmVyX2N1cnNeLHhvcnB1
dCk7DQogICBwdXRpbWFnZSgwLGN1cnNfeSxob3JfY3Vyc14seG9ycHV0KTsNCmVuZDsge3B1dF9j
dXJzb3J9DQoNCnByb2NlZHVyZSB0cmFucyh4LHk6IHJlYWw7IHZhciBzeCxzeTogaW50ZWdlcik7
DQpiZWdpbg0KICAgc3g6PXJvdW5kKGhfbWFnKih4LXgwKSk7DQogICBzeTo9bV95LXJvdW5kKHZf
bWFnKih5LXkwKSk7DQplbmQ7DQoNCnByb2NlZHVyZSBkcmF3X3RleHQodGV4dF9wdHI6cHRyX29i
al90eXBlKTsNCnZhciBzeCxzeTppbnRlZ2VyOw0KYmVnaW4NCiAgIHdpdGggdGV4dF9wdHJeIGRv
IHRyYW5zKHhfcG9zLHlfcG9zLHN4LHN5KTsNCiAgIHNldHRleHRqdXN0aWZ5KGNlbnRlcnRleHQs
Y2VudGVydGV4dCk7DQogICBvdXR0ZXh0eHkoc3gsc3ksJ1QnKTsNCiAgIHNldHRleHRqdXN0aWZ5
KGxlZnR0ZXh0LHRvcHRleHQpOw0KZW5kOyB7ZHJhd190ZXh0fQ0KDQpwcm9jZWR1cmUgZHJhd19i
b3hfdGV4dChib3hfcHRyOnB0cl9vYmpfdHlwZSk7DQp2YXIgaF9qdXN0LHZfanVzdCxzeCxzeTpp
bnRlZ2VyOw0KICAgIHgseTpyZWFsOw0KYmVnaW4NCiAgIHdpdGggYm94X3B0cl4gZG8gaWYgaW5o
YWx0PD5uaWwgdGhlbiBiZWdpbg0KICAgICAgY2FzZSBhZGp1c3RbMV0gb2YNCiAgICAgICAgICds
JzogYmVnaW4NCiAgICAgICAgICAgIGhfanVzdDo9bGVmdHRleHQ7IHg6PXhfcG9zOw0KICAgICAg
ICAgZW5kOw0KICAgICAgICAgJ3InOiBiZWdpbg0KICAgICAgICAgICAgaF9qdXN0Oj1yaWdodHRl
eHQ7IHg6PXhfcG9zK3dpZHRoOw0KICAgICAgICAgZW5kOw0KICAgICAgICAgJ2MnOiBiZWdpbg0K
ICAgICAgICAgICAgaF9qdXN0Oj1jZW50ZXJ0ZXh0OyB4Oj14X3Bvcyt3aWR0aC8yOw0KICAgICAg
ICAgZW5kOw0KICAgICAgZW5kOw0KICAgICAgY2FzZSBhZGp1c3RbMl0gb2YNCiAgICAgICAgICd0
JzogYmVnaW4NCiAgICAgICAgICAgIHZfanVzdDo9dG9wdGV4dDsgeTo9eV9wb3MraGVpZ2h0Ow0K
ICAgICAgICAgZW5kOw0KICAgICAgICAgJ2InOiBiZWdpbg0KICAgICAgICAgICAgdl9qdXN0Oj1i
b3R0b210ZXh0OyB5Oj15X3BvczsNCiAgICAgICAgIGVuZDsNCiAgICAgICAgICdjJzogYmVnaW4N
CiAgICAgICAgICAgIHZfanVzdDo9Y2VudGVydGV4dDsgeTo9eV9wb3MraGVpZ2h0LzI7DQogICAg
ICAgICBlbmQ7DQogICAgICBlbmQ7DQogICAgICB0cmFucyh4LHksc3gsc3kpOw0KICAgICAgc2V0
dGV4dGp1c3RpZnkoaF9qdXN0LHZfanVzdCk7DQogICAgICBvdXR0ZXh0eHkoc3gsc3ksJ0JUJyk7
DQogICAgICBzZXR0ZXh0anVzdGlmeShsZWZ0dGV4dCx0b3B0ZXh0KTsNCiAgIGVuZDsNCmVuZDsg
e2RyYXdfYm94X3RleHR9DQoNCnByb2NlZHVyZSBkcmF3X2JveChib3hfcHRyOnB0cl9vYmpfdHlw
ZSk7DQp2YXIgc3gxLHN4MixzeTEsc3kyOmludGVnZXI7DQpiZWdpbg0Kd2l0aCBib3hfcHRyXiBk
byBiZWdpbg0KICAgdHJhbnMoeF9wb3MseV9wb3Msc3gxLHN5MSk7IHRyYW5zKHhfcG9zK3dpZHRo
LHlfcG9zK2hlaWdodCxzeDIsc3kyKTsNCiAgIGlmIHNvbGlkIHRoZW4gYmFyKHN4MSxzeTEsc3gy
LHN5MikNCiAgIGVsc2UgYmVnaW4NCiAgICAgIGlmIGRhc2ggdGhlbiBzZXRsaW5lc3R5bGUoZGFz
aGVkbG4sMCxub3Jtd2lkdGgpOw0KICAgICAgcmVjdGFuZ2xlKHN4MSxzeTIsc3gyLHN5MSk7DQog
ICAgICBpZiBkYXNoIHRoZW4gc2V0bGluZXN0eWxlKHNvbGlkbG4sMCxub3Jtd2lkdGgpOw0KICAg
ICAgZHJhd19ib3hfdGV4dChib3hfcHRyKTsNCiAgIGVuZDsNCmVuZDsNCmVuZDsge2RyYXdfYm94
fQ0KDQpwcm9jZWR1cmUgZHJhd19saW5lKGxpbmVfcHRyOnB0cl9vYmpfdHlwZSk7DQp2YXIgc3gx
LHN4MixzeTEsc3kyOmludGVnZXI7DQpiZWdpbg0Kd2l0aCBsaW5lX3B0cl4gZG8gYmVnaW4NCiAg
IHRyYW5zKHhfcG9zLHlfcG9zLHN4MSxzeTEpOyB0cmFucyh3aWR0aCxoZWlnaHQsc3gyLHN5Mik7
DQogICBsaW5lKHN4MSxzeTEsc3gyLHN5Mik7DQogICBpZiBhcnQ9dmVjIHRoZW4gY2lyY2xlKHN4
MixzeTIsMyk7DQplbmQ7DQplbmQ7IHtkcmF3X2xpbmV9DQoNCnByb2NlZHVyZSBkcmF3X2NpcmMo
Y2lyY19wdHI6cHRyX29ial90eXBlKTsNCnZhciBzeCxzeTppbnRlZ2VyOw0KYmVnaW4NCndpdGgg
Y2lyY19wdHJeIGRvIGJlZ2luDQogICB0cmFucyh4X3Bvcyx5X3BvcyxzeCxzeSk7DQogICBpZiBm
aWxsIHRoZW4gZmlsbGVsbGlwc2Uoc3gsc3kscm91bmQoaF9tYWcqcmFkKSxyb3VuZCh2X21hZypy
YWQpKQ0KICAgZWxzZSBjaXJjbGUoc3gsc3kscm91bmQoaF9tYWcqcmFkKSk7DQplbmQ7DQplbmQ7
IHtkcmF3X2NpcmN9DQoNCnByb2NlZHVyZSBkcmF3X292YWwob3ZhbF9wdHI6cHRyX29ial90eXBl
KTsNCnZhciB4MSx4Mix4Myx4NCx5MSx5Mix5Myx5NCxhcmNfcmFkLHhwLHlwOmludGVnZXI7DQpi
ZWdpbg0Kd2l0aCBvdmFsX3B0cl4gZG8gYmVnaW4NCiAgIGFyY19yYWQ6PXJvdW5kKHdpZHRoLzIp
Ow0KICAgaWYgaGVpZ2h0LzI8YXJjX3JhZCB0aGVuIGFyY19yYWQ6PXJvdW5kKGhlaWdodC8yKTsN
CiAgIGlmIGFyY19yYWQ+NyB0aGVuIGFyY19yYWQ6PTc7DQogICB0cmFucyhsdXgsbHV5LHgxLHkx
KTsgdHJhbnMobHV4K2FyY19yYWQsbHV5K2FyY19yYWQseDIseTIpOw0KICAgdHJhbnMobHV4K3dp
ZHRoLWFyY19yYWQsbHV5K2hlaWdodC1hcmNfcmFkLHgzLHkzKTsNCiAgIHRyYW5zKGx1eCt3aWR0
aCxsdXkraGVpZ2h0LHg0LHk0KTsNCiAgIGFyY19yYWQ6PXJvdW5kKGhfbWFnKmFyY19yYWQpOw0K
ICAgaWYgcGFydD0nJyB0aGVuIGJlZ2luDQogICAgICBsaW5lKHgyLHkxLHgzLHkxKTsgbGluZSh4
NCx5Mix4NCx5Myk7DQogICAgICBsaW5lKHgzLHk0LHgyLHk0KTsgbGluZSh4MSx5Myx4MSx5Mik7
DQogICAgICBhcmMoeDIseTIsMTgwLDI3MCxhcmNfcmFkKTsgYXJjKHgzLHkyLDI3MCwzNjAsYXJj
X3JhZCk7DQogICAgICBhcmMoeDMseTMsMCw5MCxhcmNfcmFkKTsgYXJjKHgyLHkzLDkwLDE4MCxh
cmNfcmFkKTsNCiAgIGVuZCBlbHNlIGJlZ2luDQogICAgICB0cmFucyhsdXgrd2lkdGgvMixsdXkr
aGVpZ2h0LzIseHAseXApOw0KICAgICAgaWYgbGVuZ3RoKHBhcnQpPTEgdGhlbiBjYXNlIHBhcnRb
MV0gb2YNCiAgICAgICAgICdsJzogYmVnaW4NCiAgICAgICAgICAgIGxpbmUoeDIseTEseHAseTEp
OyBsaW5lKHhwLHk0LHgyLHk0KTsgbGluZSh4MSx5Myx4MSx5Mik7DQogICAgICAgICAgICBhcmMo
eDIseTIsMTgwLDI3MCxhcmNfcmFkKTsgYXJjKHgyLHkzLDkwLDE4MCxhcmNfcmFkKTsNCiAgICAg
ICAgIGVuZDsNCiAgICAgICAgICdyJzogYmVnaW4NCiAgICAgICAgICAgIGxpbmUoeHAseTEseDMs
eTEpOyBsaW5lKHg0LHkyLHg0LHkzKTsgbGluZSh4Myx5NCx4cCx5NCk7DQogICAgICAgICAgICBh
cmMoeDMseTIsMjcwLDM2MCxhcmNfcmFkKTsgYXJjKHgzLHkzLDAsOTAsYXJjX3JhZCk7DQogICAg
ICAgICBlbmQ7DQogICAgICAgICAndCc6IGJlZ2luDQogICAgICAgICAgICBsaW5lKHg0LHlwLHg0
LHkzKTsgbGluZSh4Myx5NCx4Mix5NCk7IGxpbmUoeDEseTMseDEseXApOw0KICAgICAgICAgICAg
YXJjKHgzLHkzLDAsOTAsYXJjX3JhZCk7IGFyYyh4Mix5Myw5MCwxODAsYXJjX3JhZCk7DQogICAg
ICAgICBlbmQ7DQogICAgICAgICAnYic6IGJlZ2luDQogICAgICAgICAgICBsaW5lKHgyLHkxLHgz
LHkxKTsgbGluZSh4NCx5Mix4NCx5cCk7IGxpbmUoeDEseXAseDEseTIpOw0KICAgICAgICAgICAg
YXJjKHgyLHkyLDE4MCwyNzAsYXJjX3JhZCk7IGFyYyh4Myx5MiwyNzAsMzYwLGFyY19yYWQpOw0K
ICAgICAgICAgZW5kOw0KICAgICAgZW5kIHtjYXNlfQ0KICAgICAgZWxzZSBjYXNlIHBhcnRbMV0g
b2YNCiAgICAgICAgICdsJzogaWYgcGFydFsyXT0ndCcgdGhlbiBiZWdpbg0KICAgICAgICAgICAg
bGluZSh4cCx5NCx4Mix5NCk7IGxpbmUoeDEseTMseDEseXApOw0KICAgICAgICAgICAgYXJjKHgy
LHkzLDkwLDE4MCxhcmNfcmFkKTsNCiAgICAgICAgICBlbmQgZWxzZSBiZWdpbg0KICAgICAgICAg
ICAgbGluZSh4Mix5MSx4cCx5MSk7IGxpbmUoeDEseXAseDEseTIpOw0KICAgICAgICAgICAgYXJj
KHgyLHkyLDE4MCwyNzAsYXJjX3JhZCk7DQogICAgICAgICAgZW5kOw0KICAgICAgICAgJ3InOiBp
ZiBwYXJ0WzJdPSd0JyB0aGVuIGJlZ2luDQogICAgICAgICAgICBsaW5lKHg0LHlwLHg0LHkzKTsg
bGluZSh4Myx5NCx4cCx5NCk7DQogICAgICAgICAgICBhcmMoeDMseTMsMCw5MCxhcmNfcmFkKTsN
CiAgICAgICAgIGVuZCBlbHNlIGJlZ2luDQogICAgICAgICAgICBsaW5lKHhwLHkxLHgzLHkxKTsg
bGluZSh4NCx5Mix4NCx5cCk7DQogICAgICAgICAgICBhcmMoeDMseTIsMjcwLDM2MCxhcmNfcmFk
KTsNCiAgICAgICAgIGVuZDsNCiAgICAgIGVuZDsge2Nhc2V9DQogICBlbmQ7DQplbmQ7DQplbmQ7
IHtkcmF3X292YWx9DQoNCnByb2NlZHVyZSBkcmF3X2JlemllcihwdHI6cHRyX29ial90eXBlOyBm
YXJiZTppbnRlZ2VyKTsNCnZhciB4LHksc2Msc2NwLHhiLHhhLHliLHlhOnJlYWw7IHQseHgseXk6
aW50ZWdlcjsNCmJlZ2luDQogICB3aXRoIHB0cl4gZG8gYmVnaW4NCiAgICAgIHNjOj1udW0vMjsN
CiAgICAgIGlmIHNjPDEgdGhlbiBzYzo9MTsNCiAgICAgIHNjcDo9c2MrMTsNCiAgICAgIHhiOj0y
Kih3aWR0aC14X3Bvcyk7DQogICAgICB4YTo9KCh4eF9wb3MteF9wb3MpLXhiKS9zYzsNCiAgICAg
IHliOj0yKihoZWlnaHQteV9wb3MpOw0KICAgICAgeWE6PSgoeXlfcG9zLXlfcG9zKS15Yikvc2M7
DQogICAgICB0Oj0wOw0KICAgICAgd2hpbGUgdDxzY3AgZG8gYmVnaW4NCiAgICAgICAgIHg6PSgo
dCp4YSt4Yikvc2MpKnQ7DQogICAgICAgICB5Oj0oKHQqeWEreWIpL3NjKSp0Ow0KICAgICAgICAg
dHJhbnMoeCt4X3Bvcyx5K3lfcG9zLHh4LHl5KTsNCiAgICAgICAgIHB1dHBpeGVsKHh4LHl5LGZh
cmJlKTsNCiAgICAgICAgIHQ6PXQrMjsNCiAgICAgIGVuZDsNCiAgIGVuZDsNCmVuZDsge2RyYXdf
YmV6aWVyfQ0KDQpwcm9jZWR1cmUgcmVkcmF3Ow0KdmFyIG9ial9wdHI6cHRyX29ial90eXBlOw0K
YmVnaW4NCnJ1bGVyczsgb2JqX3B0cjo9cm9vdDsNCndoaWxlIG9ial9wdHI8Pm5pbCBkbyB3aXRo
IG9ial9wdHJeIGRvIGJlZ2luDQogICBjYXNlIGFydCBvZg0KICAgICAgdHh0OiBkcmF3X3RleHQo
b2JqX3B0cik7DQogICAgICBib3g6IGRyYXdfYm94KG9ial9wdHIpOw0KICAgICAgbGluLHZlYzog
ZHJhd19saW5lKG9ial9wdHIpOw0KICAgICAgY2lyYzogZHJhd19jaXJjKG9ial9wdHIpOw0KICAg
ICAgb3ZhbDogZHJhd19vdmFsKG9ial9wdHIpOw0KICAgICAgYmV6aWVyOiBkcmF3X2Jlemllcihv
YmpfcHRyLGNvbG9yKTsNCiAgIGVuZDsge2Nhc2V9DQogICBvYmpfcHRyOj1vYmpfcHRyXi5uZXh0
Ow0KZW5kOyB7d2hpbGV9DQplbmQ7IHtyZWRyYXd9DQoNCnByb2NlZHVyZSB0b2dnbGVfc25hcDsN
CnZhciB4LHk6cmVhbDsNCmJlZ2luDQogICBvcHQuc25hcHBpbmc6PW5vdCBvcHQuc25hcHBpbmc7
DQogICBpZiBvcHQuc25hcHBpbmcgdGhlbiBiZWdpbg0KICAgICAgd3g6PW9wdC5zbmFwX2FzcCpy
b3VuZCh3eC9vcHQuc25hcF9hc3ApOw0KICAgICAgd3k6PW9wdC5zbmFwX2FzcCpyb3VuZCh3eS9v
cHQuc25hcF9hc3ApOw0KICAgICAgdHJhbnMod3gsd3ksbV94cG9zLG1feXBvcyk7DQogICBlbmQ7
DQplbmQ7IHt0b2dnbGVfc25hcH0NCg0KZnVuY3Rpb24gbW91c2Vfc3RhdDppbnRlZ2VyOw0KdmFy
IGNoOmNoYXI7DQogICAgc2V0cG9zOmJvb2xlYW47DQpiZWdpbg0KbW91c2Vfc3RhdDo9MDsNCmlm
IGtleXByZXNzZWQgdGhlbiBiZWdpbg0KICAgY2g6PXJlYWRrZXk7DQogICBpZiBjaD0jMCB0aGVu
IGJlZ2luDQogICAgICBjaDo9cmVhZGtleTsgc2V0cG9zOj10cnVlOw0KICAgICAgaWYgb3B0LnNu
YXBwaW5nIHRoZW4gd2l0aCBvcHQgZG8gYmVnaW4NCiAgICAgICAgIGNhc2UgY2ggb2YNCiAgICAg
ICAgICAgICM3MjogaWYgd3krc25hcF9hc3A8PW1fd3kgdGhlbiB3eTo9d3krc25hcF9hc3A7IHtV
cH0NCiAgICAgICAgICAgICM4MDogaWYgd3ktc25hcF9hc3A+PXkwIHRoZW4gd3k6PXd5LXNuYXBf
YXNwOyB7RG93bn0NCiAgICAgICAgICAgICM3NTogaWYgd3gtc25hcF9hc3A+PXgwIHRoZW4gd3g6
PXd4LXNuYXBfYXNwOyB7TGVmdH0NCiAgICAgICAgICAgICM3NzogaWYgd3grc25hcF9hc3A8PW1f
d3ggdGhlbiB3eDo9d3grc25hcF9hc3A7IHtSaWdodH0NCiAgICAgICAgICAgICMxNjA6IGlmIHd5
KzEwKnNuYXBfYXNwPD1tX3d5IHRoZW4gd3k6PXd5KzEwKnNuYXBfYXNwOyB7Q3RybC1VcH0NCiAg
ICAgICAgICAgICMxNjQ6IGlmIHd5LTEwKnNuYXBfYXNwPj15MCB0aGVuIHd5Oj13eS0xMCpzbmFw
X2FzcDsge0N0cmwtRG93bn0NCiAgICAgICAgICAgICMxMTU6IGlmIHd4LTEwKnNuYXBfYXNwPj14
MCB0aGVuIHd4Oj13eC0xMCpzbmFwX2FzcDsge0N0cmwtTGVmdH0NCiAgICAgICAgICAgICMxMTY6
IGlmIHd4KzEwKnNuYXBfYXNwPD1tX3d4IHRoZW4gd3g6PXd4KzEwKnNuYXBfYXNwOyB7Q3RybC1S
aWdodH0NCiAgICAgICAgICAgIGVsc2Ugc2V0cG9zOj1mYWxzZTsNCiAgICAgICAgIGVuZDsNCiAg
ICAgICAgIGlmIHNldHBvcyB0aGVuIHRyYW5zKHd4LHd5LG1feHBvcyxtX3lwb3MpOw0KICAgICAg
ZW5kIGVsc2UgYmVnaW4NCiAgICAgICAgIGNhc2UgY2ggb2YNCiAgICAgICAgICAgICM3MjogaWYg
bV95cG9zPm1pbl95cG9zIHRoZW4gZGVjKG1feXBvcyk7IHtVcH0NCiAgICAgICAgICAgICM4MDog
aWYgbV95cG9zPG1heF95cG9zIHRoZW4gaW5jKG1feXBvcyk7IHtEb3dufQ0KICAgICAgICAgICAg
Izc1OiBpZiBtX3hwb3M+bWluX3hwb3MgdGhlbiBkZWMobV94cG9zKTsge0xlZnR9DQogICAgICAg
ICAgICAjNzc6IGlmIG1feHBvczxtYXhfeHBvcyB0aGVuIGluYyhtX3hwb3MpOyB7UmlnaHR9DQog
ICAgICAgICAgICAjMTYwOiBpZiBtX3lwb3MtMTA+PW1pbl95cG9zIHRoZW4gZGVjKG1feXBvcywx
MCk7IHtDdHJsLVVwfQ0KICAgICAgICAgICAgIzE2NDogaWYgbV95cG9zKzEwPD1tYXhfeXBvcyB0
aGVuIGluYyhtX3lwb3MsMTApOyB7Q3RybC1Eb3dufQ0KICAgICAgICAgICAgIzExNTogaWYgbV94
cG9zLTEwPj1taW5feHBvcyB0aGVuIGRlYyhtX3hwb3MsMTApOyB7Q3RybC1MZWZ0fQ0KICAgICAg
ICAgICAgIzExNjogaWYgbV94cG9zKzEwPD1tYXhfeHBvcyB0aGVuIGluYyhtX3hwb3MsMTApOyB7
Q3RybC1SaWdodH0NCiAgICAgICAgICAgIGVsc2Ugc2V0cG9zOj1mYWxzZTsNCiAgICAgICAgIGVu
ZDsge2Nhc2V9DQogICAgICAgICBpZiBzZXRwb3MgdGhlbiBiZWdpbg0KICAgICAgICAgICAgd3g6
PXgwK21feHBvcy9oX21hZzsgd3k6PXkwKyhtX3ktbV95cG9zKS92X21hZzsNCiAgICAgICAgIGVu
ZDsNCiAgICAgIGVuZDsNCiAgICAgIGlmIHNldHBvcyBhbmQgbV9vayB0aGVuIHNldF9tb3VzZV9w
b3MobV94cG9zLG1feXBvcyk7DQogICBlbmQgZWxzZSBtb3VzZV9zdGF0Oj1vcmQodXBjYXNlKGNo
KSk7DQplbmQgZWxzZSBpZiBtX29rIHRoZW4gYmVnaW4NCiAgIGdldF9yZWxlYXNlZF9pbmZvKDAp
Ow0KICAgaWYgcmVsPjAgdGhlbiBtb3VzZV9zdGF0Oj0tMSB7bGlua2UgVGFzdGV9DQogICBlbHNl
IGJlZ2luDQogICAgICBnZXRfcmVsZWFzZWRfaW5mbygxKTsNCiAgICAgIGlmIHJlbD4wIHRoZW4g
bW91c2Vfc3RhdDo9LTIge3JlY2h0ZSBUYXN0ZX0NCiAgICAgIGVsc2UgYmVnaW4NCiAgICAgICAg
IG1vdXNlX3N0YXQ6PTA7IGdldF9tb3VzZV9wb3M7DQogICAgICBlbmQ7DQogICBlbmQ7DQogICB3
eDo9eDArbV94cG9zL2hfbWFnOyB3eTo9eTArKG1feS1tX3lwb3MpL3ZfbWFnOw0KICAgaWYgb3B0
LnNuYXBwaW5nIHRoZW4gYmVnaW4NCiAgICAgIHd4Oj1vcHQuc25hcF9hc3Aqcm91bmQod3gvb3B0
LnNuYXBfYXNwKTsNCiAgICAgIHd5Oj1vcHQuc25hcF9hc3Aqcm91bmQod3kvb3B0LnNuYXBfYXNw
KTsNCiAgICAgIHRyYW5zKHd4LHd5LG1feHBvcyxtX3lwb3MpOw0KICAgZW5kOw0KZW5kOw0KZW5k
OyB7bW91c2Vfc3RhdH0NCg0KcHJvY2VkdXJlIGdldF9wb2ludCh2YXIgc3gsc3k6aW50ZWdlcjsg
dmFyIHgseTpyZWFsOyB2YXIgZW5kZTpib29sZWFuKTsNCnZhciBzdGF0OmludGVnZXI7DQogICAg
c3RvcDpib29sZWFuOw0KYmVnaW4NCnB1dF9jdXJzb3I7IHN0b3A6PWZhbHNlOw0Kd2hpbGUgbm90
IHN0b3AgZG8gYmVnaW4NCiAgIHN0YXQ6PW1vdXNlX3N0YXQ7DQogICBjYXNlIHN0YXQgb2YNCiAg
ICAgIDA6IGlmIChtX3hwb3M8PmN1cnNfeCkgb3IgKG1feXBvczw+Y3Vyc195KSB0aGVuIGJlZ2lu
DQogICAgICAgICBwdXRfY3Vyc29yOyBjdXJzX3g6PW1feHBvczsgY3Vyc195Oj1tX3lwb3M7IHB1
dF9jdXJzb3I7DQogICAgICBlbmQ7DQogICAgICAtMSwxMzogYmVnaW4ge2xpbmtlIFRhc3RlLCBF
TlRFUn0NCiAgICAgICAgIHB1dF9jdXJzb3I7IHN4Oj1jdXJzX3g7IHN5Oj1jdXJzX3k7IHg6PXd4
OyB5Oj13eTsNCiAgICAgICAgIGVuZGU6PWZhbHNlOyBzdG9wOj10cnVlOw0KICAgICAgZW5kOw0K
ICAgICAgLTIsMjc6IGJlZ2luIHtyZWNodGUgVGFzdGUsIEVTQ30NCiAgICAgICAgIHB1dF9jdXJz
b3I7IHN4Oj0wOyBzeTo9MDsgeDo9MDsgeTo9MDsNCiAgICAgICAgIGVuZGU6PXRydWU7IHN0b3A6
PXRydWU7DQogICAgICBlbmQ7DQogICAgICBvcmQoJ1AnKTogdG9nZ2xlX3NuYXA7DQogICAgICBv
cmQoJ0UnKTogYmVnaW4NCiAgICAgICAgIHkwOj15MCsobV95IGRpdiA0KS92X21hZzsgcmVkcmF3
OyBwdXRfY3Vyc29yOw0KICAgICAgZW5kOw0KICAgICAgb3JkKCdTJyk6IGJlZ2luDQogICAgICAg
ICB4MDo9eDAtKG1feCBkaXYgNCkvaF9tYWc7IHJlZHJhdzsgcHV0X2N1cnNvcjsNCiAgICAgIGVu
ZDsNCiAgICAgIG9yZCgnWCcpOiBiZWdpbg0KICAgICAgICAgeTA6PXkwLShtX3kgZGl2IDQpL3Zf
bWFnOyByZWRyYXc7IHB1dF9jdXJzb3I7DQogICAgICBlbmQ7DQogICAgICBvcmQoJ0QnKTogYmVn
aW4NCiAgICAgICAgIHgwOj14MCsobV94IGRpdiA0KS9oX21hZzsgcmVkcmF3OyBwdXRfY3Vyc29y
Ow0KICAgICAgZW5kOw0KICAgZW5kOyB7Y2FzZX0NCmVuZDsge3doaWxlfQ0KZW5kOyB7Z2V0X3Bv
aW50fQ0KDQpwcm9jZWR1cmUgZ2V0X2FyZWEodmFyIHN4MSxzeTEsc3gyLHN5MjogaW50ZWdlcjsg
dmFyIGVuZGU6Ym9vbGVhbik7DQp2YXIgeCx5OnJlYWw7DQogICAgc3RhdDppbnRlZ2VyOw0KICAg
IHN0b3A6Ym9vbGVhbjsNCmJlZ2luDQptZXNzYWdlKCdMb3dlciBsZWZ0IGNvcm5lcjonKTsgcGlj
dF9wb3J0Ow0KZ2V0X3BvaW50KHN4MSxzeTEseCx5LGVuZGUpOyBzeDI6PXN4MTsgc3kyOj1zeTE7
DQppZiBub3QgZW5kZSB0aGVuIGJlZ2luDQogICBtZXNzYWdlKCdVcHBlciByaWdodCBjb3JuZXI6
Jyk7IHBpY3RfcG9ydDsNCiAgIHNldHdyaXRlbW9kZSh4b3JwdXQpOyBzdG9wOj1mYWxzZTsNCiAg
IHJlcGVhdA0KICAgICAgc3RhdDo9bW91c2Vfc3RhdDsNCiAgICAgIGNhc2Ugc3RhdCBvZg0KICAg
ICAgMDppZiAobV94cG9zPD5jdXJzX3gpIG9yIChtX3lwb3M8PmN1cnNfeSkgdGhlbiBiZWdpbg0K
ICAgICAgICAgY3Vyc194Oj1tX3hwb3M7IGN1cnNfeTo9bV95cG9zOw0KICAgICAgICAgcmVjdGFu
Z2xlKHN4MSxzeTEsc3gyLHN5Mik7DQogICAgICAgICBpZiBjdXJzX3g+c3gxIHRoZW4gc3gyOj1j
dXJzX3ggZWxzZSBzeDI6PXN4MTsNCiAgICAgICAgIGlmIGN1cnNfeTxzeTEgdGhlbiBzeTI6PWN1
cnNfeSBlbHNlIHN5Mjo9c3kxOw0KICAgICAgICAgcmVjdGFuZ2xlKHN4MSxzeTEsc3gyLHN5Mik7
DQogICAgICBlbmQ7DQogICAgICAtMSwxMzogc3RvcDo9dHJ1ZTsge2xpbmtlIFRhc3RlLCBFTlRF
Un0NCiAgICAgIC0yLDI3OiBiZWdpbiAgICAgICB7cmVjaHRlIFRhc3RlLCBFU0N9DQogICAgICAg
ICBlbmRlOj10cnVlOyBzdG9wOj10cnVlOw0KICAgICAgZW5kOw0KICAgICAgb3JkKCdQJyk6IHRv
Z2dsZV9zbmFwOw0KICAgICAgZW5kOyB7Y2FzZX0NCiAgIHVudGlsIHN0b3A7DQogICBzZXR3cml0
ZW1vZGUobm9ybWFscHV0KTsNCmVuZDsNCmVuZDsge2dldF9hcmVhfQ0KDQpwcm9jZWR1cmUgbWVz
c2FnZShtc2c6c3RyaW5nKTsNCmJlZ2luDQogICBzZXR2aWV3cG9ydChob3Jfc3BsaXR0KzEwLDEw
LG1heF94LTEsdmVyX3NwbGl0dC0yLGNsaXBvbik7DQogICBpZiBtc2c9JycgdGhlbiBiZWdpbg0K
ICAgICAgY2xlYXJ2aWV3cG9ydDsgbXNnX2xpbmU6PTA7DQogICBlbmQgZWxzZSBiZWdpbg0KICAg
ICAgb3V0dGV4dHh5KDAsbXNnX2xpbmUsbXNnKTsgbXNnX2xpbmU6PW1zZ19saW5lKzEyOw0KICAg
ZW5kOw0KZW5kOyB7bWVzc2FnZX0NCg0KZnVuY3Rpb24geWVzX25vKHQxLHQyOmNoYXIpOmJvb2xl
YW47DQp2YXIgc3RvcDpib29sZWFuOw0KICAgIHN0YXQ6aW50ZWdlcjsNCmJlZ2luDQpzdG9wOj1m
YWxzZTsgdDE6PXVwY2FzZSh0MSk7IHQyOj11cGNhc2UodDIpOw0KcmVwZWF0DQogICBzdGF0Oj1t
b3VzZV9zdGF0Ow0KICAgY2FzZSBzdGF0IG9mDQogICAgICAtMSwxMzogYmVnaW4ge2xpbmtlIFRh
c3RlLCBFTlRFUn0NCiAgICAgICAgIHllc19ubzo9dHJ1ZTsgc3RvcDo9dHJ1ZTsNCiAgICAgIGVu
ZDsNCiAgICAgIC0yLDI3OiBiZWdpbiB7cmVjaHRlIFRhc3RlLCBFU0N9DQogICAgICAgICB5ZXNf
bm86PWZhbHNlOyBzdG9wOj10cnVlOw0KICAgICAgZW5kOw0KICAgICAgZWxzZSBpZiAoY2hyKHN0
YXQpPXQxKSBvciAoY2hyKHN0YXQpPXQyKSB0aGVuIGJlZ2luDQogICAgICAgICAgICB5ZXNfbm86
PWNocihzdGF0KT10MTsgc3RvcDo9dHJ1ZTsNCiAgICAgIGVuZDsNCiAgIGVuZDsge2Nhc2V9DQp1
bnRpbCBzdG9wOw0KZW5kOyB7eWVzX25vfQ0KDQpwcm9jZWR1cmUgZ2V0X3N0cih5OmludGVnZXI7
IHZhciBzdDpzdHJpbmc7IHZhciBlbmRlOmJvb2xlYW4pOw0KdmFyIGksY3gsY3ksdzppbnRlZ2Vy
Ow0KICAgIGNoOmNoYXI7DQogICAgaW5zOmJvb2xlYW47DQogICAgdnA6dmlld3BvcnR0eXBlOw0K
DQpwcm9jZWR1cmUgd3JpdGVfc3RyOw0KdmFyIGosaHgsaHk6aW50ZWdlcjsNCmJlZ2luDQogICBo
eDo9Y3g7IGh5Oj1jeTsNCiAgIGZvciBqOj1pIHRvIGxlbmd0aChzdCkgZG8gYmVnaW4NCiAgICAg
IG91dHRleHR4eShoeCxoeSxzdFtqXSk7IGh4Oj1oeCs4Ow0KICAgICAgaWYgaHg+dyB0aGVuIGJl
Z2luDQogICAgICAgICBoeDo9MDsgaHk6PWh5KzEyOw0KICAgICAgZW5kOw0KICAgZW5kOw0KZW5k
OyB7d3JpdGVfc3RyfQ0KDQpiZWdpbg0KZ2V0dmlld3NldHRpbmdzKHZwKTsgdzo9KCgodnAueDIt
dnAueDEpIGRpdiA4KS0xKSo4Ow0KaTo9MTsgY3g6PTA7IGN5Oj15OyB3cml0ZV9zdHI7DQplbmRl
Oj1mYWxzZTsgaW5zOj10cnVlOw0KbGluZShjeCxjeSs4LGN4KzgsY3krOCk7IHNldHdyaXRlbW9k
ZSh4b3JwdXQpOw0KcmVwZWF0DQppZiBrZXlwcmVzc2VkIHRoZW4gYmVnaW4NCiAgIGNoOj1yZWFk
a2V5OyBsaW5lKGN4LGN5KzgsY3grOCxjeSs4KTsNCiAgIGNhc2UgY2ggb2YNCiAgICAgICMzMi4u
IzEyNjogYmVnaW4NCiAgICAgICAgIGlmIGlucyB0aGVuIGJlZ2luDQogICAgICAgICAgICBzZXRj
b2xvcigwKTsgd3JpdGVfc3RyOyBzZXRjb2xvcihjb2xvcik7DQogICAgICAgICAgICBpbnNlcnQo
Y2gsc3QsaSk7IHdyaXRlX3N0cjsNCiAgICAgICAgIGVuZCBlbHNlIGJlZ2luDQogICAgICAgICAg
ICBpZiBpPD1sZW5ndGgoc3QpIHRoZW4gYmVnaW4NCiAgICAgICAgICAgICAgIHNldGNvbG9yKDAp
OyBvdXR0ZXh0eHkoY3gsY3ksc3RbaV0pOyBzZXRjb2xvcihjb2xvcik7DQogICAgICAgICAgICBl
bmQgZWxzZSBzdFswXTo9Y2hyKGkpOw0KICAgICAgICAgICAgb3V0dGV4dHh5KGN4LGN5LGNoKTsg
c3RbaV06PWNoOw0KICAgICAgICAgZW5kOw0KICAgICAgICAgY3g6PWN4Kzg7IGk6PWkrMTsNCiAg
ICAgICAgIGlmIGN4PncgdGhlbiBiZWdpbg0KICAgICAgICAgICAgY3g6PTA7IGN5Oj1jeSsxMjsN
CiAgICAgICAgIGVuZDsNCiAgICAgIGVuZDsNCiAgICAgICMxMzogOw0KICAgICAgIzI3OiBlbmRl
Oj10cnVlOw0KICAgICAgIzA6IGJlZ2luDQogICAgICAgICBjaDo9cmVhZGtleTsNCiAgICAgICAg
IGlmIChjaD0jNzUpIGFuZCAoaT4xKSB0aGVuIGJlZ2luIHtsaW5rc30NCiAgICAgICAgICAgIGk6
PWktMTsgY3g6PWN4LTg7DQogICAgICAgICAgICBpZiBjeDwwIHRoZW4gYmVnaW4NCiAgICAgICAg
ICAgICAgIGN4Oj13OyBjeTo9Y3ktMTI7DQogICAgICAgICAgICBlbmQ7DQogICAgICAgICBlbmQ7
DQogICAgICAgICBpZiAoY2g9Izc3KSBhbmQgKGk8PWxlbmd0aChzdCkpIHRoZW4gYmVnaW4ge3Jl
Y2h0c30NCiAgICAgICAgICAgIGN4Oj1jeCs4OyBpOj1pKzE7DQogICAgICAgICAgICBpZiBjeD53
IHRoZW4gYmVnaW4NCiAgICAgICAgICAgICAgIGN4Oj0wOyBjeTo9Y3krMTI7DQogICAgICAgICAg
ICBlbmQ7DQogICAgICAgICBlbmQ7DQogICAgICAgICBpZiBjaD0jODIgdGhlbiBpbnM6PW5vdCBp
bnM7IHtpbnNlcnR9DQogICAgICAgICBpZiAoY2g9IzgzKSBhbmQgKGk8PWxlbmd0aChzdCkpIHRo
ZW4gYmVnaW4ge2RlbGV0ZX0NCiAgICAgICAgICAgIHNldGNvbG9yKDApOyB3cml0ZV9zdHI7IHNl
dGNvbG9yKGNvbG9yKTsNCiAgICAgICAgICAgIGRlbGV0ZShzdCxpLDEpOyB3cml0ZV9zdHI7DQog
ICAgICAgICBlbmQ7DQogICAgICBlbmQ7DQogICAgICAjODogaWYgaT4xIHRoZW4gYmVnaW4ge2Jh
Y2tzcGFjZX0NCiAgICAgICAgIGk6PWktMTsgY3g6PWN4LTg7DQogICAgICAgICBpZiBjeDwwIHRo
ZW4gYmVnaW4NCiAgICAgICAgICAgIGN4Oj13OyBjeTo9Y3ktMTI7DQogICAgICAgICBlbmQ7DQog
ICAgICAgICBzZXRjb2xvcigwKTsgd3JpdGVfc3RyOyBzZXRjb2xvcihjb2xvcik7DQogICAgICAg
ICBkZWxldGUoc3QsaSwxKTsgd3JpdGVfc3RyOw0KICAgICAgZW5kOw0KICAgZW5kOyB7Y2FzZX0N
CiAgIGxpbmUoY3gsY3krOCxjeCs4LGN5KzgpOw0KZW5kIGVsc2UgaWYgbV9vayB0aGVuIGJlZ2lu
DQogICBnZXRfcmVsZWFzZWRfaW5mbygwKTsge2xpbmtlIFRhc3RlfQ0KICAgaWYgcmVsPjAgdGhl
biBjaDo9IzEzIGVsc2UgYmVnaW4NCiAgICAgIGdldF9yZWxlYXNlZF9pbmZvKDEpOyB7cmVjaHRl
IFRhc3RlfQ0KICAgICAgaWYgcmVsPjAgdGhlbiBiZWdpbg0KICAgICAgICAgY2g6PSMyNzsgZW5k
ZTo9dHJ1ZTsNCiAgICAgIGVuZCBlbHNlIGNoOj0nICc7DQogICBlbmQ7DQplbmQ7DQp1bnRpbCAo
Y2g9IzEzKSBvciAoY2g9IzI3KTsNCmxpbmUoY3gsY3krOCxjeCs4LGN5KzgpOyBzZXR3cml0ZW1v
ZGUobm9ybWFscHV0KTsNCmVuZDsge2dldF9zdHJ9DQoNCnByb2NlZHVyZSBtZW51KGFuejppbnRl
Z2VyOyB2YXIgd2FobDppbnRlZ2VyKTsNCnZhciBpLHN0YXQ6aW50ZWdlcjsNCiAgICBzYXZlX3Nu
YXAsZW5kZTpib29sZWFuOw0KYmVnaW4NCnNldHZpZXdwb3J0KGhvcl9zcGxpdHQrMTAsdmVyX3Nw
bGl0dCs4LG1heF94LTEwLG1heF95LTEsY2xpcG9uKTsNCmNsZWFydmlld3BvcnQ7IG91dHRleHR4
eSgwLG1lbnVfcG9zWzBdLGZ1bmtbMF0pOw0KZm9yIGk6PTEgdG8gYW56IGRvIG91dHRleHR4eSgx
LG1lbnVfcG9zW2ldKzEsZnVua1tpXSk7DQpwdXRpbWFnZSgwLG1lbnVfcG9zW3dhaGxdLG1lbnVf
Y3Vyc14seG9ycHV0KTsNCnNldF9tb3VzZV93aW5kb3coMCwxLDgsYW56KTsNCnNldF9tb3VzZV9w
b3MoMCx3YWhsKTsNCnNldF9tb3VzZV9zcGVlZCgxMiwxMik7IGVuZGU6PWZhbHNlOw0Kc2F2ZV9z
bmFwOj1vcHQuc25hcHBpbmc7IGlmIHNhdmVfc25hcCB0aGVuIHRvZ2dsZV9zbmFwOw0Kd2hpbGUg
bm90IGVuZGUgZG8gYmVnaW4NCiAgIHN0YXQ6PW1vdXNlX3N0YXQ7DQogICBjYXNlIHN0YXQgb2YN
CiAgIDA6IGlmIG1feXBvczw+d2FobCB0aGVuIGJlZ2luDQogICAgICBwdXRpbWFnZSgwLG1lbnVf
cG9zW3dhaGxdLG1lbnVfY3Vyc14seG9ycHV0KTsNCiAgICAgIHdhaGw6PW1feXBvczsgcHV0aW1h
Z2UoMCxtZW51X3Bvc1t3YWhsXSxtZW51X2N1cnNeLHhvcnB1dCk7DQogICBlbmQ7DQogICAtMSwx
MzogZW5kZTo9dHJ1ZTsNCiAgIC0yLDI3OiBiZWdpbg0KICAgICAgd2FobDo9MDsgZW5kZTo9dHJ1
ZTsNCiAgIGVuZDsNCiAgIGVuZDsge2Nhc2V9DQplbmQ7IHt3aGlsZX0NCmlmIHNhdmVfc25hcCB0
aGVuIHRvZ2dsZV9zbmFwOw0KZW5kOyB7bWVudX0NCg0KYmVnaW4NCiAgIGluaXQ7DQplbmQuDQoa
DQo=

------_=_NextPart_001_01C2A588.BE3B5BF8--