From philipmabon@gmail.com Mon Aug 27 16:18:26 2012 From: Philip Mabon To: galaxy-dev@lists.galaxyproject.org Subject: Re: [galaxy-dev] Cannot install freebayes with migration script Date: Mon, 27 Aug 2012 15:18:17 -0500 Message-ID: In-Reply-To: <6B61D414-F1DD-4CB1-9D37-07550D0CB6E6@bx.psu.edu> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============0741999685670050865==" --===============0741999685670050865== Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable I already had that entry to the tool_data_table_conf.xml but still getting the same error. After some debugging and print statement, I found that it initially finds the correct path to the 'sam_fa_indexes' when reading tool_data_table_conf.xml in Galaxy installation directory but re-reads another file in the shed_tools dir. It's the sample tool_data_table_conf.xml from the freebayes directory. ../shed_tools/ toolshed.g2.bx.psu.edu/repos/devteam/freebayes/213a3d6b579a/freebayes/tool_da= ta_table_conf.xml.sample . Maybe the tool_data_table_conf.xml.sample is invalid? Philip Mabon Senior Bioinformatician National Microbiology Laboratory Public Health Agency of Canada On Mon, Aug 27, 2012 at 9:41 AM, Greg Von Kuster wrote: > Hi Phillip, > > I'm not able to reproduce this behavior, so it's difficult to determine > what may be the cause. I have not seen others in the community encounter > this problem, but that may simply be due to the fact that no one is yet > installing the freebayes tool from the tool shed. > > A possible work-aound is to add the following entry into your local > tool_data_table_conf.xml file located in your Galaxy installation directory. > > > line_type, value, path > >
> > Let us know if this still does not correct the problem. > > Greg Von Kuster > > On Aug 27, 2012, at 10:07 AM, Philip Mabon wrote: > > Any ideas anyone? > > Philip Mabon > Senior Bioinformatician > National Microbiology Laboratory > Public Health Agency of Canada > > > On Tue, Aug 21, 2012 at 10:34 AM, Philip Mabon wro= te: > >> I just upgrade our galaxy to the latest release : 7487:be81990d148a and >> ran the migration tool script for freebayes. >> >> I received the following error: >> >> No handlers could be found for logger "galaxy.tools" >> /opt/galaxy/galaxy_dist/eggs/pysam-0.4.2_kanwei_b10f6e722e9a-py2.6-linux-x= 86_64-ucs4.egg/pysam/__init__.py:1: >> RuntimeWarning: __builtin__.file size changed, may indicate binary >> incompatibility >> from csamtools import * >> Repositories will be installed into configured tool_path location >> ../shed_tools >> Adding new row (or updating an existing row) for repository 'freebayes' >> in the tool_shed_repository table. >> Traceback (most recent call last): >> File "./scripts/migrate_tools/migrate_tools.py", line 21, in >> app =3D MigrateToolsApplication( sys.argv[ 1 ] ) >> File "/opt/galaxy/galaxy_dist/lib/galaxy/tool_shed/migrate/common.py", >> line 150, in __init__ >> install_dependencies=3Dinstall_dependencies ) >> File "/opt/galaxy/galaxy_dist/lib/galaxy/tool_shed/install_manager.py", >> line 37, in __init__ >> self.install_repository( repository_elem, install_dependencies ) >> File "/opt/galaxy/galaxy_dist/lib/galaxy/tool_shed/install_manager.py", >> line 262, in install_repository >> install_dependencies=3Dinstall_dependencies ) >> File "/opt/galaxy/galaxy_dist/lib/galaxy/tool_shed/install_manager.py", >> line 150, in handle_repository_contents >> repository_tools_tups =3D get_repository_tools_tups( self.app, >> metadata_dict ) >> File "/opt/galaxy/galaxy_dist/lib/galaxy/util/shed_util.py", line 1077, >> in get_repository_tools_tups >> tool =3D app.toolbox.load_tool( os.path.abspath( relative_path ), >> guid=3Dguid ) >> File "/opt/galaxy/galaxy_dist/lib/galaxy/tools/__init__.py", line 452, >> in load_tool >> return ToolClass( config_file, root, self.app, guid=3Dguid ) >> File "/opt/galaxy/galaxy_dist/lib/galaxy/tools/__init__.py", line 790, >> in __init__ >> self.parse( root, guid=3Dguid ) >> File "/opt/galaxy/galaxy_dist/lib/galaxy/tools/__init__.py", line 961, >> in parse >> self.parse_inputs( root ) >> File "/opt/galaxy/galaxy_dist/lib/galaxy/tools/__init__.py", line 1045, >> in parse_inputs >> display, inputs =3D self.parse_input_page( page, enctypes ) >> File "/opt/galaxy/galaxy_dist/lib/galaxy/tools/__init__.py", line 1447, >> in parse_input_page >> inputs =3D self.parse_input_elem( input_elem, enctypes ) >> File "/opt/galaxy/galaxy_dist/lib/galaxy/tools/__init__.py", line 1514, >> in parse_input_elem >> case.inputs =3D self.parse_input_elem( case_elem, enctypes, context ) >> File "/opt/galaxy/galaxy_dist/lib/galaxy/tools/__init__.py", line 1470, >> in parse_input_elem >> group.inputs =3D self.parse_input_elem( elem, enctypes, context ) >> File "/opt/galaxy/galaxy_dist/lib/galaxy/tools/__init__.py", line 1540, >> in parse_input_elem >> param =3D self.parse_param_elem( elem, enctypes, context ) >> File "/opt/galaxy/galaxy_dist/lib/galaxy/tools/__init__.py", line 1552, >> in parse_param_elem >> param =3D ToolParameter.build( self, input_elem ) >> File "/opt/galaxy/galaxy_dist/lib/galaxy/tools/parameters/basic.py", >> line 176, in build >> return parameter_types[param_type]( tool, param ) >> File "/opt/galaxy/galaxy_dist/lib/galaxy/tools/parameters/basic.py", >> line 1361, in __init__ >> ToolParameter.__init__( self, tool, elem ) >> File "/opt/galaxy/galaxy_dist/lib/galaxy/tools/parameters/basic.py", >> line 43, in __init__ >> self.validators.append( validation.Validator.from_element( self, elem >> ) ) >> File >> "/opt/galaxy/galaxy_dist/lib/galaxy/tools/parameters/validation.py", line >> 23, in from_element >> return validator_types[type].from_element( param, elem ) >> File >> "/opt/galaxy/galaxy_dist/lib/galaxy/tools/parameters/validation.py", line >> 279, in from_element >> tool_data_table =3D param.tool.app.tool_data_tables[ table_name ] >> File "/opt/galaxy/galaxy_dist/lib/galaxy/tools/data/__init__.py", line >> 25, in __getitem__ >> return self.data_tables.__getitem__( key ) >> KeyError: 'sam_fa_indexes' >> >> >> What happen is that the freebayes itself installs correctly into >> the shed_tools/toolshed.g2.bx.psu.edu/repos/devteam/* but the dependency >> on samtools 1.1.8 fails. >> >> The value 'sam_fa_indexes' is present in the tool_data_table_conf.xml >> and I know it works since all my samtools are functional. >> >> The status column for the freebayes entry in the database is 'Cloning'. >> >> I get the same error if I try to install freebayes thru the web front >> end. ( Had to delete the row in the db and remove the freebayes install >> directory) >> >> Any ideas Greg? >> >> Thanks! >> >> Philip Mabon (Takadonet) >> Senior Bioinformatician >> National Microbiology Laboratory >> Public Health Agency of Canada > > > ___________________________________________________________ > Please keep all replies on the list by using "reply all" > in your mail client. To manage your subscriptions to this > and other Galaxy lists, please use the interface at: > > http://lists.bx.psu.edu/ > > > --===============0741999685670050865== Content-Type: text/html Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="attachment.htm" MIME-Version: 1.0 SSBhbHJlYWR5IGhhZCB0aGF0IGVudHJ5IHRvIHRoZSB0b29sX2RhdGFfdGFibGVfY29uZi54bWwg YnV0IHN0aWxsIGdldHRpbmcgdGhlIHNhbWUgZXJyb3IuPGRpdj48YnI+PC9kaXY+PGRpdj5BZnRl ciBzb21lIGRlYnVnZ2luZyBhbmQgcHJpbnQgc3RhdGVtZW50LCBJIGZvdW5kIHRoYXQgaXSgaW5p dGlhbGx5IGZpbmRzIHRoZSBjb3JyZWN0IHBhdGggdG8gdGhlICYjMzk7c2FtX2ZhX2luZGV4ZXMm IzM5OyB3aGVuIHJlYWRpbmcgdG9vbF9kYXRhX3RhYmxlX2NvbmYueG1sIGluIEdhbGF4eSBpbnN0 YWxsYXRpb24gZGlyZWN0b3J5IGJ1dCByZS1yZWFkcyBhbm90aGVyIGZpbGUgaW4gdGhlIHNoZWRf dG9vbHMgZGlyLjwvZGl2Pgo8ZGl2Pkl0JiMzOTtzIHRoZSBzYW1wbGUgdG9vbF9kYXRhX3RhYmxl X2NvbmYueG1sIGZyb20gdGhlIGZyZWViYXllcyBkaXJlY3RvcnkuPC9kaXY+PGRpdj4uLi9zaGVk X3Rvb2xzLzxhIGhyZWY9Imh0dHA6Ly90b29sc2hlZC5nMi5ieC5wc3UuZWR1L3JlcG9zL2RldnRl YW0vZnJlZWJheWVzLzIxM2EzZDZiNTc5YS9mcmVlYmF5ZXMvdG9vbF9kYXRhX3RhYmxlX2NvbmYu eG1sLnNhbXBsZSI+dG9vbHNoZWQuZzIuYngucHN1LmVkdS9yZXBvcy9kZXZ0ZWFtL2ZyZWViYXll cy8yMTNhM2Q2YjU3OWEvZnJlZWJheWVzL3Rvb2xfZGF0YV90YWJsZV9jb25mLnhtbC5zYW1wbGU8 L2E+LjwvZGl2Pgo8ZGl2Pjxicj48L2Rpdj48ZGl2Pk1heWJlIHRoZSCgdG9vbF9kYXRhX3RhYmxl X2NvbmYueG1sLnNhbXBsZSBpcyBpbnZhbGlkPzwvZGl2PjxkaXY+PGJyPjwvZGl2PlBoaWxpcCBN YWJvbjxicj5TZW5pb3IgQmlvaW5mb3JtYXRpY2lhbjxicj5OYXRpb25hbCBNaWNyb2Jpb2xvZ3kg TGFib3JhdG9yeTxicj5QdWJsaWMgSGVhbHRoIEFnZW5jeSBvZiBDYW5hZGEgPGJyPgo8YnI+PGJy PjxkaXYgY2xhc3M9ImdtYWlsX3F1b3RlIj5PbiBNb24sIEF1ZyAyNywgMjAxMiBhdCA5OjQxIEFN LCBHcmVnIFZvbiBLdXN0ZXIgPHNwYW4gZGlyPSJsdHIiPiZsdDs8YSBocmVmPSJtYWlsdG86Z3Jl Z0BieC5wc3UuZWR1IiB0YXJnZXQ9Il9ibGFuayI+Z3JlZ0BieC5wc3UuZWR1PC9hPiZndDs8L3Nw YW4+IHdyb3RlOjxicj48YmxvY2txdW90ZSBjbGFzcz0iZ21haWxfcXVvdGUiIHN0eWxlPSJtYXJn aW46MCAwIDAgLjhleDtib3JkZXItbGVmdDoxcHggI2NjYyBzb2xpZDtwYWRkaW5nLWxlZnQ6MWV4 Ij4KPGRpdiBzdHlsZT0id29yZC13cmFwOmJyZWFrLXdvcmQiPkhpIFBoaWxsaXAsPGRpdj48YnI+ PC9kaXY+PGRpdj5JJiMzOTttIG5vdCBhYmxlIHRvIHJlcHJvZHVjZSB0aGlzIGJlaGF2aW9yLCBz byBpdCYjMzk7cyBkaWZmaWN1bHQgdG8gZGV0ZXJtaW5lIHdoYXQgbWF5IGJlIHRoZSBjYXVzZS4g oEkgaGF2ZSBub3Qgc2VlbiBvdGhlcnMgaW4gdGhlIGNvbW11bml0eSBlbmNvdW50ZXIgdGhpcyBw cm9ibGVtLCBidXQgdGhhdCBtYXkgc2ltcGx5IGJlIGR1ZSB0byB0aGUgZmFjdCB0aGF0IG5vIG9u ZSBpcyB5ZXQgaW5zdGFsbGluZyB0aGUgZnJlZWJheWVzIHRvb2wgZnJvbSB0aGUgdG9vbCBzaGVk LjwvZGl2Pgo8ZGl2Pjxicj48L2Rpdj48ZGl2PkEgcG9zc2libGUgd29yay1hb3VuZCBpcyB0byBh ZGQgdGhlIGZvbGxvd2luZyBlbnRyeSBpbnRvIHlvdXIgbG9jYWwgdG9vbF9kYXRhX3RhYmxlX2Nv bmYueG1sIGZpbGUgbG9jYXRlZCBpbiB5b3VyIEdhbGF4eSBpbnN0YWxsYXRpb24gZGlyZWN0b3J5 LjwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+PGRpdj6gIKAgJmx0O3RhYmxlIG5hbWU9JnF1b3Q7 c2FtX2ZhX2luZGV4ZXMmcXVvdDsgY29tbWVudF9jaGFyPSZxdW90OyMmcXVvdDsmZ3Q7PC9kaXY+ CjxkaXY+oCCgIKAgoCAmbHQ7Y29sdW1ucyZndDtsaW5lX3R5cGUsIHZhbHVlLCBwYXRoJmx0Oy9j b2x1bW5zJmd0OzwvZGl2PjxkaXY+oCCgIKAgoCAmbHQ7ZmlsZSBwYXRoPSZxdW90O3Rvb2wtZGF0 YS9zYW1fZmFfaW5kaWNlcy5sb2MmcXVvdDsgLyZndDs8L2Rpdj48ZGl2PqAgoCAmbHQ7L3RhYmxl Jmd0OzwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+TGV0IHVzIGtub3cgaWYgdGhpcyBzdGlsbCBk b2VzIG5vdCBjb3JyZWN0IHRoZSBwcm9ibGVtLjwvZGl2Pgo8ZGl2Pjxicj48L2Rpdj48ZGl2Pkdy ZWcgVm9uIEt1c3RlcjwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+PGRpdj48ZGl2IGNsYXNzPSJo NSI+PGRpdj5PbiBBdWcgMjcsIDIwMTIsIGF0IDEwOjA3IEFNLCBQaGlsaXAgTWFib24gd3JvdGU6 PC9kaXY+PGJyPjwvZGl2PjwvZGl2PjxibG9ja3F1b3RlIHR5cGU9ImNpdGUiPjxkaXY+PGRpdiBj bGFzcz0iaDUiPkFueSBpZGVhcyBhbnlvbmU/PGRpdj4KPGJyIGNsZWFyPSJhbGwiPlBoaWxpcCBN YWJvbjxicj5TZW5pb3IgQmlvaW5mb3JtYXRpY2lhbjxicj5OYXRpb25hbCBNaWNyb2Jpb2xvZ3kg TGFib3JhdG9yeTxicj5QdWJsaWMgSGVhbHRoIEFnZW5jeSBvZiBDYW5hZGEgPGJyPgo8YnI+PGJy PjxkaXYgY2xhc3M9ImdtYWlsX3F1b3RlIj5PbiBUdWUsIEF1ZyAyMSwgMjAxMiBhdCAxMDozNCBB TSwgUGhpbGlwIE1hYm9uIDxzcGFuIGRpcj0ibHRyIj4mbHQ7PGEgaHJlZj0ibWFpbHRvOnBoaWxp cG1hYm9uQGdtYWlsLmNvbSIgdGFyZ2V0PSJfYmxhbmsiPnBoaWxpcG1hYm9uQGdtYWlsLmNvbTwv YT4mZ3Q7PC9zcGFuPiB3cm90ZTo8YnI+PGJsb2NrcXVvdGUgY2xhc3M9ImdtYWlsX3F1b3RlIiBz dHlsZT0ibWFyZ2luOjAgMCAwIC44ZXg7Ym9yZGVyLWxlZnQ6MXB4ICNjY2Mgc29saWQ7cGFkZGlu Zy1sZWZ0OjFleCI+Cgo8ZGl2IHN0eWxlPSJjb2xvcjpyZ2IoMzQsMzQsMzQpO2ZvbnQtc2l6ZTox M3B4O2ZvbnQtZmFtaWx5OmFyaWFsLHNhbnMtc2VyaWYiPkkganVzdCB1cGdyYWRlIG91ciBnYWxh eHkgdG8gdGhlIGxhdGVzdCByZWxlYXNlIDqgIDc0ODc6YmU4MTk5MGQxNDhhIGFuZCByYW4gdGhl IG1pZ3JhdGlvbiB0b29sIHNjcmlwdCBmb3IgZnJlZWJheWVzLqA8L2Rpdj4KPGRpdiBzdHlsZT0i Y29sb3I6cmdiKDM0LDM0LDM0KTtmb250LXNpemU6MTNweDtmb250LWZhbWlseTphcmlhbCxzYW5z LXNlcmlmIj48YnI+PC9kaXY+PGRpdiBzdHlsZT0iY29sb3I6cmdiKDM0LDM0LDM0KTtmb250LXNp emU6MTNweDtmb250LWZhbWlseTphcmlhbCxzYW5zLXNlcmlmIj4KSSByZWNlaXZlZCB0aGUgZm9s bG93aW5nIGVycm9yOjwvZGl2PjxkaXYgc3R5bGU9ImNvbG9yOnJnYigzNCwzNCwzNCk7Zm9udC1z aXplOjEzcHg7Zm9udC1mYW1pbHk6YXJpYWwsc2Fucy1zZXJpZiI+PGJyPjwvZGl2PjxkaXYgc3R5 bGU9ImNvbG9yOnJnYigzNCwzNCwzNCk7Zm9udC1zaXplOjEzcHg7Zm9udC1mYW1pbHk6YXJpYWws c2Fucy1zZXJpZiI+CjxkaXY+Tm8gaGFuZGxlcnMgY291bGQgYmUgZm91bmQgZm9yIGxvZ2dlciAm cXVvdDtnYWxheHkudG9vbHMmcXVvdDs8L2Rpdj48ZGl2Pi9vcHQvZ2FsYXh5L2dhbGF4eV9kaXN0 L2VnZ3MvcHlzYW0tMC40LjJfa2Fud2VpX2IxMGY2ZTcyMmU5YS1weTIuNi1saW51eC14ODZfNjQt dWNzNC5lZ2cvcHlzYW0vX19pbml0X18ucHk6MTogUnVudGltZVdhcm5pbmc6IF9fYnVpbHRpbl9f LmZpbGUgc2l6ZSBjaGFuZ2VkLCBtYXkgaW5kaWNhdGUgYmluYXJ5IGluY29tcGF0aWJpbGl0eTwv ZGl2PgoKCjxkaXY+oCBmcm9tIGNzYW10b29scyBpbXBvcnQgKjwvZGl2PjxkaXY+UmVwb3NpdG9y aWVzIHdpbGwgYmUgaW5zdGFsbGVkIGludG8gY29uZmlndXJlZCB0b29sX3BhdGggbG9jYXRpb24g oC4uL3NoZWRfdG9vbHM8L2Rpdj48ZGl2PkFkZGluZyBuZXcgcm93IChvciB1cGRhdGluZyBhbiBl eGlzdGluZyByb3cpIGZvciByZXBvc2l0b3J5ICYjMzk7ZnJlZWJheWVzJiMzOTsgaW4gdGhlIHRv b2xfc2hlZF9yZXBvc2l0b3J5IHRhYmxlLjwvZGl2PgoKCjxkaXY+VHJhY2ViYWNrIChtb3N0IHJl Y2VudCBjYWxsIGxhc3QpOjwvZGl2PjxkaXY+oCBGaWxlICZxdW90Oy4vc2NyaXB0cy9taWdyYXRl X3Rvb2xzL21pZ3JhdGVfdG9vbHMucHkmcXVvdDssIGxpbmUgMjEsIGluICZsdDttb2R1bGUmZ3Q7 PC9kaXY+PGRpdj6gIKAgYXBwID0gTWlncmF0ZVRvb2xzQXBwbGljYXRpb24oIHN5cy5hcmd2WyAx IF0gKTwvZGl2PjxkaXY+oCBGaWxlICZxdW90Oy9vcHQvZ2FsYXh5L2dhbGF4eV9kaXN0L2xpYi9n YWxheHkvdG9vbF9zaGVkL21pZ3JhdGUvY29tbW9uLnB5JnF1b3Q7LCBsaW5lIDE1MCwgaW4gX19p bml0X188L2Rpdj4KCgo8ZGl2PqAgoCBpbnN0YWxsX2RlcGVuZGVuY2llcz1pbnN0YWxsX2RlcGVu ZGVuY2llcyApPC9kaXY+PGRpdj6gIEZpbGUgJnF1b3Q7L29wdC9nYWxheHkvZ2FsYXh5X2Rpc3Qv bGliL2dhbGF4eS90b29sX3NoZWQvaW5zdGFsbF9tYW5hZ2VyLnB5JnF1b3Q7LCBsaW5lIDM3LCBp biBfX2luaXRfXzwvZGl2PjxkaXY+oCCgIHNlbGYuaW5zdGFsbF9yZXBvc2l0b3J5KCByZXBvc2l0 b3J5X2VsZW0sIGluc3RhbGxfZGVwZW5kZW5jaWVzICk8L2Rpdj4KCgo8ZGl2PqAgRmlsZSAmcXVv dDsvb3B0L2dhbGF4eS9nYWxheHlfZGlzdC9saWIvZ2FsYXh5L3Rvb2xfc2hlZC9pbnN0YWxsX21h bmFnZXIucHkmcXVvdDssIGxpbmUgMjYyLCBpbiBpbnN0YWxsX3JlcG9zaXRvcnk8L2Rpdj48ZGl2 PqAgoCBpbnN0YWxsX2RlcGVuZGVuY2llcz1pbnN0YWxsX2RlcGVuZGVuY2llcyApPC9kaXY+PGRp dj6gIEZpbGUgJnF1b3Q7L29wdC9nYWxheHkvZ2FsYXh5X2Rpc3QvbGliL2dhbGF4eS90b29sX3No ZWQvaW5zdGFsbF9tYW5hZ2VyLnB5JnF1b3Q7LCBsaW5lIDE1MCwgaW4gaGFuZGxlX3JlcG9zaXRv cnlfY29udGVudHM8L2Rpdj4KCgo8ZGl2PqAgoCByZXBvc2l0b3J5X3Rvb2xzX3R1cHMgPSBnZXRf cmVwb3NpdG9yeV90b29sc190dXBzKCBzZWxmLmFwcCwgbWV0YWRhdGFfZGljdCApPC9kaXY+PGRp dj6gIEZpbGUgJnF1b3Q7L29wdC9nYWxheHkvZ2FsYXh5X2Rpc3QvbGliL2dhbGF4eS91dGlsL3No ZWRfdXRpbC5weSZxdW90OywgbGluZSAxMDc3LCBpbiBnZXRfcmVwb3NpdG9yeV90b29sc190dXBz PC9kaXY+PGRpdj6gIKAgdG9vbCA9IGFwcC50b29sYm94LmxvYWRfdG9vbCggb3MucGF0aC5hYnNw YXRoKCByZWxhdGl2ZV9wYXRoICksIGd1aWQ9Z3VpZCApPC9kaXY+CgoKPGRpdj6gIEZpbGUgJnF1 b3Q7L29wdC9nYWxheHkvZ2FsYXh5X2Rpc3QvbGliL2dhbGF4eS90b29scy9fX2luaXRfXy5weSZx dW90OywgbGluZSA0NTIsIGluIGxvYWRfdG9vbDwvZGl2PjxkaXY+oCCgIHJldHVybiBUb29sQ2xh c3MoIGNvbmZpZ19maWxlLCByb290LCBzZWxmLmFwcCwgZ3VpZD1ndWlkICk8L2Rpdj48ZGl2PqAg RmlsZSAmcXVvdDsvb3B0L2dhbGF4eS9nYWxheHlfZGlzdC9saWIvZ2FsYXh5L3Rvb2xzL19faW5p dF9fLnB5JnF1b3Q7LCBsaW5lIDc5MCwgaW4gX19pbml0X188L2Rpdj4KCgo8ZGl2PqAgoCBzZWxm LnBhcnNlKCByb290LCBndWlkPWd1aWQgKTwvZGl2PjxkaXY+oCBGaWxlICZxdW90Oy9vcHQvZ2Fs YXh5L2dhbGF4eV9kaXN0L2xpYi9nYWxheHkvdG9vbHMvX19pbml0X18ucHkmcXVvdDssIGxpbmUg OTYxLCBpbiBwYXJzZTwvZGl2PjxkaXY+oCCgIHNlbGYucGFyc2VfaW5wdXRzKCByb290ICk8L2Rp dj48ZGl2PqAgRmlsZSAmcXVvdDsvb3B0L2dhbGF4eS9nYWxheHlfZGlzdC9saWIvZ2FsYXh5L3Rv b2xzL19faW5pdF9fLnB5JnF1b3Q7LCBsaW5lIDEwNDUsIGluIHBhcnNlX2lucHV0czwvZGl2PgoK CjxkaXY+oCCgIGRpc3BsYXksIGlucHV0cyA9IHNlbGYucGFyc2VfaW5wdXRfcGFnZSggcGFnZSwg ZW5jdHlwZXMgKTwvZGl2PjxkaXY+oCBGaWxlICZxdW90Oy9vcHQvZ2FsYXh5L2dhbGF4eV9kaXN0 L2xpYi9nYWxheHkvdG9vbHMvX19pbml0X18ucHkmcXVvdDssIGxpbmUgMTQ0NywgaW4gcGFyc2Vf aW5wdXRfcGFnZTwvZGl2PjxkaXY+oCCgIGlucHV0cyA9IHNlbGYucGFyc2VfaW5wdXRfZWxlbSgg aW5wdXRfZWxlbSwgZW5jdHlwZXMgKTwvZGl2PgoKCjxkaXY+oCBGaWxlICZxdW90Oy9vcHQvZ2Fs YXh5L2dhbGF4eV9kaXN0L2xpYi9nYWxheHkvdG9vbHMvX19pbml0X18ucHkmcXVvdDssIGxpbmUg MTUxNCwgaW4gcGFyc2VfaW5wdXRfZWxlbTwvZGl2PjxkaXY+oCCgIGNhc2UuaW5wdXRzID0gc2Vs Zi5wYXJzZV9pbnB1dF9lbGVtKCBjYXNlX2VsZW0sIGVuY3R5cGVzLCBjb250ZXh0ICk8L2Rpdj48 ZGl2PqAgRmlsZSAmcXVvdDsvb3B0L2dhbGF4eS9nYWxheHlfZGlzdC9saWIvZ2FsYXh5L3Rvb2xz L19faW5pdF9fLnB5JnF1b3Q7LCBsaW5lIDE0NzAsIGluIHBhcnNlX2lucHV0X2VsZW08L2Rpdj4K Cgo8ZGl2PqAgoCBncm91cC5pbnB1dHMgPSBzZWxmLnBhcnNlX2lucHV0X2VsZW0oIGVsZW0sIGVu Y3R5cGVzLCBjb250ZXh0ICk8L2Rpdj48ZGl2PqAgRmlsZSAmcXVvdDsvb3B0L2dhbGF4eS9nYWxh eHlfZGlzdC9saWIvZ2FsYXh5L3Rvb2xzL19faW5pdF9fLnB5JnF1b3Q7LCBsaW5lIDE1NDAsIGlu IHBhcnNlX2lucHV0X2VsZW08L2Rpdj48ZGl2PqAgoCBwYXJhbSA9IHNlbGYucGFyc2VfcGFyYW1f ZWxlbSggZWxlbSwgZW5jdHlwZXMsIGNvbnRleHQgKTwvZGl2PgoKCjxkaXY+oCBGaWxlICZxdW90 Oy9vcHQvZ2FsYXh5L2dhbGF4eV9kaXN0L2xpYi9nYWxheHkvdG9vbHMvX19pbml0X18ucHkmcXVv dDssIGxpbmUgMTU1MiwgaW4gcGFyc2VfcGFyYW1fZWxlbTwvZGl2PjxkaXY+oCCgIHBhcmFtID0g VG9vbFBhcmFtZXRlci5idWlsZCggc2VsZiwgaW5wdXRfZWxlbSApPC9kaXY+PGRpdj6gIEZpbGUg JnF1b3Q7L29wdC9nYWxheHkvZ2FsYXh5X2Rpc3QvbGliL2dhbGF4eS90b29scy9wYXJhbWV0ZXJz L2Jhc2ljLnB5JnF1b3Q7LCBsaW5lIDE3NiwgaW4gYnVpbGQ8L2Rpdj4KCgo8ZGl2PqAgoCByZXR1 cm4gcGFyYW1ldGVyX3R5cGVzW3BhcmFtX3R5cGVdKCB0b29sLCBwYXJhbSApPC9kaXY+PGRpdj6g IEZpbGUgJnF1b3Q7L29wdC9nYWxheHkvZ2FsYXh5X2Rpc3QvbGliL2dhbGF4eS90b29scy9wYXJh bWV0ZXJzL2Jhc2ljLnB5JnF1b3Q7LCBsaW5lIDEzNjEsIGluIF9faW5pdF9fPC9kaXY+PGRpdj6g IKAgVG9vbFBhcmFtZXRlci5fX2luaXRfXyggc2VsZiwgdG9vbCwgZWxlbSApPC9kaXY+CgoKPGRp dj6gIEZpbGUgJnF1b3Q7L29wdC9nYWxheHkvZ2FsYXh5X2Rpc3QvbGliL2dhbGF4eS90b29scy9w YXJhbWV0ZXJzL2Jhc2ljLnB5JnF1b3Q7LCBsaW5lIDQzLCBpbiBfX2luaXRfXzwvZGl2PjxkaXY+ oCCgIHNlbGYudmFsaWRhdG9ycy5hcHBlbmQoIHZhbGlkYXRpb24uVmFsaWRhdG9yLmZyb21fZWxl bWVudCggc2VsZiwgZWxlbSApICk8L2Rpdj48ZGl2PqAgRmlsZSAmcXVvdDsvb3B0L2dhbGF4eS9n YWxheHlfZGlzdC9saWIvZ2FsYXh5L3Rvb2xzL3BhcmFtZXRlcnMvdmFsaWRhdGlvbi5weSZxdW90 OywgbGluZSAyMywgaW4gZnJvbV9lbGVtZW50PC9kaXY+CgoKPGRpdj6gIKAgcmV0dXJuIHZhbGlk YXRvcl90eXBlc1t0eXBlXS5mcm9tX2VsZW1lbnQoIHBhcmFtLCBlbGVtICk8L2Rpdj48ZGl2PqAg RmlsZSAmcXVvdDsvb3B0L2dhbGF4eS9nYWxheHlfZGlzdC9saWIvZ2FsYXh5L3Rvb2xzL3BhcmFt ZXRlcnMvdmFsaWRhdGlvbi5weSZxdW90OywgbGluZSAyNzksIGluIGZyb21fZWxlbWVudDwvZGl2 PjxkaXY+oCCgIHRvb2xfZGF0YV90YWJsZSA9IHBhcmFtLnRvb2wuYXBwLnRvb2xfZGF0YV90YWJs ZXNbIHRhYmxlX25hbWUgXTwvZGl2PgoKCjxkaXY+oCBGaWxlICZxdW90Oy9vcHQvZ2FsYXh5L2dh bGF4eV9kaXN0L2xpYi9nYWxheHkvdG9vbHMvZGF0YS9fX2luaXRfXy5weSZxdW90OywgbGluZSAy NSwgaW4gX19nZXRpdGVtX188L2Rpdj48ZGl2PqAgoCByZXR1cm4gc2VsZi5kYXRhX3RhYmxlcy5f X2dldGl0ZW1fXygga2V5ICk8L2Rpdj48ZGl2PktleUVycm9yOiAmIzM5O3NhbV9mYV9pbmRleGVz JiMzOTs8L2Rpdj48L2Rpdj4KCjxkaXYgc3R5bGU9ImNvbG9yOnJnYigzNCwzNCwzNCk7Zm9udC1z aXplOjEzcHg7Zm9udC1mYW1pbHk6YXJpYWwsc2Fucy1zZXJpZiI+Cjxicj48L2Rpdj48ZGl2IHN0 eWxlPSJjb2xvcjpyZ2IoMzQsMzQsMzQpO2ZvbnQtc2l6ZToxM3B4O2ZvbnQtZmFtaWx5OmFyaWFs LHNhbnMtc2VyaWYiPjxicj48L2Rpdj48ZGl2IHN0eWxlPSJjb2xvcjpyZ2IoMzQsMzQsMzQpO2Zv bnQtc2l6ZToxM3B4O2ZvbnQtZmFtaWx5OmFyaWFsLHNhbnMtc2VyaWYiPgpXaGF0IGhhcHBlbiBp cyB0aGF0IHRoZSBmcmVlYmF5ZXMgaXRzZWxmIGluc3RhbGxzIGNvcnJlY3RseSBpbnRvIHRoZaBz aGVkX3Rvb2xzLzxhIGhyZWY9Imh0dHA6Ly90b29sc2hlZC5nMi5ieC5wc3UuZWR1L3JlcG9zL2Rl dnRlYW0vKiIgc3R5bGU9ImNvbG9yOnJnYigxNyw4NSwyMDQpIiB0YXJnZXQ9Il9ibGFuayI+dG9v bHNoZWQuZzIuYngucHN1LmVkdS9yZXBvcy9kZXZ0ZWFtLyo8L2E+oGJ1dCB0aGUgZGVwZW5kZW5j eSBvbiBzYW10b29scyAxLjEuOCBmYWlscy48L2Rpdj4KCgo8ZGl2IHN0eWxlPSJjb2xvcjpyZ2Io MzQsMzQsMzQpO2ZvbnQtc2l6ZToxM3B4O2ZvbnQtZmFtaWx5OmFyaWFsLHNhbnMtc2VyaWYiPjxi cj48L2Rpdj48ZGl2IHN0eWxlPSJjb2xvcjpyZ2IoMzQsMzQsMzQpO2ZvbnQtc2l6ZToxM3B4O2Zv bnQtZmFtaWx5OmFyaWFsLHNhbnMtc2VyaWYiPgpUaGUgdmFsdWUgJiMzOTtzYW1fZmFfaW5kZXhl cyYjMzk7IGlzIHByZXNlbnQgaW4gdGhloHRvb2xfZGF0YV90YWJsZV9jb25mLnhtbCCgYW5kIEkg a25vdyBpdCB3b3JrcyBzaW5jZSBhbGwgbXkgc2FtdG9vbHMgYXJlIGZ1bmN0aW9uYWwuPC9kaXY+ PGRpdiBzdHlsZT0iY29sb3I6cmdiKDM0LDM0LDM0KTtmb250LXNpemU6MTNweDtmb250LWZhbWls eTphcmlhbCxzYW5zLXNlcmlmIj4KPGJyPjwvZGl2PjxkaXYgc3R5bGU9ImNvbG9yOnJnYigzNCwz NCwzNCk7Zm9udC1zaXplOjEzcHg7Zm9udC1mYW1pbHk6YXJpYWwsc2Fucy1zZXJpZiI+VGhlIHN0 YXR1cyBjb2x1bW4gZm9yIHRoZSBmcmVlYmF5ZXMgZW50cnkgaW4gdGhlIGRhdGFiYXNlIGlzICYj Mzk7Q2xvbmluZyYjMzk7LqA8L2Rpdj48ZGl2IHN0eWxlPSJjb2xvcjpyZ2IoMzQsMzQsMzQpO2Zv bnQtc2l6ZToxM3B4O2ZvbnQtZmFtaWx5OmFyaWFsLHNhbnMtc2VyaWYiPgoKCjxicj48L2Rpdj48 ZGl2IHN0eWxlPSJjb2xvcjpyZ2IoMzQsMzQsMzQpO2ZvbnQtc2l6ZToxM3B4O2ZvbnQtZmFtaWx5 OmFyaWFsLHNhbnMtc2VyaWYiPkkgZ2V0IHRoZSBzYW1lIGVycm9yIGlmIEkgdHJ5IHRvIGluc3Rh bGwgZnJlZWJheWVzIHRocnUgdGhlIHdlYiBmcm9udCBlbmQuICggSGFkIHRvIGRlbGV0ZSB0aGUg cm93IGluIHRoZSBkYiBhbmQgcmVtb3ZlIHRoZSBmcmVlYmF5ZXMgaW5zdGFsbCBkaXJlY3Rvcnkp PC9kaXY+CgoKPGRpdiBzdHlsZT0iY29sb3I6cmdiKDM0LDM0LDM0KTtmb250LXNpemU6MTNweDtm b250LWZhbWlseTphcmlhbCxzYW5zLXNlcmlmIj48YnI+PC9kaXY+PGRpdiBzdHlsZT0iY29sb3I6 cmdiKDM0LDM0LDM0KTtmb250LXNpemU6MTNweDtmb250LWZhbWlseTphcmlhbCxzYW5zLXNlcmlm Ij4KQW55IGlkZWFzIEdyZWc/PC9kaXY+PGRpdiBzdHlsZT0iY29sb3I6cmdiKDM0LDM0LDM0KTtm b250LXNpemU6MTNweDtmb250LWZhbWlseTphcmlhbCxzYW5zLXNlcmlmIj48YnI+PC9kaXY+PGRp diBzdHlsZT0iY29sb3I6cmdiKDM0LDM0LDM0KTtmb250LXNpemU6MTNweDtmb250LWZhbWlseTph cmlhbCxzYW5zLXNlcmlmIj4KVGhhbmtzITwvZGl2PjxiciBjbGVhcj0iYWxsIiBzdHlsZT0iY29s b3I6cmdiKDM0LDM0LDM0KTtmb250LXNpemU6MTNweDtmb250LWZhbWlseTphcmlhbCxzYW5zLXNl cmlmIj48c3BhbiBzdHlsZT0iY29sb3I6cmdiKDM0LDM0LDM0KTtmb250LXNpemU6MTNweDtmb250 LWZhbWlseTphcmlhbCxzYW5zLXNlcmlmIj5QaGlsaXAgTWFib24gKFRha2Fkb25ldCk8L3NwYW4+ PGJyIHN0eWxlPSJjb2xvcjpyZ2IoMzQsMzQsMzQpO2ZvbnQtc2l6ZToxM3B4O2ZvbnQtZmFtaWx5 OmFyaWFsLHNhbnMtc2VyaWYiPgoKCjxzcGFuIHN0eWxlPSJjb2xvcjpyZ2IoMzQsMzQsMzQpO2Zv bnQtc2l6ZToxM3B4O2ZvbnQtZmFtaWx5OmFyaWFsLHNhbnMtc2VyaWYiPlNlbmlvciBCaW9pbmZv cm1hdGljaWFuPC9zcGFuPjxiciBzdHlsZT0iY29sb3I6cmdiKDM0LDM0LDM0KTtmb250LXNpemU6 MTNweDtmb250LWZhbWlseTphcmlhbCxzYW5zLXNlcmlmIj4KPHNwYW4gc3R5bGU9ImNvbG9yOnJn YigzNCwzNCwzNCk7Zm9udC1zaXplOjEzcHg7Zm9udC1mYW1pbHk6YXJpYWwsc2Fucy1zZXJpZiI+ TmF0aW9uYWwgTWljcm9iaW9sb2d5IExhYm9yYXRvcnk8L3NwYW4+PGJyIHN0eWxlPSJjb2xvcjpy Z2IoMzQsMzQsMzQpO2ZvbnQtc2l6ZToxM3B4O2ZvbnQtZmFtaWx5OmFyaWFsLHNhbnMtc2VyaWYi Pgo8c3BhbiBzdHlsZT0iY29sb3I6cmdiKDM0LDM0LDM0KTtmb250LXNpemU6MTNweDtmb250LWZh bWlseTphcmlhbCxzYW5zLXNlcmlmIj5QdWJsaWMgSGVhbHRoIEFnZW5jeSBvZiBDYW5hZGE8L3Nw YW4+CjwvYmxvY2txdW90ZT48L2Rpdj48YnI+PC9kaXY+PC9kaXY+PC9kaXY+Cl9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fPGJyPlBsZWFz ZSBrZWVwIGFsbCByZXBsaWVzIG9uIHRoZSBsaXN0IGJ5IHVzaW5nICZxdW90O3JlcGx5IGFsbCZx dW90Ozxicj5pbiB5b3VyIG1haWwgY2xpZW50LiCgVG8gbWFuYWdlIHlvdXIgc3Vic2NyaXB0aW9u cyB0byB0aGlzPGJyPmFuZCBvdGhlciBHYWxheHkgbGlzdHMsIHBsZWFzZSB1c2UgdGhlIGludGVy ZmFjZSBhdDo8YnI+Cjxicj4goDxhIGhyZWY9Imh0dHA6Ly9saXN0cy5ieC5wc3UuZWR1LyIgdGFy Z2V0PSJfYmxhbmsiPmh0dHA6Ly9saXN0cy5ieC5wc3UuZWR1LzwvYT48L2Jsb2NrcXVvdGU+PC9k aXY+PGJyPjwvZGl2PjwvZGl2PjwvYmxvY2txdW90ZT48L2Rpdj48YnI+Cg== --===============0741999685670050865==--