<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>The Test Manager Blog &#187; code</title>
	<atom:link href="http://www.thetestmanager.com/blog/category/code/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.thetestmanager.com</link>
	<description>One managers thoughts on Cyber Security &#38; the testing industry.</description>
	<lastBuildDate>Wed, 08 Sep 2010 10:21:25 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=7565</generator>
		<item>
		<title>The selected file was generated by mysqldump and cannot be restored by this application.</title>
		<link>http://www.thetestmanager.com/blog/2010/07/20/the-selected-file-was-generated-by-mysqldump-and-cannot-be-restored-by-this-application/</link>
		<comments>http://www.thetestmanager.com/blog/2010/07/20/the-selected-file-was-generated-by-mysqldump-and-cannot-be-restored-by-this-application/#comments</comments>
		<pubDate>Tue, 20 Jul 2010 14:47:16 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[SQL]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[tips]]></category>

		<guid isPermaLink="false">http://www.thetestmanager.com/?p=283</guid>
		<description><![CDATA[How to fix the-selected-file-was-generated-by-mysqldump-and-cannot-be-restored-by-this-application error. This post is here more of a reminder to myself. However I&#8217;m hoping that others will find it useful also. I was testing out a piece of code which needed a new MYSQL InnoDB restored. I had a slight issue ad when I attempted to restore the DB via the [...]]]></description>
			<content:encoded><![CDATA[<div class="wp-caption alignleft" style="width: 210px"><img title="My SQL logo" src="http://www.thetestmanager.com//pics/Blog/mysql%20logo.png" alt="MySQL Logo" width="200" height="103" /><p class="wp-caption-text">MYSQL</p></div>
<p>How to fix <cite><strong>the-selected</strong>-<strong>file-was-generated-by-mysqldump-and-cannot-be-restored-by-this-application</strong> error.</cite></p>
<p><cite> </cite>This post is here more of a reminder to myself. However I&#8217;m hoping that others will find it useful also.</p>
<p>I was testing out a piece of code which needed a new MYSQL InnoDB restored.</p>
<p>I had a slight issue ad when I attempted to restore the DB via the MySQL Administrator tool I got the following error message.</p>
<p><strong>&#8220;The selected file was generated by mysqldump and cannot be restored by this application.&#8221;</strong></p>
<p>This error is given usually when the Backup was taken via a batch job (or just a user who is using the command line).<strong> </strong></p>
<p>Becuase of this the only way to restore the DB is again via the command line.</p>
<p>So carry out the following steps.</p>
<p>Firstly find the MySQL.exe file, (this will usually be stored in the installation bin folder)</p>
<p>then run the following using the command line.</p>
<blockquote><p><strong>C:\Program Files\MySQL\MySQL Server 5.0\bin&gt;mysql.exe -uusername -ppassword &lt; &#8220;C:\DB Backups\nameofbackupfile.sql&#8221;</strong></p></blockquote>
<p>The -uusername should be something like -uroot</p>
<p>and the -ppassword should be something like -psecret</p>
<p>Hope it helps.</p>
<p>Martin H</p>
<p><strong><br />
</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.thetestmanager.com/blog/2010/07/20/the-selected-file-was-generated-by-mysqldump-and-cannot-be-restored-by-this-application/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Verifying that the Text from a DataSource Exists in a WebTest Response VSTS</title>
		<link>http://www.thetestmanager.com/blog/2010/07/05/verifying-that-the-text-from-a-datasource-exists-in-a-webtest-response-vsts/</link>
		<comments>http://www.thetestmanager.com/blog/2010/07/05/verifying-that-the-text-from-a-datasource-exists-in-a-webtest-response-vsts/#comments</comments>
		<pubDate>Mon, 05 Jul 2010 15:38:39 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Testing]]></category>
		<category><![CDATA[VSTS]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[productivity]]></category>
		<category><![CDATA[tips]]></category>
		<category><![CDATA[tools]]></category>

		<guid isPermaLink="false">http://www.thetestmanager.com/?p=267</guid>
		<description><![CDATA[I use Visual Studio Team Testers Edition everyday at work and one of the things that seemed really strange to me was that Microsoft had missed so many tricks when they decided to release it. Maybe they just decided to build in reasons for users to upgrade,  knowing that there will always be another version [...]]]></description>
			<content:encoded><![CDATA[<div class="wp-caption alignleft" style="width: 222px"><img class="  " title="Visual Studio - VSTS Logo" src="http://www.thetestmanager.com/pics/Blog/Visual Studio Team System.jpg" alt="Visual Studio VSTS Logo" width="212" height="113" /><p class="wp-caption-text">Visual Studio Webtest Logo </p></div>
<p>I use Visual Studio Team Testers Edition everyday at work and one of the things that seemed really strange to me was that Microsoft had missed so many tricks when they decided to release it.</p>
<p>Maybe they just decided to build in reasons for users to upgrade,  knowing that there will always be another version of VSTS around the corner.</p>
<p>One of the things which is sorely missing is the ability to verify HTML source code against a datasource. Sure you can load a data source and then verify what is returned on the page when that row of the data-source is called however there is no functionality to check that the value of the row that you have submitted is returned somewhere in the HTML source (known as the response in VSTS).</p>
<p>So as per usual when you need something doing then, do it yourself, and hence I wrote a small piece of code that looks at the source code and then checks the value of the datasource row to make sure that the item you are submitting is returned in the HTML response.</p>
<p>All the data is dynamic from your source so you can&#8217;t just hard code validation rules, as there could be thousands of rows.</p>
<p>For an example take a Google search test. Imagine I want to check that my datasource of 10,000 records is retuned on every response.</p>
<p>So if I search for &#8220;<a target="_blank" href="http://www.thetestmanager.com/blog/goto/http://www.google.co.uk/#hl=en&amp;source=hp&amp;q=System+Testers&amp;btnG=Google+Search" title="Searching Google for System Testers"  target="_blank">System Testers</a>&#8221; as a parameter value</p>
<p>&#8220;Parameter Name = q&#8221; and</p>
<p>&#8220;Parameter Value = Google DataSource.Directory_03062010#csv.SearchParams&#8221;</p>
<p>In the above QueryString Parameter you can see</p>
<p>the Datasource is called  &#8220;Google DataSource&#8221;</p>
<p>the Actual FileName is &#8220;Directory_03062010&#8243; (and it&#8217;s a CSV file)</p>
<p>the Column name is SearchParams</p>
<p>I&#8217;ve commented my code to make it easier to understand however if you need any help just ask.</p>
<p><strong>Code Below. </strong></p>
<address>&#8216;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br />
&#8216;Author  = Martin Hall<br />
&#8216;Purpose = To load text from a DataSource and then to compare that text<br />
&#8216;           against the source code on the page your testing.<br />
&#8216;Date = 07th June 2010<br />
&#8216;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;</p>
<p>Imports System<br />
Imports System.ComponentModel<br />
Imports Microsoft.VisualStudio.TestTools.WebTesting</p>
<p>Namespace RegressionSampleWebTestRules<br />
Public Class RegressionAllHeadingLocationsRule<br />
Inherits Microsoft.VisualStudio.TestTools.WebTesting.ValidationRule</p>
<p>&#8216;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br />
&#8216; Specify a name for use in the user interface.<br />
&#8216; The user sees this name in the Add Validation dialog box.<br />
&#8216;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br />
Public Overrides ReadOnly Property RuleName() As String<br />
Get<br />
Return &#8220;RegressionAllHeadingLocationsRule&#8221;<br />
End Get<br />
End Property<br />
&#8216;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br />
&#8216; Specify a description for use in the user interface.<br />
&#8216; The user sees this description in the Add Validation dialog box.<br />
&#8216;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br />
Public Overrides ReadOnly Property RuleDescription() As String<br />
Get<br />
Return &#8220;This should Compare text from a datasource parameter in a CSV file against the page sourcecode.&#8221;<br />
End Get<br />
End Property</p>
<p>&#8216; The name of the expected string<br />
Private ExpectedStringValue As String</p>
<p>Public Property ExpectedString() As String<br />
Get<br />
Return ExpectedStringValue<br />
End Get<br />
Set(ByVal value As String)<br />
ExpectedStringValue = value<br />
End Set<br />
End Property</p>
<p>&#8216;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br />
&#8216; Validate is called with the test case Context and the request context.<br />
&#8216; These allow the rule to examine both the request and the response.<br />
&#8216;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br />
Public Overrides Sub Validate(ByVal sender As Object, ByVal e As ValidationEventArgs)<br />
Try</p>
<p>Dim result2 As String<br />
&#8216;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br />
&#8216;we only want request2 to match the source code on the returned web page.<br />
&#8216;the SourceCode could be different on the other pages.<br />
&#8216;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br />
result2 = (e.WebTest.Context(&#8220;Google DataSource.Directory_03062010#csv.SearchParams&#8221;).ToString())</p>
<p>&#8216;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br />
&#8216;This should check the response for text<br />
&#8216;The text in question is the ParamValue we are supplying as new fake<br />
&#8216;parameter name and value<br />
&#8216;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;</p>
<p>If e.Response.BodyString.ToLower.Contains(result2) = False Then<br />
e.IsValid = False<br />
e.Message = (&#8220;fail &#8211; - &#8220;) &amp; result2<br />
End If</p>
<p>If e.Response.BodyString.ToLower.Contains(result2) Then<br />
e.IsValid = True<br />
e.Message = (&#8220;pass &#8211; - &#8220;) &amp; result2<br />
End If</p>
<p>Catch ex As Exception<br />
End Try<br />
End Sub</p>
<p>End Class</p>
<p>End Namespace</p>
</address>
<address> </address>
<p><strong>/End Code. </strong></p>
<p>The above script is in Visual Basic.Net and it should work for you and if you need any help in how to install and run it then either <a target="_blank" href="http://www.thetestmanager.com/contact/" title="Email the Test Manager"  target="_blank">send an email</a> or reply in the comments.</p>
<p>One last thing to mention is that the values from the data source are loaded in a fake Parameter Name (<em>Just make one up</em>) which will be ignored by the Website however it will show as a Context Name in the Visual Studio Web Test, so we are really just comparing two Context Names</p>
<p>Good Luck</p>
<p>Martin H</p>
]]></content:encoded>
			<wfw:commentRss>http://www.thetestmanager.com/blog/2010/07/05/verifying-that-the-text-from-a-datasource-exists-in-a-webtest-response-vsts/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MySQL Search for text inside all Stored Procedures</title>
		<link>http://www.thetestmanager.com/blog/2010/05/10/mysql-search-for-text-inside-all-stored-procedures/</link>
		<comments>http://www.thetestmanager.com/blog/2010/05/10/mysql-search-for-text-inside-all-stored-procedures/#comments</comments>
		<pubDate>Mon, 10 May 2010 11:34:30 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[SQL]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[productivity]]></category>
		<category><![CDATA[tips]]></category>

		<guid isPermaLink="false">http://www.thetestmanager.com/?p=238</guid>
		<description><![CDATA[This little piece of MySQL Code I wrote a month or so ago. I had a defect and was trying to provide some decent feedback to the developer  on Test-Track (our defect logging system). I knew that the defect was in a stored procedure and to attempt to run profiler in Mysql can be a [...]]]></description>
			<content:encoded><![CDATA[<div class="wp-caption alignleft" style="width: 210px"><img title="SQL Logo" src="http://www.thetestmanager.com//pics/Blog/mysql%20logo.png" alt="MySQL Logo" width="200" height="103" /><p class="wp-caption-text">MySQL Logo</p></div>
<p>This little piece of MySQL Code I wrote a month or so ago.</p>
<p>I had a defect and was trying to provide some decent feedback to the developer  on Test-Track (our defect logging system).</p>
<p>I knew that the defect was in a stored procedure and to attempt to run profiler in Mysql can be a bit of a pain so I figured that I&#8217;d work out a way to search in every Stroed Proc for the bit of code causing the error.</p>
<p>I knew that the error was caused by the peice of code calling &#8220;Videos&#8221;.</p>
<p>I looked around on the net but I couldn&#8217;t find anything that suited.  I did find one other piece of sample code but I found that that only search inside the first 256 chars of the Stored Procedure and I needed something that would search inside the whole of the procedure no matter how long it was.</p>
<p>Once again it&#8217;s a nice and simple piece of code.</p>
<p>&#8211; Author : Martin Hall<br />
&#8211; Date 09th April 2010<br />
&#8211; Search for Text inside a MySQL Stored Proc<br />
&#8211; MYSQL Version<br />
&#8211; See the Like Query for an example of Use.</p>
<p>SELECT * FROM INFORMATION_SCHEMA.ROUTINES<br />
WHERE ROUTINE_DEFINITION LIKE &#8220;%video%&#8221;<br />
Order by Routine_Name;</p>
<p>Hope you find it useful.</p>
<p>any issues then let me know.</p>
<p>Martin H</p>
]]></content:encoded>
			<wfw:commentRss>http://www.thetestmanager.com/blog/2010/05/10/mysql-search-for-text-inside-all-stored-procedures/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MYSQL Search for Table or Column names in a Database</title>
		<link>http://www.thetestmanager.com/blog/2010/04/12/mysql-search-for-table-or-column-names-in-a-database/</link>
		<comments>http://www.thetestmanager.com/blog/2010/04/12/mysql-search-for-table-or-column-names-in-a-database/#comments</comments>
		<pubDate>Mon, 12 Apr 2010 11:00:42 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[SQL]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[productivity]]></category>
		<category><![CDATA[tips]]></category>

		<guid isPermaLink="false">http://www.thetestmanager.com/?p=226</guid>
		<description><![CDATA[You may remember that about three weeks ago I posted a handy script to search for the names of Tables and Columns in a Microsoft SQL database. Well now today it&#8217;s the turn of MySql. Just a nice and simple script as before however this time there are two seperate scripts one for tables and [...]]]></description>
			<content:encoded><![CDATA[<div class="wp-caption alignleft" style="width: 210px"><img title="mysql logo" src="http://www.thetestmanager.com//pics/Blog/mysql logo.png" alt="mysql logo" width="200" height="103" /><p class="wp-caption-text">mysql logo</p></div>
<p>You may remember that about three weeks ago I posted a handy script to search for the names of Tables and Columns in a Microsoft SQL database.</p>
<p>Well now today it&#8217;s the turn of MySql.</p>
<p>Just a nice and simple script as before however this time there are two seperate scripts one for tables and one for columns names.</p>
<p>&#8211; Author : Martin Hall<br />
&#8211; Date 09th April 2010<br />
&#8211; Search Table or Column for text<br />
&#8211; MYSQL Version<br />
&#8211; Top query for Table Names and bottom query for column names</p>
<p>SELECT * FROM INFORMATION_SCHEMA.COLUMNS<br />
WHERE TABLE_NAME like &#8216;%users%&#8217;<br />
Order by table_name asc;</p>
<p>SELECT * FROM INFORMATION_SCHEMA.COLUMNS<br />
WHERE Column_NAME like &#8216;%video%&#8217;<br />
Order by column_name asc;</p>
<p>Enjoy.</p>
<p>Martin H</p>
]]></content:encoded>
			<wfw:commentRss>http://www.thetestmanager.com/blog/2010/04/12/mysql-search-for-table-or-column-names-in-a-database/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Search Stored Procedures for string/text</title>
		<link>http://www.thetestmanager.com/blog/2010/03/30/search-stored-procedures-for-stringtext/</link>
		<comments>http://www.thetestmanager.com/blog/2010/03/30/search-stored-procedures-for-stringtext/#comments</comments>
		<pubDate>Tue, 30 Mar 2010 10:28:55 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[SQL]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[tips]]></category>

		<guid isPermaLink="false">http://www.thetestmanager.com/?p=219</guid>
		<description><![CDATA[OK so just like the post below about searching for columns or table names. This post is all about how to search inside Stored Procedures for strings / text. This can be really useful especially if you know a piece of code is called but your not sure which stored proc calls it. As before [...]]]></description>
			<content:encoded><![CDATA[<div class="wp-caption alignleft" style="width: 350px"><img title="SQL Code" src="http://www.thetestmanager.com/blog/wp-content/uploads/2010/03/SQL%20Code.png" alt="SQL Code" width="340" height="172" /><p class="wp-caption-text">SQL Code</p></div>
<p>OK so just like the post below about <a target="_blank" href="http://www.thetestmanager.com/blog/2010/03/30/check-if-column-or-table-exists-in-sql-db/" title="Search Text Column Table Name SQL"  target="_blank">searching for columns or table names.</a> This post is all about how to search inside Stored Procedures for strings / text.</p>
<p>This can be really useful especially if you know a piece of code is called but your not sure which stored proc calls it.</p>
<p>As before we are going to use the &#8216;users&#8217; string to keep consistency.</p>
<p>I had searched high and low for this code on the internet but couldn&#8217;t find anything. All of the examples I found only searched in the first 255 characters of stored procedure which is OK if its a declaration your looking for however not too good if your stored proc has unions and has declarations half way down the procedure. So I decided to write my own.</p>
<p>Anyway on with the script. (really nice and simple)</p>
<p>&#8211; Author : Martin Hall<br />
&#8211; Date 17th February 2010<br />
&#8211; Search Stored Procedures for Text. (see Definition like)</p>
<p>SELECT Name<br />
FROM sys.procedures<br />
WHERE OBJECT_DEFINITION(object_id) LIKE &#8216;%users%&#8217;</p>
<p>Hope you Enjoy</p>
]]></content:encoded>
			<wfw:commentRss>http://www.thetestmanager.com/blog/2010/03/30/search-stored-procedures-for-stringtext/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Increase All Data in an SQL DateTime Column by a Year.</title>
		<link>http://www.thetestmanager.com/blog/2010/03/16/increase-all-data-in-an-sql-datetime-column-by-a-year/</link>
		<comments>http://www.thetestmanager.com/blog/2010/03/16/increase-all-data-in-an-sql-datetime-column-by-a-year/#comments</comments>
		<pubDate>Tue, 16 Mar 2010 10:50:23 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[SQL]]></category>
		<category><![CDATA[Testing]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[tips]]></category>

		<guid isPermaLink="false">http://www.thetestmanager.com/?p=199</guid>
		<description><![CDATA[I was recently testing a rarely used piece of functionality on one of the sites which belong to the company I work for. The test DB was very old as releases for this part of the system come very few and far between. The system is written in such a way that data is only [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft" title="SQL Code - SQL Logo" src="http://www.thetestmanager.com/pics/Blog/SQL Code.png" alt="" width="204" height="103" /> I was recently testing a rarely used piece of functionality on one of the sites which belong to the company I work for. The test DB was very old as releases for this part of the system come very few and far between.</p>
<p>The system is written in such a way that data is only returned to the end user for data for a the last 12 months , (1 Year). The database in question had not been updated for about 18 months and it would have taken about 5 days for me to get a decent backup from the live system restored to test.</p>
<p>The data in the Test Database was valid it was just a little too old to be returned via the front User Interface (GUI).</p>
<p>What I needed was a nice and easy way to bring the date column in the database forward by year.</p>
<p>Obviously for good practice I also requested the live DB dump to be sent over just to completeness of testing. But to test this piece of functionality it wasn&#8217;t needed.</p>
<p>The following is the SQL query (Transact-SQL) I cobbled together to get the job done.</p>
<p>It will do a select first to see if you have any data in a particular financial year (2009 and 2010).</p>
<p>It will then update all 2009 data to read 2010. So 01-Feb-2009 becomes 01-Feb-2010 and 23rd June 2009 becomes 23rd June 2010.</p>
<p>It will then carry out the same select query it did before. If all has gone well the 2009 data should be blank and the 2010 field should be populated.</p>
<p>In any update script I write I always input a select before the update and the same select after the update. This way I and any other users using my script can see if the update has worked.</p>
<p>Now the code.</p>
<blockquote><p>SELECT     YEAR(ColumnName) AS ColumnNameYear<br />
FROM         TableName<br />
GROUP BY YEAR(ColumnName)<br />
HAVING      (YEAR(ColumnName) = 2010) OR<br />
(YEAR(ColumnName) = 2009)</p>
<p>UPDATE    TableName<br />
Set  ColumnName = dateadd(yy,1, ColumnName)<br />
WHERE     DATEPART(year, ColumnName) = &#8217;2009&#8242;</p>
<p>SELECT     YEAR(ColumnName) AS ColumnNameYear<br />
FROM         TableName<br />
GROUP BY YEAR(ColumnName)<br />
HAVING      (YEAR(ColumnName) = 2010) OR<br />
(YEAR(ColumnName) = 2009)</p></blockquote>
<p>Hope you find it useful.</p>
<p>And I&#8217;m sure there are many more ways of coding this much simplier but I&#8217;m a tester and not a coder and for me it works.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.thetestmanager.com/blog/2010/03/16/increase-all-data-in-an-sql-datetime-column-by-a-year/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Lets Break Something</title>
		<link>http://www.thetestmanager.com/blog/2009/06/26/lets-break-something/</link>
		<comments>http://www.thetestmanager.com/blog/2009/06/26/lets-break-something/#comments</comments>
		<pubDate>Fri, 26 Jun 2009 16:04:50 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Testing]]></category>
		<category><![CDATA[code]]></category>

		<guid isPermaLink="false">http://www.thetestmanager.com/?p=130</guid>
		<description><![CDATA[The title is a little misleading as the one thing I think that testers do not do, is to break developers code. Instead we should working with them to help find as many potential issues before our customers do. (think of it as a department that carries out a specialised peer review) However as a [...]]]></description>
			<content:encoded><![CDATA[<div id="attachment_131" class="wp-caption alignleft" style="width: 210px"><a target="_blank" href="http://www.thetestmanager.com/blog/wp-content/uploads/2009/06/Smash.jpg" ><img class="size-full wp-image-131" title="Smash...some...code" src="http://www.thetestmanager.com/blog/wp-content/uploads/2009/06/Smash.jpg" alt="Lets Break some code" width="200" height="155" /></a><p class="wp-caption-text">Lets Break some code</p></div>
<p>The title is a little misleading as the one thing I think that testers do not do, is to break developers code.</p>
<p>Instead we should working with them to help find as many potential issues before our customers do.</p>
<p>(think of it as a department that carries out a specialised peer review)</p>
<p>However as a tester you need to have a few tricks up your sleeve which enable you to quickly punish an application.</p>
<p>The following strings will usually cause most web-enabled applications to perform strange functions or just plain fall over in a heap.</p>
<p>Each separate line is a separate test.</p>
<p>I have created a bespoke parameter fuzzer which I load my list into and 99% of the time I get a fail in a web-application.</p>
<p>You can also use my <a target="_blank" href="http://www.thetestmanager.com/url-encoder-decoder/" title="URL decoder encoder - decode html chars"  target="_blank">URL Encoder / Decoder</a> to look a little deeper into the char-sets being used.</p>
<p><span id="more-130"></span>You then have to ask yourself what is the chance of someone inserting one of those chars.</p>
<p>Well let me you that most of them have come from logs and errors that I&#8217;ve seen in the wild. Once again ask your self does your application allow non alpha numerical chars. If it does then test away even if it doesn&#8217;t you can most likely crash the app.</p>
<p>I&#8217;ve also killed Firefox and given Google a headache with some of the inputs from this list. I didn&#8217;t have my debugger running so I couldn&#8217;t get full memory dumps to look into it further.</p>
<p>another fun thing is to poison cookies.  I&#8217;ve also done this and it creates a Denial of Service for the client. The web-application won&#8217;t load until the broken cookie is cleared.</p>
<p>Anyway I&#8217;ve had the list for a while now I&#8217;m constantly adding stuff to it like</p>
<p>̵̵̵̵̵̵̡̢̡̢̡̢̡̢̡̢̡̢̛̛̛̛̛̛̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̚̚̚̚̚̚ ̵̵̵̵̵̵̡̢̡̢̡̢̡̢̡̢̡̢̛̛̛̛̛̛̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̚̚̚̚̚̚ ̵̵̵̵̵̵̡̢̡̢̡̢̡̢̡̢̡̢̛̛̛̛̛̛̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̚̚̚̚̚̚ ̵̵̵̵̵̵̡̢̡̢̡̢̡̢̡̢̡̢̛̛̛̛̛̛̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̚̚̚̚̚̚ ̵̵̵̵̵̵̡̢̡̢̡̢̡̢̡̢̡̢̛̛̛̛̛̛̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̚̚̚̚̚̚ how many chars do you think that is? (it&#8217;s actually over 650 &#8211; paste it into a google search box to see what I mean)</p>
<p>also  are all non-existent html characters (Do you allow them to be entered into your application or database).</p>
<p>If you do then you may have issues especially as XML etc can&#8217;t render them.</p>
<p>Anyway have fun.</p>
<p><br />
�<br />
41%C2%C3%B1%42%<br />
41 ñB%<br />
41ÂÃ±B%<br />
TheTestManager.com%C3%TheTestManager.com*%C3%TheTestManager.com%C3%TheTestManager.com*%C3%9FTheTestManager.com*%C3%9FTheTestManager.com*/<br />
ÃTheTestManager.com*ÃTheTestManager.comÃTheTestManager.com*ÃTheTestManager.com*ÃTheTestManager.com#test<br />
*ßÃTheTestManager.comßTheTestManager.com*ßTheTestManager.com*ßTheTestManager.com*/<br />
<br />
̵̵̵̵̵̵̡̢̡̢̡̢̡̢̡̢̡̢̛̛̛̛̛̛̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̚̚̚̚̚̚<br />
thetestmanager.com<br />
̵̡̢̛̗̘̙̜̝̞̟̠͇̊̋̌̍̎̏̿̿̿̚ ҉ ҉҉̡̢̡̢̛̛̖̗̘̙̜̝̞̟̠<br />
̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚v<br />
ÚúÙùŬŭÛûǓǔŮůÜüǗǘǛǜǙǚǕǖŰűŨũṸṹŲųŪūṺṻỦủȔȕȖȗƯưỨứỪừỮữỬửỰựỤụṲṳṶṷṴṵɄʉᵾᶙ<br />
ȺⱥɃƀȻȼĐđɆɇǤǥĦħƗɨɈɉꝀꝁŁłØøⱣᵽɌɍŦŧɄʉɎɏƵƶꝤꝥ<br />
̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̛̛̛̛̛̛̛̛̛̛̛̛̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚<br />
̵̵̵̵̵̵̵̵̵̵̵̵̵̵̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̛̛̛̛̛̛̛̛̛̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̚̚̚̚̚̚̚̚̚̚̚̚̚̚ ̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚ ̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚ ̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̛̛̛̛̛̛̛̛̛̛̛̛̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚<br />
¸.•*´¨`*•.♥♥.•*´¨`*•&#8217;<br />
¸.•*´¨`*•<br />
̵̵̵̵̡̢̡̢̡̢̛̛̛̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̚̚̚̚<br />
̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̡̢̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̛̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̝̞̟̠͇̗̘̙̜̝̞̟̠͇̗̘̙̜̝̞̟̠͇̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̊̋̌̍̎̏̿̿̿̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚̚<br />
`¬¦!&#8221;£$%^&amp;*()_+-=][;'#/.,\/*-+.<br />
<br />
{%{%0d{%n{}|\^[]`{–{‘||6}~<br />
¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼<br />
¼script¾document.vulnerable=true;¼/script¾<br />
½¾ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×Ø<br />
ÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿŠ‘’€<br />
?<br />
@<br />
@@version<br />
AAAAA%I<br />
AAAAA%c<br />
AAAAA%d<br />
AAAAA%e<br />
AAAAA%f<br />
AAAAA%n<br />
AAAAA%o<br />
AAAAA%p<br />
AAAAA%s<br />
AAAAA%x<br />
\n<br />
\r\n<br />
]^_<br />
&#8216; &#8216;<br />
!<br />
&#8221;<br />
#<br />
$<br />
%<br />
&amp;<br />
&#8216;<br />
(<br />
)<br />
*<br />
+<br />
,<br />
-<br />
.<br />
/<br />
:<br />
;<br />
&lt;</p>
<p>=<br />
&gt;</p>
<p>?<br />
@<br />
[<br />
\<br />
]<br />
^<br />
_<br />
`<br />
{<br />
|<br />
}<br />
~<br />
&#8216; &#8217;<br />
¡<br />
¢<br />
£<br />
¤<br />
¥<br />
¦<br />
§<br />
¨<br />
©<br />
ª<br />
«<br />
¬<br />
­<br />
®</p>
<p>¯<br />
°<br />
±<br />
²<br />
³<br />
´<br />
µ<br />
¶<br />
·<br />
¸<br />
¹<br />
º<br />
»<br />
¼<br />
½<br />
¾<br />
¿<br />
À<br />
Á<br />
Â<br />
Ã<br />
Ä<br />
Å<br />
Æ<br />
Ç<br />
È<br />
É<br />
Ê<br />
Ë<br />
Ì<br />
Í<br />
Î<br />
Ï<br />
Ð<br />
Ñ<br />
Ò<br />
Ó<br />
Ô<br />
Õ<br />
Ö<br />
×<br />
Ø<br />
Ù<br />
Ú<br />
Û<br />
Ü<br />
Ý<br />
Þ<br />
ß<br />
à<br />
á<br />
â<br />
ã<br />
ä<br />
å<br />
æ<br />
ç<br />
è<br />
é<br />
ê<br />
ë<br />
ì<br />
í<br />
î<br />
ï<br />
ð<br />
ñ<br />
ò<br />
ó<br />
ô<br />
õ<br />
ö<br />
÷<br />
ø<br />
ù<br />
ú<br />
û<br />
ü<br />
ý<br />
þ<br />
ÿ<br />
←<br />
↑<br />
→<br />
↓<br />
↔<br />
↵</p>
<p>⇐<br />
⇑<br />
⇒<br />
⇓<br />
⇔<br />
Α<br />
Β<br />
Γ<br />
Δ<br />
Ε<br />
Ζ<br />
Η<br />
Θ<br />
Ι<br />
Κ<br />
Λ<br />
Μ<br />
Ν<br />
Ξ<br />
Ο<br />
Π<br />
Ρ<br />
Σ<br />
Τ<br />
Υ<br />
Φ<br />
Χ<br />
Ψ<br />
Ω<br />
α<br />
β<br />
γ<br />
δ<br />
ε<br />
ζ<br />
η<br />
θ<br />
ι<br />
κ<br />
λ<br />
μ<br />
ν<br />
ξ<br />
ο<br />
π<br />
ρ<br />
ς<br />
σ<br />
τ<br />
υ<br />
φ<br />
χ<br />
ψ<br />
ω<br />
ϑ<br />
ϒ<br />
ϖ<br />
∀<br />
∂<br />
∃<br />
∅<br />
∇<br />
∈<br />
∉<br />
∋<br />
∏<br />
∑<br />
−<br />
∗<br />
√<br />
∝<br />
∞<br />
∠<br />
⊥<br />
⊦<br />
∩<br />
∪<br />
∫<br />
∴<br />
∼<br />
≅<br />
≈<br />
≠<br />
≡<br />
≤<br />
≥<br />
⊂<br />
⊃<br />
⊄<br />
⊆<br />
⊇<br />
⊕<br />
⊗<br />
⊥<br />
⋅<br />
Œ<br />
œ<br />
Š<br />
š<br />
Ÿ<br />
ƒ<br />
℘<br />
ℑ<br />
ℜ<br />
™<br />
ℵ<br />
♠<br />
♣<br />
♥<br />
♦<br />
◊<br />
⌈<br />
⌉<br />
⌊<br />
⌋<br />
〈<br />
〉<br />
•<br />
…<br />
′<br />
″</p>
<p>‾</p>
<p>⁄<br />
‏–<br />
—<br />
‘<br />
’<br />
‚</p>
<p>“<br />
”<br />
„<br />
†<br />
‡<br />
‰<br />
‹<br />
›<br />
€<br />
ʉ<br />
҉</p>
<p></!--more--></p>
<p>Martin Hall</p>
]]></content:encoded>
			<wfw:commentRss>http://www.thetestmanager.com/blog/2009/06/26/lets-break-something/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Bookmarklets for a Web-Tester</title>
		<link>http://www.thetestmanager.com/blog/2009/02/12/bookmarklets-useful-for-a-web-tester/</link>
		<comments>http://www.thetestmanager.com/blog/2009/02/12/bookmarklets-useful-for-a-web-tester/#comments</comments>
		<pubDate>Thu, 12 Feb 2009 14:00:06 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Testing]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[productivity]]></category>
		<category><![CDATA[tools]]></category>

		<guid isPermaLink="false">http://www.thetestmanager.com/?p=14</guid>
		<description><![CDATA[In this post I want to give people a nice heads up to some of the tools I use in my daily role. These are bookmarklets which is just another word for bookmarks which contain javascript. I use these with firefox although IE and Opera should also fine fine for them also. In Firefox just [...]]]></description>
			<content:encoded><![CDATA[<div class="wp-caption alignleft" style="width: 403px"><img title="Code" src="http://farm3.static.flickr.com/2326/2378867408_4cc90791d6.jpg" alt="Code" width="393" height="295" /><p class="wp-caption-text">Code</p></div>
<p>In this post I want to give people a nice heads up to some of the tools I use in my daily role.</p>
<p>These are bookmarklets which is just another word for bookmarks which contain javascript.</p>
<p>I use these with firefox although IE and Opera should also fine fine for them also. In Firefox just add them to the bookmark toolbar and you&#8217;ll have them at your fingertips.</p>
<p><a href="javascript:(function(){C=document.cookie.split(%22;%20%22);for(d=%22.%22+location.host;d;d=(%22%22+d).substr(1).match(/\..*$/))for(sl=0;sl&lt;2;++sl)for(p=%22/%22+location.pathname;p;p=p.substring(0,p.lastIndexOf('/')))for(i%20in%20C)if(c=C[i]){document.cookie=c+%22;%20domain=%22+d.slice(sl)+%22;%20path=%22+p.slice(1)+%22/%22+%22;%20expires=%22+new%20Date((new%20Date).getTime()-1e11).toGMTString()}})()">Zap Cookies!</a> This will clear out any stored cookies for the current page/site</p>
<p><a href="javascript:void(document.cookie=prompt('Your%20cookie%20is%20currently:\n'+document.cookie,document.cookie));%20void%200">Edit Cookies!</a> This will allow you to edit and stored cookies for the current page/site</p>
<p><a href="javascript:alert('Cookies%20stored%20by%20this%20host%20or%20domain:\n\n'%20+%20document.cookie.replace(/;%20/g,'\n'));">View Cookies!</a> This does exactly what it states, it allows you to view and stored cookies for the current page/site</p>
<p><a href="javascript:document.body.contentEditable%20=%20'true';%20document.designMode='on';%20void%200">Edit Page</a></p>
<p>Allows you to edit any page you use this on. All changes are temporary of course and only visible to you.  (will you ever trust a web page screen shot again?). Not yet sure how this fits into the testing arena, however I though I would include it as someone may make decent use out of it.</p>
<p><a title="Find redirects" href="javascript:(%20function(){%20for%20(i=0;%20i%20&lt;%20document.links.length;%20i++)%20{%20if%20(document.links[i].href.match(/http:\/\/.*http(:|%253A)(\/|%252F)(\/|%252F)/i)){%20alert(document.links[i]);%20}%20}%20})();" target="_self">Find Redirects!</a> This should list any redirects for the current page, however its currently a tiny bit hit and miss and is does not work 100% of the time, it should however suffice for now and I&#8217;ll most likely have to rewrite this at some point in the near future.</p>
<p><a target="_blank" href="http://www.thetestmanager.com/blog/goto/javascript:(function(){var%20k,x,t,i,j,p;%20for(k=0;x=document.links[k];k++){t=x.href.replace(/[%]3A/ig,':').replace(/[%]2f/ig,'/');i=t.lastIndexOf('http');if(i&gt;0){%20t=t.substring(i);%20j=t.indexOf('&amp;');%20if(j&gt;0)t=t.substring(0,j);%20p=/https?\:\/\/[^\s]*[^.,;'%22&gt;\s\)\]]/.exec(unescape(t));%20if(p)%20x.href=p[0];%20}%20else%20if%20(x.onmouseover&amp;&amp;x.onmouseout){x.onmouseover();%20if%20(window.status%20&amp;&amp;%20window.status.indexOf('://" )!=-1)x.href=window.status;%20x.onmouseout();%20}%20x.onmouseover=null;%20x.onmouseout=null;%20}})();">remove redirects </a>Lets see what happens if we now remove those redirects we just found using the above Bookmarklet.</p>
<p><a target="_blank" href="http://www.thetestmanager.com/blog/goto/javascript:(function(){q=document.getSelection();%20if(!q){void(q=prompt('Wikipedia%20keywords:',''))};%20if(q)location.href='http://en.wikipedia.org/w/wiki.phtml?search=" +escape(q)})()">Wikipedia lookup</a> This allows you to select any text on a page and once clicked it will lookup that text on Wikipedia</p>
<p><a target="_blank" href="http://www.thetestmanager.com/blog/goto/javascript:q%20=%20%22%22%20+%20(window.getSelection%20?%20window.getSelection()%20:%20document.getSelection%20?%20document.getSelection()%20:%20document.selection.createRange().text);%20if%20(!q)%20q%20=%20prompt(%22You%20didn't%20select%20any%20text.%20%20Enter%20a%20search%20phrase:%22,%20%22%22);%20if%20(q!=null)%20location=(%22http://search.yahoo.com/search?p=site:%22%20+%20escape(location.hostname)%20+%20%22%20\%22%22%20+%20escape(q.replace(/\%22/g,%22%22))%20+%20%22\%22%22).replace(/%20/g,%20%22+%22);%20void%200" >Yahoo site search</a> This allows you to select any text on a page and once clicked it will search on Yahoo for more links from that domain with the same text.</p>
<p><a target="_blank" href="http://www.thetestmanager.com/blog/goto/javascript:document.location%20=%20'http://www.alexa.com/data/details/traffic_details?q=" %20+%20document.domain%20+%20'&amp;url='%20+%20document.domain;">Alexa</a> This will carry out a search at Alexa for the domain you were on when you clicked this bookmarklet.</p>
<p><a target="_blank" href="http://www.thetestmanager.com/blog/goto/javascript:document.location%20=%20'http://ha.ckers.org/weird/ipsearch.cgi?" title="msn ip search" %20+%20document.domain" target="_self">MSN IP Search</a> Firstly I should thank Robert Hansen (RSnake) for this one. Once clicked it will carry out an IP search which can help you detect a wider network for your testing.</p>
<p><a href="javascript:(function(){%20function%20selectColor(i)%20{%20return%20[%22#fdc%22,%20%22#cdf%22,%20%22#bfd%22,%20%22#dbf%22,%20%22#fbd%22]%20[i%5];%20}%20var%20u=location.href,%20ul=u.length;%20var%20tparts=[%22%22],%20zparts=[],%20nz=0;%20function%20isDigit(c)%20{%20return%20(%220%22%20&lt;=%20c%20&amp;&amp;%20c%20&lt;=%20%229%22);%20}%20for%20(i=0;%20i&lt;ul;%20)%20{%20for%20(;%20i&lt;ul%20&amp;&amp;%20!isDigit(u.charAt(i));%20++i)%20tparts[nz]%20+=%20u.charAt(i);%20if(i&lt;ul)%20{%20zparts[nz]=%22%22;%20for%20(;%20i&lt;ul%20&amp;&amp;%20isDigit(u.charAt(i));%20++i)%20zparts[nz]%20+=%20u.charAt(i);%20tparts[nz+1]=%22%22;%20++nz;%20}%20}%20if(!nz)%20{%20alert(%22No%20numbers%20in%20URL.%22);%20return;%20}%20D=window.open().document;%20D.write();%20D.close();%20function%20a(n)%20{%20A(D.body,n);%20}%20function%20A(p,n)%20{%20p.appendChild(n);%20}%20function%20E(q)%20{%20return%20D.createElement(q);%20}%20function%20cT(t)%20{%20return%20D.createTextNode(t)%20}%20function%20cBR()%20{%20return%20E(%22br%22);%20}%20function%20cS(t,ci)%20{%20var%20s=E(%22span%22);%20s.style.background=selectColor(ci);%20s.style.fontWeight=%22bold%22;%20A(s,%20cT(t));%20return%20s;%20}%20function%20cTB(v,oc)%20{%20var%20b=E(%22input%22);%20b.size=6;%20b.value=v;%20b.addEventListener(%22input%22,%20oc,%20false);%20return%20b;%20}%20function%20cCB(t,oc)%20{%20var%20L=E(%22label%22),%20b=E(%22input%22);%20b.type=%22checkbox%22;%20b.checked=true;%20b.onchange=oc;%20A(L,b);%20A(L,cT(t));%20return%20L;%20}%20function%20cL(nz,tparts,zparts)%20{%20var%20L=E(%22a%22);%20var%20u=%22%22;%20for%20(var%20i=0;%20i&lt;nz;%20++i)%20{%20A(L,cT(tparts[i]));%20A(L,cS(zparts[i],%20i));%20u%20+=%20tparts[i]+zparts[i];%20}%20A(L,cT(tparts[nz]));%20u%20+=%20tparts[nz];%20L.href=u;%20L.target=%22_blank%22;%20return%20L;%20}%20a(cT(%22Original%20URL:%20%22));%20a(cBR());%20a(cL(nz,%20tparts,%20zparts));%20a(cBR());%20a(cBR());%20var%20fromBoxes=[],%20toBoxes=[],%20padChecks=[];%20for%20(i=0;%20i&lt;nz;%20++i)%20{%20a(cT(%22Run%20%22));%20a(cS(zparts[i],%20i));%20a(cT(%22%20from%20%22));%20a(fromBoxes[i]=cTB(zparts[i],%20listURLs));%20a(cT(%22%20to%20%22));%20a(toBoxes[i]=cTB(zparts[i],%20listURLs));%20a(cT(%22%20(%22));%20a(j=cCB(%22%20Pad%20with%20zeroes%20to%20maintain%20length%22,%20listURLs));%20padChecks[i]=j.childNodes[0];%20a(cT(%22)%22));%20a(cBR());%20}%20a(cBR());%20resultDiv=E(%22div%22);%20a(resultDiv);%20listURLs();%20function%20listURLs()%20{%20while%20(resultDiv.childNodes.length)%20resultDiv.removeChild(resultDiv.childNodes[0]);%20var%20lows=[],%20highs=[];%20for%20(i=0;%20i&lt;nz;%20++i)%20{%20lows[i]=parseInt(fromBoxes[i].value,%2010);%20highs[i]=parseInt(toBoxes[i].value,%2010);%20if(highs[i]-lows[i]%20&gt;%20999)%20{%20A(resultDiv,%20cT(%22Too%20many%22));%20return;%20}%20}%20urls=[];%20function%20cb(sta)%20{%20var%20newzparts=[];%20for%20(var%20i=0;%20i&lt;nz;%20++i)%20{%20var%20z=%22%22+sta[i];%20if(padChecks[i].checked)%20while%20(z.length%20&lt;%20zparts[i].length)%20z=%220%22+z;%20newzparts[i]=z;%20}%20A(resultDiv,%20cL(nz,%20tparts,%20newzparts));%20A(resultDiv,%20cBR());%20}%20fors(nz,%20cb,%20lows,%20highs);%20}%20function%20fors%20(n,%20callback,%20lows,%20highs)%20{%20function%20fors_inner%20(states,%20v)%20{%20if(v%20&gt;=%20n)%20callback(states);%20else%20for%20(states[v]=lows[v];%20states[v]%20&lt;=%20highs[v];%20++(states[v]))%20fors_inner(states,%20v+1);%20}%20fors_inner%20([],%200);%20}%20})()">numbered list</a> One of my favourites this one. It allows you to make a nice numbered list of all parameters on the page which contain numbers.</p>
<p><a href="javascript:(function(){var%20i,f,j,e,div,label,ne;%20for(i=0;f=document.forms[i];++i)for(j=0;e=f[j];++j)if(e.type==%22hidden%22){%20D=document;%20function%20C(t){return%20D.createElement(t);}%20function%20A(a,b){a.appendChild(b);}%20div=C(%22div%22);%20label=C(%22label%22);%20A(div,%20label);%20A(label,%20D.createTextNode(e.name%20+%20%22:%20%22));%20e.parentNode.insertBefore(div,%20e);%20e.parentNode.removeChild(e);%20ne=C(%22input%22);/*for%20ie*/%20ne.type=%22text%22;%20ne.value=e.value;%20A(label,%20ne);%20label.style.MozOpacity=%22.6%22;%20--j;/*for%20moz*/}})()">show hiddens </a>This and Zap Cookies are my most used Bookmarklets. this one will display all hidden fields on a webpage and also allow you to edit them.</p>
<p><a href="javascript:(function(){var%20x,k,f,j;x=document.forms;for(k=0;k&lt;x.length;++k){f=x[k];for(j=0;j&lt;f.length;++j)f[j].removeAttribute(%22maxLength%22);}})()">remove maxlength </a>This will remove all the max lenghts from all input fields (think buffer overflows and code boundary issues)</p>
<p><a href="javascript:(function(){var%20x,k,f,j;x=document.forms;for%20(k=0;k&lt;x.length;++k){f=x[k];for(j=0;j&lt;f.length;++j){f[j].disabled=false;%20f[j].readOnly=false;}}})()">undisable </a>Who says you can&#8217;t click that button <img src='http://www.thetestmanager.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  . This Bookmarklet will enable any disabled objects on the page.</p>
<p><a href="javascript:if%20(location.pathname%20==%20%22/%22);%20else%20if%20(location.pathname.charAt(location.pathname.length-1)%20==%20%22/%22)%20location%20=%20%22..%22;%20else%20location%20=%20%22.%22;%20void%200">up </a>This will take you up one directory level in the site structure</p>
<p><a href="javascript:location.pathname%20=%20%22%22;%20void%200">top </a>This will take you to the top of the domain.</p>
<p><a href="javascript:(function(){%20var%20e,s;%20IB=-1;%20function%20isDigit(c)%20{%20return%20(%220%22%20&lt;=%20c%20&amp;&amp;%20c%20&lt;=%20%229%22)%20}%20L%20=%20location.href;%20LL%20=%20L.length;%20for%20(e=LL-1;%20e&gt;=0;%20--e)%20if%20(isDigit(L.charAt(e)))%20{%20for(s=e-1;%20s&gt;=0;%20--s)%20if%20(!isDigit(L.charAt(s)))%20break;%20break;%20}%20++s;%20if%20(e&lt;0)%20return;%20oldNum%20=%20L.substring(s,e+1);%20newNum%20=%20%22%22%20+%20(parseInt(oldNum,10)%20+%20IB);%20while%20(newNum.length%20&lt;%20oldNum.length)%20newNum%20=%20%220%22%20+%20newNum;%20location.href%20=%20L.substring(0,s)%20+%20newNum%20+%20L.slice(e+1);%20})();">decrement </a>If your URL ends in a number it will reduce it by one every click</p>
<p><a href="javascript:(function(){%20var%20e,s;%20IB=1;%20function%20isDigit(c)%20{%20return%20(%220%22%20&lt;=%20c%20&amp;&amp;%20c%20&lt;=%20%229%22)%20}%20L%20=%20location.href;%20LL%20=%20L.length;%20for%20(e=LL-1;%20e&gt;=0;%20--e)%20if%20(isDigit(L.charAt(e)))%20{%20for(s=e-1;%20s&gt;=0;%20--s)%20if%20(!isDigit(L.charAt(s)))%20break;%20break;%20}%20++s;%20if%20(e&lt;0)%20return;%20oldNum%20=%20L.substring(s,e+1);%20newNum%20=%20%22%22%20+%20(parseInt(oldNum,10)%20+%20IB);%20while%20(newNum.length%20&lt;%20oldNum.length)%20newNum%20=%20%220%22%20+%20newNum;%20location.href%20=%20L.substring(0,s)%20+%20newNum%20+%20L.slice(e+1);%20})();">increment </a>As above but the opposite</p>
<p><a href="javascript:(function(){var%20ims=document.images,%20brokenCount=0,%20brokenURLs=%22%22,%20text,%20i;%20for(i=0;i&lt;ims.length;++i)%20if%20(!%20(ims[i].naturalHeight%20||%20ims[i].fileSize%20&gt;%200))%20{%20++brokenCount;%20brokenURLs%20+=%20%22URL:%20%22%20+%20ims[i].src%20+%20%22\n%22;%20};%20text%20=%20brokenCount%20+%20%22%20broken%20image%22%20+%20(brokenCount==1?%22%22:%22s%22);%20if(brokenCount)%20alert(text%20+%20%22:\n\n%22%20+%20brokenURLs);%20else%20alert(%22No%20broken%20images.%22);%20})()">check images </a>This will check the current page for broken images.</p>
<p><a title="View Variables" href="javascript:(function(){var%20x,d,i,v,st;%20x=open();%20d=x.document;%20d.open();%20function%20hE(s){s=s.replace(/&amp;/g,%22&amp;%22);s=s.replace(/&gt;/g,%22&gt;%22);s=s.replace(/&lt;/g,%22&lt;%22);return%20s;}%20d.write(%22&lt;style&gt;td{vertical-align:top;%20white-space:pre;%20}%20table,td,th%20{%20border:%201px%20solid%20#ccc;%20}%20div.er%20{%20color:red%20}&lt;/style&gt;&lt;table%20border=1&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Variable&lt;/th&gt;&lt;th&gt;Type&lt;/th&gt;&lt;th&gt;Value%20as%20string&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;%22);%20for%20(i%20in%20window)%20{%20if%20(!(i%20in%20x)%20)%20{%20v=window[i];%20d.write(%22&lt;tr&gt;&lt;td&gt;%22%20+%20hE(i)%20+%20%22&lt;/td&gt;&lt;td&gt;%22%20+%20hE(typeof(window[i]))%20+%20%22&lt;/td&gt;&lt;td&gt;%22);%20if%20(v===null)%20d.write(%22null%22);%20else%20if%20(v===undefined)%20d.write(%22undefined%22);%20else%20try{st=v.toString();%20if%20(st.length)d.write(hE(v.toString()));%20else%20d.write(%22%C2%A0%22)}catch(er){d.write(%22&lt;div%20class=er&gt;%22+hE(er.toString())+%22&lt;/div&gt;%22)};%20d.write(%22&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;%22);%20}%20}%20d.write(%22&lt;/table&gt;%22);%20d.close();%20})();" target="_self">view variables </a>This will list all variable types found on the page. This is more for Developers than testers however its still a useful one to have.</p>
<p><a href="javascript:s=document.getElementsByTagName('SCRIPT');%20d=window.open().document;%20/*140681*/d.open();d.close();%20b=d.body;%20function%20trim(s){return%20s.replace(/^\s*\n/,%20'').replace(/\s*$/,%20'');%20};%20function%20add(h){b.appendChild(h);}%20function%20makeTag(t){return%20d.createElement(t);}%20function%20makeText(tag,text){t=makeTag(tag);t.appendChild(d.createTextNode(text));%20return%20t;}%20add(makeText('style',%20'iframe{width:100%;height:18em;border:1px%20solid;'));%20add(makeText('h3',%20d.title='Scripts%20in%20'%20+%20location.href));%20for(i=0;%20i&lt;s.length;%20++i)%20{%20if%20(s[i].src)%20{%20add(makeText('h4','script%20src=%22'%20+%20s[i].src%20+%20'%22'));%20iframe=makeTag('iframe');%20iframe.src=s[i].src;%20add(iframe);%20}%20else%20{%20add(makeText('h4','Inline%20script'));%20add(makeText('pre',%20trim(s[i].innerHTML)));%20}%20}%20void%200">view scripts </a>Like above however it will list all scripts what can be called on the current page.</p>
<p><a href="javascript:(function(){function%20toArray%20(c){var%20a,%20k;a=new%20Array;for%20(k=0;%20k%20&lt;%20c.length;%20++k)a[k]=c[k];return%20a;}var%20images,%20img,%20altText;images=toArray(document.images);for%20(var%20i=0;%20i%20&lt;%20images.length;%20++i){img=images[i];altText=document.createTextNode(img.alt);img.parentNode.replaceChild(altText,%20img)}})();">zap images </a>This should clear all of the images from the page. Works about 98% of the time. This script may need a little tweaking if I ever get the time.</p>
<p><a href="javascript:(function(){var%20i,c,x,h;%20for(i=0;x=document.links[i];++i)%20{%20h=x.href;%20x.title+=%22%20%22%20+%20x.innerHTML;%20while(c=x.firstChild)x.removeChild(c);%20x.appendChild(document.createTextNode(h));%20}%20})()">full urls as link text </a>Very useful if you want to see where a link is pointing to.</p>
<p>Enjoy</p>
<p>Martin H</p>
]]></content:encoded>
			<wfw:commentRss>http://www.thetestmanager.com/blog/2009/02/12/bookmarklets-useful-for-a-web-tester/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
