<?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>Silver Ringvee, Author at Reflective Data</title>
	<atom:link href="https://www.reflectivedata.com/author/silver-ringvee/feed/" rel="self" type="application/rss+xml" />
	<link>https://reflectivedata.com/author/silver-ringvee/</link>
	<description></description>
	<lastBuildDate>Mon, 22 May 2023 13:34:26 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://reflectivedata.com/wp-content/uploads/2016/09/cropped-new-favicon-2-32x32.png</url>
	<title>Silver Ringvee, Author at Reflective Data</title>
	<link>https://reflectivedata.com/author/silver-ringvee/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>[Medium] Hit-Level Unsampled Google Analytics to BigQuery Without 360</title>
		<link>https://www.reflectivedata.com/medium-hit-level-unsampled-google-analytics-data-to-bigquery-without-360/</link>
					<comments>https://www.reflectivedata.com/medium-hit-level-unsampled-google-analytics-data-to-bigquery-without-360/#respond</comments>
		
		<dc:creator><![CDATA[Silver Ringvee]]></dc:creator>
		<pubDate>Wed, 30 Dec 2020 11:11:11 +0000</pubDate>
				<category><![CDATA[BigQuery]]></category>
		<category><![CDATA[Data Pipeline]]></category>
		<category><![CDATA[Google Analytics]]></category>
		<category><![CDATA[Medium]]></category>
		<guid isPermaLink="false">http://reflectivedata.com/?p=7809</guid>

					<description><![CDATA[<p>Google Analytics and BigQuery, two tools that both the major players in their respective segments. Yet, there is no way to easily send raw hit-level data from one to another.</p>
<p>In this article, originally posted on medium.com, we're going to walk through the reasons you might want to access raw Google Analytics data in BigQuery and a few solutions that will get you there.</p>
<p>The post <a href="https://www.reflectivedata.com/medium-hit-level-unsampled-google-analytics-data-to-bigquery-without-360/">[Medium] Hit-Level Unsampled Google Analytics to BigQuery Without 360</a> appeared first on <a href="https://www.reflectivedata.com">Reflective Data</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Google Analytics and BigQuery, two tools that are both major players in their respective segments. Yet, there is no way to easily send raw hit-level data from one to another.</p>
<p>In this article, originally posted on <a href="https://medium.com/reflective-data/hit-level-unsampled-google-analytics-to-bigquery-without-360-a6a1477a5d3">medium.com</a>, we&#8217;re going to walk through the reasons you might want to access raw Google Analytics data in BigQuery and a few solutions that will get you there.</p>
<p>***</p>
<p id="baed" class="mq mr le vn b mt mu mv mw mx my mz na nb nc nd ne nf ng nh ni nj nk nl nm nn hw ci" data-selectable-paragraph="">Google Analytics is, without a doubt, the most popular tool in the digital analytics segment. Besides being the best tool for tracking e-commerce, content and lead-gen websites, with some modification you can use Google Analytics for <a class="co no" href="http://reflectivedata.com/using-google-analytics-for-tracking-saas/" rel="noopener nofollow">tracking SaaS</a> and other web apps as well.</p>
<p id="c028" class="mq mr le vn b mt mu mv mw mx my mz na nb nc nd ne nf ng nh ni nj nk nl nm nn hw ci" data-selectable-paragraph="">While being a really powerful and flexible tool, Google Analytics, too, has a few shortcomings. Perhaps the biggest problem every advanced user faces is the fact that there is no way to access raw hit-level data. The second major issue with Google Analytics is related to sampling and data collection limits.</p>
<p id="3c30" class="mq mr le vn b mt mu mv mw mx my mz na nb nc nd ne nf ng nh ni nj nk nl nm nn hw ci" data-selectable-paragraph="">Now, let’s take a look at some of the ways you can overcome these shortcomings without spending a ton on Google Analytics 360 — a premium version of Google Analytics that, to some extent, also eliminates these issues.</p>
<p id="d41b" class="mq mr le vn b mt mu mv mw mx my mz na nb nc nd ne nf ng nh ni nj nk nl nm nn hw ci" data-selectable-paragraph=""><em class="np">PS! If you already have GA 360, these techniques will give you an even more robust and flexible tracking solution.</em></p>
<h2 id="1778" class="nq nr le aw ep vo nt vp vq vr nv vs vt vu nx vv vw vx nz vy vz wa ob wb wc oc ci" data-selectable-paragraph="">Table of Contents</h2>
<p id="30c4" class="mq mr le vn b mt od mv mw mx oe mz na nb of nd ne nf og nh ni nj oh nl nm nn hw ci" data-selectable-paragraph="">– <a class="co no" href="https://medium.com/reflective-data/hit-level-unsampled-google-analytics-to-bigquery-without-360-a6a1477a5d3#84b5" rel="noopener">Sampling in Google Analytics</a><br />
– <a class="co no" href="https://medium.com/reflective-data/hit-level-unsampled-google-analytics-to-bigquery-without-360-a6a1477a5d3#166b" rel="noopener">Ways to avoid sampling in Google Analytics</a><br />
– <a class="co no" href="https://medium.com/reflective-data/hit-level-unsampled-google-analytics-to-bigquery-without-360-a6a1477a5d3#98f4" rel="noopener">Why do you even need the raw data</a><br />
– <a class="co no" href="https://medium.com/reflective-data/hit-level-unsampled-google-analytics-to-bigquery-without-360-a6a1477a5d3#633a" rel="noopener">How to get access to unsampled hit-level raw data</a><br />
– <a class="co no" href="https://medium.com/reflective-data/hit-level-unsampled-google-analytics-to-bigquery-without-360-a6a1477a5d3#11ea" rel="noopener">What about the price</a></p>
<p data-selectable-paragraph="">***</p>
<p><a href="https://medium.com/reflective-data/hit-level-unsampled-google-analytics-to-bigquery-without-360-a6a1477a5d3" target="_blank" rel="noopener">Read the full post on medium.com</a></p>
<p>The post <a href="https://www.reflectivedata.com/medium-hit-level-unsampled-google-analytics-data-to-bigquery-without-360/">[Medium] Hit-Level Unsampled Google Analytics to BigQuery Without 360</a> appeared first on <a href="https://www.reflectivedata.com">Reflective Data</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.reflectivedata.com/medium-hit-level-unsampled-google-analytics-data-to-bigquery-without-360/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>How to Avoid Google Analytics Sampling and Data Limits?</title>
		<link>https://www.reflectivedata.com/how-to-avoid-google-analytics-sampling-and-data-limits/</link>
					<comments>https://www.reflectivedata.com/how-to-avoid-google-analytics-sampling-and-data-limits/#comments</comments>
		
		<dc:creator><![CDATA[Silver Ringvee]]></dc:creator>
		<pubDate>Tue, 25 Aug 2020 13:27:30 +0000</pubDate>
				<category><![CDATA[BigQuery]]></category>
		<category><![CDATA[Data Pipeline]]></category>
		<category><![CDATA[Google Analytics]]></category>
		<category><![CDATA[Tools]]></category>
		<guid isPermaLink="false">http://reflectivedata.com/?p=4677</guid>

					<description><![CDATA[<p>Google Analytics, while being by far the most popular tool in its segment, does have a few limitations that can make this, otherwise nearly perfect tool, unsuitable for a large number of companies.</p>
<p>The main limitations of Google Analytics are related to sampling and data collection limits. Most affected are companies that can't afford the premium 360 version of Google Analytics (~150k/year) but still have a good amount of traffic visiting their websites. In general, Google Analytics properties with >1M sessions/month or >10M hits/month are being affected by some heavy sampling and data collection limits.</p>
<p>In this article, we're going to cover the different types of limitations present in the free version of Google Analytics and provide solutions/workarounds to all of them. Oh, and the solution, in most cases, does not include buying the 360 version.</p>
<p>The post <a href="https://www.reflectivedata.com/how-to-avoid-google-analytics-sampling-and-data-limits/">How to Avoid Google Analytics Sampling and Data Limits?</a> appeared first on <a href="https://www.reflectivedata.com">Reflective Data</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Google Analytics, while being by far the most popular tool in its segment, does have a few limitations that can make this, otherwise nearly perfect tool, unsuitable for a large number of companies.</p>
<p>The main limitations of Google Analytics are related to sampling and data collection limits. Most affected are companies that can&#8217;t afford the premium 360 version of Google Analytics (<a href="https://www.thirdandgrove.com/insights/is-google-analytics-360-worth-price-tag/" target="_blank" rel="noopener noreferrer">~150k/year</a>) but still have a good amount of traffic visiting their websites. In general, Google Analytics properties with &gt;1M sessions/month or &gt;10M hits/month are being affected by some heavy sampling and data collection limits.</p>
<p>In this article, we&#8217;re going to cover the different types of limitations present in the free version of Google Analytics and provide solutions/workarounds to all of them. Oh, and the solution, in most cases, does not include buying the 360 version.</p>
<h2>Types of limitations in Google Analytics</h2>
<p>Here&#8217;s a quick overview of the different types of limitations that come with the free version of Google Analytics.</p>
<h3>Sampling in reports</h3>
<p>Sampling on the reporting level means that, even if Google Analytics collected 100% of the hits, the reports you are seeing in the user interface are not based on 100% of those hits/sessions. In general, sampling starts if the period you are looking at <a href="https://support.google.com/analytics/answer/2637192" target="_blank" rel="noopener noreferrer">contains more than 500k sessions</a> in total. It can start a lot sooner, though, when more advanced custom segments are in use.</p>
<figure id="attachment_4693" aria-describedby="caption-attachment-4693" style="width: 499px" class="wp-caption aligncenter"><a  href="http://reflectivedata.com/wp-content/uploads/2020/08/sampling-in-google-analytics-reporting.png" data-rel="lightbox-gallery-0" data-rl_title="" data-rl_caption="" title=""><img fetchpriority="high" decoding="async" class="size-full wp-image-4693" src="http://reflectivedata.com/wp-content/uploads/2020/08/sampling-in-google-analytics-reporting.png" alt="Sampling in Google Analytics reports" width="499" height="133" /></a><figcaption id="caption-attachment-4693" class="wp-caption-text">Sampling in Google Analytics reports</figcaption></figure>
<h3>Data collection limits</h3>
<p>From the official <a href="https://support.google.com/analytics/answer/1070983" target="_blank" rel="noopener noreferrer">documentation</a>.</p>
<blockquote><p>If a property sends more hits per month to Analytics than allowed by the <a href="http://www.google.com/analytics/terms/us.html" target="_blank" rel="noopener noreferrer">Analytics Terms of Service</a>, there is no assurance that the excess hits will be processed. If the property&#8217;s hit volume exceeds this limit, a warning may be displayed in the user interface and you may be prevented from accessing reports.</p></blockquote>
<p>Data collection limits that apply to all free Google Analytics accounts.</p>
<ul>
<li>up to 10M hits total per month</li>
<li>200,000 hits per user per day</li>
<li>500 hits per session</li>
</ul>
<p><a  href="http://reflectivedata.com/wp-content/uploads/2020/08/Screenshot-2020-08-25-at-13.36.03.png" data-rel="lightbox-gallery-0" data-rl_title="" data-rl_caption="" title=""><img decoding="async" class="aligncenter size-full wp-image-5557" src="http://reflectivedata.com/wp-content/uploads/2020/08/Screenshot-2020-08-25-at-13.36.03.png" alt="Google Analytics Data Collection Limits" width="202" height="136" /></a></p>
<h3>Data processing latency</h3>
<p>Processing latency in Google Analytics is <a href="https://support.google.com/analytics/answer/1070983" target="_blank" rel="noopener noreferrer">up to 24-48 hours</a>. Standard accounts that send more than 200,000 sessions per day to Analytics will result in the reports being refreshed only once a day. This can delay updates to reports and metrics for up to two days.</p>
<p>This makes Google Analytics quite useless for things like monitoring real-time performance, detecting usability issues, automated reports on an hourly basis, real-time product recommendations, and other use cases that require fresh data (i.e. machine learning, marketing automation).</p>
<p><a  href="http://reflectivedata.com/wp-content/uploads/2020/08/Screenshot-2020-08-25-at-12.31.08.png" data-rel="lightbox-gallery-0" data-rl_title="" data-rl_caption="" title=""><img decoding="async" class="aligncenter size-full wp-image-5551" src="http://reflectivedata.com/wp-content/uploads/2020/08/Screenshot-2020-08-25-at-12.31.08.png" alt="Google Analytics data processing latency" width="872" height="201" srcset="https://reflectivedata.com/wp-content/uploads/2020/08/Screenshot-2020-08-25-at-12.31.08.png 872w, https://reflectivedata.com/wp-content/uploads/2020/08/Screenshot-2020-08-25-at-12.31.08-700x161.png 700w, https://reflectivedata.com/wp-content/uploads/2020/08/Screenshot-2020-08-25-at-12.31.08-768x177.png 768w" sizes="(max-width: 872px) 100vw, 872px" /></a></p>
<h3>Custom dimensions and metrics</h3>
<p>There are <a href="https://support.google.com/analytics/answer/2709828?hl=en" target="_blank" rel="noopener noreferrer">20 indices available</a> for different custom dimensions and 20 indices for custom metrics in each free Google Analytics property. 360 accounts have 200 indices available for custom dimensions and 200 for custom metrics.</p>
<p>While 20 is plenty for a small business with a simple website, this number can become quite limiting if you need custom dimensions for things like A/B testing data (one for each live experiment), e-commerce variables, user-specific information, and more.</p>
<p><a  href="http://reflectivedata.com/wp-content/uploads/2020/08/Screenshot-2020-08-25-at-12.27.43.png" data-rel="lightbox-gallery-0" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-5550" src="http://reflectivedata.com/wp-content/uploads/2020/08/Screenshot-2020-08-25-at-12.27.43.png" alt="Google Analytics custom dimensions and metrics limit" width="777" height="166" srcset="https://reflectivedata.com/wp-content/uploads/2020/08/Screenshot-2020-08-25-at-12.27.43.png 777w, https://reflectivedata.com/wp-content/uploads/2020/08/Screenshot-2020-08-25-at-12.27.43-700x150.png 700w, https://reflectivedata.com/wp-content/uploads/2020/08/Screenshot-2020-08-25-at-12.27.43-768x164.png 768w" sizes="(max-width: 777px) 100vw, 777px" /></a></p>
<h3>Aggregated metrics and no access to raw data</h3>
<p>Unfortunately, in the free version of Google Analytics, there is no way to access the raw hit-level data. This means that if the way it calculates certain metrics or aggregates hits into sessions doesn&#8217;t suit your business requirements then you&#8217;re out of luck – without access to raw data, you can&#8217;t define your own calculations or aggregations.</p>
<p>Also, in case you would like to analyze the user journey of a specific visitor, there is no way to easily query and analyze all hits from one visitor in a timely order.</p>
<p>Google Analytics 360 does have a BigQuery export but, by default, the metrics and sessions are still defined and pre-aggregated just like in the reports.</p>
<h3>Hit payload limited to 8000 bytes</h3>
<p>Depending on your analytics setup, some of your hits may include a lot data – ecommerce product impressions, several custom dimensions etc. The Google Analytics hit payload size is <a href="https://developers.google.com/analytics/devguides/collection/protocol/v1/reference" target="_blank" rel="noopener noreferrer">limited to 8000 bytes</a>, this means that all hits greater than this will be ignored by Google Analytics&#8217; data processing engine and your dataset ends up being incomplete. What&#8217;s worse, Google Analytics doesn&#8217;t alert you when this is happening!</p>
<p>This affects both the free and 360 versions of Google Analytics.</p>
<figure id="attachment_5548" aria-describedby="caption-attachment-5548" style="width: 1608px" class="wp-caption aligncenter"><a  href="http://reflectivedata.com/wp-content/uploads/2020/08/ga-maximum-payload-size.jpg" data-rel="lightbox-gallery-0" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" class="size-full wp-image-5548" src="http://reflectivedata.com/wp-content/uploads/2020/08/ga-maximum-payload-size.jpg" alt="Google Analytics hit payload length limit 8000 bytes" width="1608" height="428" srcset="https://reflectivedata.com/wp-content/uploads/2020/08/ga-maximum-payload-size.jpg 1608w, https://reflectivedata.com/wp-content/uploads/2020/08/ga-maximum-payload-size-700x186.jpg 700w, https://reflectivedata.com/wp-content/uploads/2020/08/ga-maximum-payload-size-1024x273.jpg 1024w, https://reflectivedata.com/wp-content/uploads/2020/08/ga-maximum-payload-size-768x204.jpg 768w, https://reflectivedata.com/wp-content/uploads/2020/08/ga-maximum-payload-size-1536x409.jpg 1536w" sizes="(max-width: 1608px) 100vw, 1608px" /></a><figcaption id="caption-attachment-5548" class="wp-caption-text"><a href="https://www.simoahava.com/analytics/send-google-analytics-payload-length-as-custom-dimension/" target="_blank" rel="noopener noreferrer">Source</a></figcaption></figure>
<h2>Workarounds to sampling and other limitations</h2>
<p>Now, let&#8217;s take a look at the same list of limitations and provide a solution/workaround to each of them.</p>
<h3>Sampling in reports</h3>
<p><strong>Option 1</strong> &#8211; Divide your queries into smaller chunks and join data using another tool (Excel, Pandas, R). This can be done manually in the UI, using the Reporting API, or by using a library for your favorite programming language (i.e. <a href="https://code.markedmondson.me/gago/" target="_blank" rel="noopener noreferrer">gago</a> for Go) that has an &#8220;anti sampler&#8221; feature built-in.</p>
<p><a  href="http://reflectivedata.com/wp-content/uploads/2020/08/Screenshot-2020-08-25-at-13.40.20.png" data-rel="lightbox-gallery-0" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-5558" src="http://reflectivedata.com/wp-content/uploads/2020/08/Screenshot-2020-08-25-at-13.40.20.png" alt="Google Analytics Sampling Workaround" width="399" height="191" /></a></p>
<p><strong>Option 2</strong> &#8211; Collect raw hit-level Google Analytics data in your data warehouse (i.e. BigQuery). This process is known as <a href="http://reflectivedata.com/services/google-analytics-parallel-tracking/" target="_blank" rel="noopener noreferrer">parallel tracking</a> and functions by duplicating all hits that are sent to your Google Analytics property into your data warehouse. This allows you to write ad-hoc queries in standard SQL without any sampling.</p>
<p><a  href="http://reflectivedata.com/wp-content/uploads/2020/08/Screenshot-2020-08-25-at-13.45.25.png" data-rel="lightbox-gallery-0" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-5559" src="http://reflectivedata.com/wp-content/uploads/2020/08/Screenshot-2020-08-25-at-13.45.25.png" alt="Google Analytics Data in BigQuery" width="567" height="471" /></a></p>
<h3>Data collection limits</h3>
<p><strong>Option 1</strong> &#8211; To get past the 10M hits/mo, 200,000 hits per user per day and 500 hits per session limits, the same Google Analytics <a href="http://reflectivedata.com/services/google-analytics-parallel-tracking/" target="_blank" rel="noopener noreferrer">parallel tracking</a> solution can be used. This means that even if Google Analytics starts to skip some hits, they&#8217;re still available in your data warehouse and ready to be queried.</p>
<p><strong>Option 2</strong> &#8211; Set up multiple Google Analytics properties. This can be a little tricky but it is possible to divide your Google Analytics integration into multiple properties. Depending on how much traffic your site gets, you might divide all hits from the first week of the month into one property, hits from the second week into another property etc. Alternatively, you could divide hits based on the Client ID into as many groups/properties as needed. Then, you can use the Reporting API to pull data from all properties and join them using Excel, Pandas or some other tool.</p>
<h3>Data processing latency</h3>
<p>If you need to monitor the site&#8217;s performance in real-time or need data for product recommendations or other machine-learning efforts, the 24-48 hour delay is probably way too long. Your only option to get access to near-real-time Google Analytics data is to use the <a href="http://reflectivedata.com/services/google-analytics-parallel-tracking/" target="_blank" rel="noopener noreferrer">parallel tracking</a> technology. With parallel tracking, processed hit data will be available in ~5 seconds after it was collected from your site. This allows you to build alert systems, monitor performance in real-time or feed your machine learning algorithms with fresh data at all times.</p>
<h3>Custom dimensions and metrics</h3>
<p>As mentioned earlier, Google Analytics free version limits you to <a href="https://support.google.com/analytics/answer/2709828?hl=en" target="_blank" rel="noopener noreferrer">20 indices of custom dimensions and metrics</a>. If you hit the limit and need to add more, your first action should be to check whether there&#8217;s a dimension or metric that you no longer need. If that&#8217;s not the case, your only solution is to either upgrade to Google Analytics 360 (to get 200 metrics and dimensions) or to use <a href="http://reflectivedata.com/services/google-analytics-parallel-tracking/" target="_blank" rel="noopener noreferrer">parallel tracking</a> and get access to unlimited custom metrics and dimensions. When using parallel tracking, dimensions and metrics with indices 20+ will not show up in Google Analytics reports but are available in your data warehouse.</p>
<h3>Aggregated metrics and no access to raw data</h3>
<p>If you&#8217;re not happy with how Google Analytics aggregates data into sessions or calculates certain metrics, you need access to the raw hit-level data that allows you to define your own rules for almost any kind of aggregation or calculation. There are two options you can sue to get access to raw hit-level Google Analytics data.</p>
<p><strong>Option 1</strong> &#8211; You guessed it! <a href="http://reflectivedata.com/services/google-analytics-parallel-tracking/" target="_blank" rel="noopener noreferrer">Parallel tracking</a> sends the raw hit-level Google Analytics data into your data warehouse (with no sampling) and you can use standard SQL to query your data and tools like Excel, R or Pandas to make all sorts of calculations and aggregations. BigQuery has a native connection with most BI and data visualisation tools so reporting is easy and flexible.</p>
<p><strong>Option 2</strong> &#8211; If your Google Analytics property is not affected by the data collection limits (it gets &lt;10M hits/mo), you could configure your custom dimensions to collect data like Client ID, Session ID, Hit Timestamp and Hit Type. With all these dimensions available in your dataset, you can use the Reporting API to pull the raw hit-level data into your local machine or data warehouse. If your property receives more than 10M hits a month, this option is only available if you split your data between multiple properties.</p>
<p><a  href="http://reflectivedata.com/wp-content/uploads/2020/08/Screenshot-2020-08-25-at-13.47.27.png" data-rel="lightbox-gallery-0" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-5562" src="http://reflectivedata.com/wp-content/uploads/2020/08/Screenshot-2020-08-25-at-13.47.27.png" alt="Google Analytics Custom Dimensions for Unsampled Data" width="801" height="207" srcset="https://reflectivedata.com/wp-content/uploads/2020/08/Screenshot-2020-08-25-at-13.47.27.png 801w, https://reflectivedata.com/wp-content/uploads/2020/08/Screenshot-2020-08-25-at-13.47.27-700x181.png 700w, https://reflectivedata.com/wp-content/uploads/2020/08/Screenshot-2020-08-25-at-13.47.27-768x198.png 768w" sizes="(max-width: 801px) 100vw, 801px" /></a></p>
<h3>Hit payload limited to 8000 bytes</h3>
<p>If your <a href="https://developers.google.com/analytics/devguides/collection/analyticsjs/enhanced-ecommerce" target="_blank" rel="noopener noreferrer">enhanced ecommerce</a> transactions include many products or you have lots of custom dimensions or for some other reason some of your hits exceed the 8000-byte limit then you are losing data. Google Analytics will, without any warnings, simply skip those hits. You have three options for solving this issue.</p>
<p><strong>Option 1</strong> &#8211; Send less data by removing some data points. Simo Ahava has written a great <a href="https://www.simoahava.com/analytics/automatically-reduce-google-analytics-payload-length/" target="_blank" rel="noopener noreferrer">blog post</a> on automatically reducing the Google Analytics payload length by removing some of the unnecessary data points and creating an order for removing other data points until the required payload size is reached.</p>
<p><strong>Option 2</strong> &#8211; Use the data import feature in Google Analytics to import extra information after the data has been sent to Google Analytics. This way you can send only the most important information (Client ID, transaction ID etc.) with the main hit and import other details (product information, custom dimensions etc.) later using the import feature. Check out <a href="https://www.bounteous.com/insights/2017/02/16/tracking-large-transactions-w-google-analytics-google-tag-manager/" target="_blank" rel="noopener noreferrer">this post</a> by Dan Wilkerson for a detailed guide for doing this with Google Tag Manager.</p>
<p><strong>Option 3</strong> &#8211; With <a href="http://reflectivedata.com/services/google-analytics-parallel-tracking/" target="_blank" rel="noopener noreferrer">parallel tracking</a> your hits are limited to 16 000 bytes (double from Google Analytics) and this can be raised even more on request.</p>
<h2>Key takeaways</h2>
<p>Now that you have a pretty good overview of the limitations that come with the free version of Google Analytics and some that come with the 360 (premium) version, it&#8217;s a good time to assess your own Google Analytics implementation(s). Does any of the limitations affect your data and its accuracy? May some of the limitations become an issue in the future?</p>
<p>Knowing the limitations of a tool is extremely important. You may be investing a lot of time and money into a setup that may not be sufficient anymore as your business grows.</p>
<p>With all its limitations, Google Analytics is still an extremely powerful tool that has an awesome community. If sampling or some of the other limitations are an issue for you, I believe you can fix them with some of the solutions suggested in this blog post.</p>
<p>Most of the sampling and data collection limitations of Google Analytics are solvable with <a href="http://reflectivedata.com/services/google-analytics-parallel-tracking/" target="_blank" rel="noopener noreferrer">parallel tracking</a>, a system that sends raw hit-level Google Analytics data into BigQuery (or any other data warehouse) in real-time.</p>
<p>***</p>
<p>Should you have any other issues with Google Analytics or have an alternative solution to any of the problems mentioned in this post, please share your thoughts in the comments below.</p>
<p>The post <a href="https://www.reflectivedata.com/how-to-avoid-google-analytics-sampling-and-data-limits/">How to Avoid Google Analytics Sampling and Data Limits?</a> appeared first on <a href="https://www.reflectivedata.com">Reflective Data</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.reflectivedata.com/how-to-avoid-google-analytics-sampling-and-data-limits/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
		<item>
		<title>Making BigQuery a Single Source of Truth for Marketing Data Analysis</title>
		<link>https://www.reflectivedata.com/making-bigquery-a-single-source-of-truth-for-marketing-data-analysis/</link>
					<comments>https://www.reflectivedata.com/making-bigquery-a-single-source-of-truth-for-marketing-data-analysis/#respond</comments>
		
		<dc:creator><![CDATA[Silver Ringvee]]></dc:creator>
		<pubDate>Thu, 18 Jun 2020 14:05:43 +0000</pubDate>
				<category><![CDATA[BigQuery]]></category>
		<category><![CDATA[Data Pipeline]]></category>
		<category><![CDATA[Tools]]></category>
		<guid isPermaLink="false">http://reflectivedata.com/?p=4135</guid>

					<description><![CDATA[<p>Is your marketing data currently under the control of multiple vendors and platforms? Do you have to mix together siloed data and reporting tools to answer questions about marketing ROI and your customer’s journey? It’s time to take control of your data!</p>
<p>Cloud databases (i.e. BigQuery) and various data management tools have made it possible for marketers to build data pipelines without a big investment in hardware, software, and custom development.</p>
<p>In this article, we will walk through the steps of gathering data from Google Analytics, Google Ads, Google Search Console, Facebook, CRM and several other sources into Google BigQuery data warehouse and making it the single source of truth for all marketing data.</p>
<p>The post <a href="https://www.reflectivedata.com/making-bigquery-a-single-source-of-truth-for-marketing-data-analysis/">Making BigQuery a Single Source of Truth for Marketing Data Analysis</a> appeared first on <a href="https://www.reflectivedata.com">Reflective Data</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Is your marketing data currently under the control of multiple vendors and platforms? Do you have to mix together siloed data and reporting tools to answer questions about marketing ROI and your customer’s journey? It’s time to take control of your data!</p>
<p>Cloud databases (i.e. <a href="http://reflectivedata.com/dictionary/google-bigquery/">BigQuery</a>) and various data management tools have made it possible for marketers to build data pipelines without a big investment in hardware, software, and custom development.</p>
<p>In this article, we will walk through the steps of gathering data from Google Analytics, Google Ads, Google Search Console, Facebook, CRM and several other sources into Google BigQuery data warehouse and making it the single source of truth for all marketing data.</p>
<h3>Takeaways</h3>
<ul>
<li>Learn why most businesses need a marketing data warehouse</li>
<li>Learn how to plan the best marketing data warehouse for your business</li>
<li>Learn the basics of working with marketing data stored in BigQuery</li>
</ul>
<h2>Why (almost) every business needs a marketing data warehouse?</h2>
<p>In the past few years, the number of marketing tools an average marketing person uses has grown rapidly. Doesn&#8217;t matter whether it&#8217;s a SaaS, lead gen or an e-commerce business, besides one or two analytics platforms there usually are a few ads platforms in play, a CRM, CMS, several social media platforms, an email automation system and probably a few more tools and platforms.</p>
<p>All of those tools and platforms are there to make our work as marketers, business owners or data analysts easier and more effective. In reality, though, you will end up having a bunch of silos – systems that don’t really communicate with each other and rarely agree on any of the important KPIs or metrics.</p>
<p>Data silos are the source of confusion and disagreement between teams within a business, leading to a situation where, at the end of the day, no-one knows which tool or numbers they can trust.</p>
<h3>The solution? A marketing data warehouse.</h3>
<p>Below are a few reasons that should explain quite vividly that your business needs a marketing data warehouse.</p>
<p><strong>– Single source of truth:</strong> the main benefit you get from having all of your marketing data in one central data warehouse is that every team in your business will look at the same metrics, calculated the same way. This benefit alone will save you and your colleagues from lots of misunderstanding and possible conflicts between teams and functions.</p>
<p><strong>– Access to raw data:</strong> most marketing tools show you aggregated data and calculated metrics. While it&#8217;s okay for a more basic user, it is definitely limiting your ability to do your own calculations. It is also the main reason why data from different tools never match – they simply measure and calculate the core metrics like users, sessions, conversion rate, revenue etc. in a different way. When working with raw data, you define your own aggregation and calculation rules – this should be agreed on company level and leads to everyone looking at the same numbers.</p>
<p><strong>– Visualization and BI tools:</strong> sadly, not all marketing tools have a connector with most major data visualization and BI tools (Tableau, Looker, Google Data Studio etc.). Working with CSV or Excel files isn’t automatic or very scalable. Data warehouses like BigQuery have a native integration with nearly all better-known BI and data visualization tools.</p>
<p><strong>– More accurate attribution:</strong> tools like Google/Adobe Analytics are great when you’re just getting started with marketing channel attribution. What most tools lack, though, are access to all user touch-points (online and offline) and the ability to use custom attribution models (FBA, ML-based, Markov etc.).</p>
<p><strong>– Machine learning:</strong> with tools like BigQuery ML, Auto ML and others being widely available, getting started with machine learning has never been easier or more affordable. The only part that’s missing, though, is access to high-quality raw hit-level data that is required for training your models. With all your marketing data in your data warehouse, you can create models from product recommendations to smarter remarketing campaigns.</p>
<p><strong>– Manual data joining doesn’t scale:</strong> exporting data from various sources and joining them in Excel/Sheets can give you interesting insights you wouldn’t have seen in any single tool but let’s be honest, this system isn’t very scalable. Working with a data warehouse, you can pre-join commonly combined data into views or pull everything together in a dashboard.</p>
<p><strong>– A complete overview of the user journey:</strong> no one tool knows everything about your users thus looking at them doesn’t show you the complete user journey. Combining data from all tools and sources, both online and offline gives you a much more detailed picture of the entire user journey. Furthermore, this gives you much more accurate long term metrics like users’ lifetime value.</p>
<p>***</p>
<p>I could go on for long writing about the benefits that explain having a proper marketing data warehouse. What about you? Let us know of the reasons your business needs (or already has) a marketing data warehouse in the comments below.</p>
<h2>How to plan and get the best marketing data warehouse for your business?</h2>
<p>Having a marketing data warehouse is becoming the new norm. Setting one up, though, is not a trivial task.</p>
<p>There are some tools that offer sort of a plug-and-play solution but just like every business is different, so are their requirements for a marketing data warehouse. There is no good solution that would meet the requirements of all (or even most) businesses.</p>
<h3>Mapping data sources</h3>
<p>Before dealing with anything else, start by mapping all the data sources your business has. This may include, but isn’t limited to, Google Analytics, CRM, CMS, offline data, Ads platforms, email automation tools, SMS and push notification platforms etc.</p>
<p>After knowing your sources, try to group all of them into a document and sort them in a logical order. For example, (1) analytics platforms, (2) social media platforms, (3) email etc.</p>
<p>Next, think more deeply about each of the listed data sources. Take a look at their documentation and data structure. In your document, take note of what kind of data and in what format you’d need in your marketing data warehouse. Start by thinking of how your team is using this data today, what kind of dashboards you&#8217;ve built etc.</p>
<p>Furthermore, take note of how fresh each dataset should be in the data warehouse. Do you need it in real-time, hourly, or maybe a daily update is fine? Probably you&#8217;d want your click-stream data to be as fresh as possible while having your ad cost data update once a day may be fine.</p>
<p>As an extra, I recommend you check if each data source has a public API or if they allow automated data export. If that’s not the case, it’s highly likely you can’t easily export data from that tool and I’d look for an alternative for that tool. Every decent marketing tool should have a public API for exporting data these days.</p>
<h3>Mapping use cases</h3>
<p>Based on the list of data sources you just listed, it is now time to think about all the great things you could do with a marketing data warehouse that includes all the data.</p>
<p>Once again, I recommend you start a document and structure it logically based on some category. For example, (1) user behavior analysis, (2) attribution, (3) alerts etc.</p>
<p>Of course, you don’t have to think about everything beforehand but it helps you later on deciding the right schema, load frequency (batch load vs stream), pre-calculated views, metrics etc.</p>
<p>Start by thinking of all the ways you are currently using the data available within each marketing tool your company has. Next, think of ways you’ve joined the data in the past using tools like Excel or Google Sheets. Then, I recommend, you go completely creative. Think of things you were never able to get from your data but would really like to. For example, analyzing user journey across all touchpoints, online and offline.</p>
<h3>Build or buy?</h3>
<p>The truth is, that building a data warehouse has never been easier nor cheaper. Every cloud platform has its own offering and several solutions have been built on top of major cloud platforms by other companies.</p>
<p>To be honest, setting up a data warehouse is actually the easy part. What makes it difficult though, is getting data in the data warehouse – automatically, reliably, fast and free of duplicate records. This part is known as a data pipeline and this is the system that feeds your data warehouse and, ultimately, your business with trustworthy data.</p>
<p>Now, where do you get a solid data pipeline? You have three options.</p>
<p><strong>1. Build:</strong> if your company has enough resources (money, time, developers, data scientists, data engineers) then building everything in-house might be a good idea. There are some useful building blocks available in most cloud platforms (i.e. Cloud Dataflow, Pub/Sub, Cloud Functions in GCP). What I would recommend, though, is to make sure you have at least one person in the team that has led a data pipeline build before or at least someone you could consult with. Otherwise, there are things that will probably go wrong in your first attempt.</p>
<p><strong>2. Ready-made solutions:</strong> depending on the level of customization you require, some of the ready-made data pipeline solutions might fit most of your needs. Some tools to check out are Stitch, Fivetran, Funnel and Segment. All of them do a great job at what they’re built for – offering fixed or semi-flexible data pipeline to feed your data warehouse with data. Unfortunately, though, each of them has their shortcomings. For example, none of them is able to send raw hit-level Google Analytics data into your data warehouse and process it into sessions based on your rules. Oh, and setting such a tool up can still be a considerable amount of work.</p>
<p><strong>3. Data Pipeline as a Service:</strong> to gain full control of your marketing data, you need a system that’s tailored to your business’ needs. A way to get there is to hire a company that has all the necessary infrastructure (connectors, integrations, batch loaders, monitoring systems etc.) and is willing to take a personal approach with every client. This means getting to know your business, interviewing your team and building a solid data pipeline using the building blocks they already have – and code everything they don’t.</p>
<p>***</p>
<p>Start by mapping your data sources and use cases as described above. Then see if any of the ready-made solutions could fit your needs. If you need a more customized/advanced solution, think about your internal resources. If you need help with deciding which way to go or want to learn more about data pipeline as a service, <a href="http://reflectivedata.com/analytics-data-pipeline/">talk to experts at RD</a>.</p>
<h2>The basics of working with marketing data stored in BigQuery</h2>
<p>As BigQuery is one of the most popular data warehousing solutions for marketing data, let&#8217;s use it in our examples here as well.</p>
<p>Having all of your marketing data available in BigQuery is great but quite useless if don&#8217;t use it or if you only use it for things that are easily doable within Google Analytics or some other tool. E.g. for checking how many sessions your website received, the bounce rate etc.</p>
<h3>You have to use SQL</h3>
<p>Coming from a tool that lets you build reports by dragging and dropping various metrics, dimensions and filters in the editor, getting started with BigQuery can look like a bit of a learning curve.</p>
<p>When going to BigQuery, this is literally all your welcomed with.</p>
<figure id="attachment_4149" aria-describedby="caption-attachment-4149" style="width: 1117px" class="wp-caption aligncenter"><a  href="http://reflectivedata.com/wp-content/uploads/2020/06/screenshot-console.cloud_.google.com-2020.06.17-15_03_00.png" data-rel="lightbox-gallery-0" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" class="size-full wp-image-4149" src="http://reflectivedata.com/wp-content/uploads/2020/06/screenshot-console.cloud_.google.com-2020.06.17-15_03_00.png" alt="BigQuery home screen" width="1117" height="578" srcset="https://reflectivedata.com/wp-content/uploads/2020/06/screenshot-console.cloud_.google.com-2020.06.17-15_03_00.png 1117w, https://reflectivedata.com/wp-content/uploads/2020/06/screenshot-console.cloud_.google.com-2020.06.17-15_03_00-700x362.png 700w, https://reflectivedata.com/wp-content/uploads/2020/06/screenshot-console.cloud_.google.com-2020.06.17-15_03_00-1024x530.png 1024w, https://reflectivedata.com/wp-content/uploads/2020/06/screenshot-console.cloud_.google.com-2020.06.17-15_03_00-768x397.png 768w" sizes="(max-width: 1117px) 100vw, 1117px" /></a><figcaption id="caption-attachment-4149" class="wp-caption-text">BigQuery home screen</figcaption></figure>
<p>No fancy data explorer features or a drag and drop report builder. Just a blank white text input area for your SQL queries.</p>
<p>Yes, there are tools like <a href="https://looker.com/" target="_blank" rel="noopener noreferrer">Looker</a> and <a href="https://datastudio.google.com/" target="_blank" rel="noopener noreferrer">Google Data Studio</a> that connect with BigQuery and automatically understand your schema. Using these tools with little or no SQL skills, though, you&#8217;re likely better off using the reporting features in your data sources (Google Analytics, CRM, Ads) instead.</p>
<p>The power of BigQuery becomes apparent only through (quite advanced) SQL queries. This is what allows you to join various sources, calculate your own metrics, define your own attribution models and so much more.</p>
<p>As a marketer, you really have two options: (1) learn SQL (here&#8217;s a super good <a href="https://mode.com/sql-tutorial/introduction-to-sql/" target="_blank" rel="noopener noreferrer">getting started guide</a> from Mode) or (2) work closely with a developer/data scientist/analyst that knows SQL really well.</p>
<p>No matter which route you take, know that SQL is no rocket science but there is no way around it when getting into more advanced data analysis.</p>
<p>Now, let&#8217;s take a look at a few use cases for a marketing data pipeline a.k.a your single source of truth.</p>
<h3>Analyzing the journey of a single user</h3>
<p>In this example, we are using raw hit-level Google Analytics data sent to BigQuery using <a href="http://reflectivedata.com/analytics-data-pipeline/">RD Marketing Data Pipeline</a>.</p>
<p>What&#8217;s good about BigQuery is that, unlike Google Analytics, you can use it to work with personally identifiable information (PII) – for example, our dataset includes users&#8217; email addresses. This makes it easy to connect incoming leads with their activity on the site.</p>
<p>Let&#8217;s start by looking at how many sessions our lead has had on our website in the selected time frame. For this example, we&#8217;re connecting all sessions using email address, IP address and the client ID.</p>
<figure id="attachment_4150" aria-describedby="caption-attachment-4150" style="width: 921px" class="wp-caption aligncenter"><a  href="http://reflectivedata.com/wp-content/uploads/2020/06/screenshot-console.cloud_.google.com-2020.06.17-15_21_36.png" data-rel="lightbox-gallery-0" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" class="size-full wp-image-4150" src="http://reflectivedata.com/wp-content/uploads/2020/06/screenshot-console.cloud_.google.com-2020.06.17-15_21_36.png" alt="Count of users sessions in BigQuery" width="921" height="515" srcset="https://reflectivedata.com/wp-content/uploads/2020/06/screenshot-console.cloud_.google.com-2020.06.17-15_21_36.png 921w, https://reflectivedata.com/wp-content/uploads/2020/06/screenshot-console.cloud_.google.com-2020.06.17-15_21_36-700x391.png 700w, https://reflectivedata.com/wp-content/uploads/2020/06/screenshot-console.cloud_.google.com-2020.06.17-15_21_36-768x429.png 768w" sizes="(max-width: 921px) 100vw, 921px" /></a><figcaption id="caption-attachment-4150" class="wp-caption-text">Count of users sessions in BigQuery</figcaption></figure>
<p>Seems like this user has visited the site a whopping 151 times (the number of sessions)!</p>
<p>Next, you might be interested in where all those sessions initiated. You could do so with a query like this.</p>
<figure id="attachment_4151" aria-describedby="caption-attachment-4151" style="width: 928px" class="wp-caption aligncenter"><a  href="http://reflectivedata.com/wp-content/uploads/2020/06/screenshot-console.cloud_.google.com-2020.06.17-15_33_21.png" data-rel="lightbox-gallery-0" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" class="size-full wp-image-4151" src="http://reflectivedata.com/wp-content/uploads/2020/06/screenshot-console.cloud_.google.com-2020.06.17-15_33_21.png" alt="Count of users sessions by source/medium in BigQuery" width="928" height="630" srcset="https://reflectivedata.com/wp-content/uploads/2020/06/screenshot-console.cloud_.google.com-2020.06.17-15_33_21.png 928w, https://reflectivedata.com/wp-content/uploads/2020/06/screenshot-console.cloud_.google.com-2020.06.17-15_33_21-700x475.png 700w, https://reflectivedata.com/wp-content/uploads/2020/06/screenshot-console.cloud_.google.com-2020.06.17-15_33_21-768x521.png 768w" sizes="(max-width: 928px) 100vw, 928px" /></a><figcaption id="caption-attachment-4151" class="wp-caption-text">Count of users sessions by source/medium in BigQuery</figcaption></figure>
<p>While this gives you decent overview of how they found your site, you should also look into the landing pages (especially for organic, to understand what they&#8217;re looking for) and all the pages they&#8217;ve visited prior to submitting the contact form.</p>
<p>At Reflective Data, we do a similar analysis with all leads before we contact them – just to understand how much they already know and what they might be looking for.</p>
<h3>Custom attribution models</h3>
<p>Most tools out there default to one specific attribution model. For example, Google Analytics uses the <a href="https://support.google.com/analytics/answer/1665189?hl=en#:~:text=The%20Last%20Non%2DDirect%20Click,%2DMulti%2DChannel%20Funnels%20reports." target="_blank" rel="noopener noreferrer">last non-direct click</a> model with a 6-month look-back window. Some tools let you modify the look-back window and/or compare different models but usually, the options are quite limited.</p>
<p>An attribution model is a really important part of marketing analysis. Different models can yield completely different results. Picking or building an attribution model should be a well-reasoned decision that&#8217;s based on the actual behavior of your customers, buying cycle, types of campaigns etc.</p>
<p>In the following example, we are using the same dataset as in the previous example. The default attribution model used there is &#8220;last interaction&#8221; but we&#8217;d like to compare it against the more commonly used &#8220;last non-direct model&#8221;.</p>
<p>First, let&#8217;s see the numbers using the &#8220;last interaction&#8221; attribution model.</p>
<figure id="attachment_4154" aria-describedby="caption-attachment-4154" style="width: 1005px" class="wp-caption aligncenter"><a  href="http://reflectivedata.com/wp-content/uploads/2020/06/screenshot-console.cloud_.google.com-2020.06.17-17_07_18.png" data-rel="lightbox-gallery-0" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" class="size-full wp-image-4154" src="http://reflectivedata.com/wp-content/uploads/2020/06/screenshot-console.cloud_.google.com-2020.06.17-17_07_18.png" alt="Count of sessions by source/medium in BigQuery (last interaction)" width="1005" height="600" srcset="https://reflectivedata.com/wp-content/uploads/2020/06/screenshot-console.cloud_.google.com-2020.06.17-17_07_18.png 1005w, https://reflectivedata.com/wp-content/uploads/2020/06/screenshot-console.cloud_.google.com-2020.06.17-17_07_18-700x418.png 700w, https://reflectivedata.com/wp-content/uploads/2020/06/screenshot-console.cloud_.google.com-2020.06.17-17_07_18-768x459.png 768w" sizes="(max-width: 1005px) 100vw, 1005px" /></a><figcaption id="caption-attachment-4154" class="wp-caption-text">Count of sessions by source/medium in BigQuery (last interaction)</figcaption></figure>
<p>And now let&#8217;s see the numbers using the &#8220;last non-direct click&#8221; attribution model.</p>
<p>The query here is a bit bulkier but it&#8217;s actually quite simple and logical when you take a closer look.</p>
<figure id="attachment_4153" aria-describedby="caption-attachment-4153" style="width: 999px" class="wp-caption aligncenter"><a  href="http://reflectivedata.com/wp-content/uploads/2020/06/screenshot-console.cloud_.google.com-2020.06.17-17_01_16.png" data-rel="lightbox-gallery-0" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" class="size-full wp-image-4153" src="http://reflectivedata.com/wp-content/uploads/2020/06/screenshot-console.cloud_.google.com-2020.06.17-17_01_16.png" alt="Count of sessions by source/medium in BigQuery (last non-direct click)" width="999" height="859" srcset="https://reflectivedata.com/wp-content/uploads/2020/06/screenshot-console.cloud_.google.com-2020.06.17-17_01_16.png 999w, https://reflectivedata.com/wp-content/uploads/2020/06/screenshot-console.cloud_.google.com-2020.06.17-17_01_16-700x602.png 700w, https://reflectivedata.com/wp-content/uploads/2020/06/screenshot-console.cloud_.google.com-2020.06.17-17_01_16-768x660.png 768w" sizes="(max-width: 999px) 100vw, 999px" /></a><figcaption id="caption-attachment-4153" class="wp-caption-text">Count of sessions by source/medium in BigQuery (last non-direct click)</figcaption></figure>
<p>While the difference isn&#8217;t massive for this dataset, we can see that there&#8217;s a lot less direct/none traffic using the &#8220;last non-direct click&#8221; model – which makes total sense, because all direct clicks that came after a non-direct click were attributed to that other source.</p>
<p>***</p>
<p>We aren&#8217;t going in too much detail with all the attribution models you could build using the raw data in BigQuery but let me say that lately, many of our clients have requested us to build them all sorts of custom attribution models like linear and funnel-based or Markov, and even some machine-learning-based models.</p>
<h3>Various data sources</h3>
<p>While Google Analytics raw hit-level data (from <a href="https://support.google.com/analytics/answer/3437618?hl=en">GA 360</a> or using the <a href="http://reflectivedata.com/analytics-data-pipeline/">parallel tracker</a>) tends to be the most commonly used dataset in BigQuery or any other marketing data warehouse, you can (and should) include data from all marketing tools and platforms. This allows you to join data from various sources and spot insights and connections that weren&#8217;t possible before.</p>
<p>For example, one might capture a daily snapshot of their Twitter account in BigQuery and run a quick query to see the data for a current month.</p>
<figure id="attachment_4157" aria-describedby="caption-attachment-4157" style="width: 939px" class="wp-caption aligncenter"><a  href="http://reflectivedata.com/wp-content/uploads/2020/06/screenshot-console.cloud_.google.com-2020.06.18-12_22_47.png" data-rel="lightbox-gallery-0" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" class="size-full wp-image-4157" src="http://reflectivedata.com/wp-content/uploads/2020/06/screenshot-console.cloud_.google.com-2020.06.18-12_22_47.png" alt="Twitter account data in BigQuery" width="939" height="816" srcset="https://reflectivedata.com/wp-content/uploads/2020/06/screenshot-console.cloud_.google.com-2020.06.18-12_22_47.png 939w, https://reflectivedata.com/wp-content/uploads/2020/06/screenshot-console.cloud_.google.com-2020.06.18-12_22_47-700x608.png 700w, https://reflectivedata.com/wp-content/uploads/2020/06/screenshot-console.cloud_.google.com-2020.06.18-12_22_47-768x667.png 768w" sizes="(max-width: 939px) 100vw, 939px" /></a><figcaption id="caption-attachment-4157" class="wp-caption-text">Twitter account data in BigQuery</figcaption></figure>
<p>The data above would fit perfectly in a social media marketing dashboard.</p>
<p>In another example, let&#8217;s query a table containing Mailchimp data to see how many new subscribers were acquired per day.</p>
<figure id="attachment_4158" aria-describedby="caption-attachment-4158" style="width: 872px" class="wp-caption aligncenter"><a  href="http://reflectivedata.com/wp-content/uploads/2020/06/screenshot-console.cloud_.google.com-2020.06.18-14_57_39.png" data-rel="lightbox-gallery-0" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" class="size-full wp-image-4158" src="http://reflectivedata.com/wp-content/uploads/2020/06/screenshot-console.cloud_.google.com-2020.06.18-14_57_39.png" alt="Mailchimp subscribers in BigQuery" width="872" height="656" srcset="https://reflectivedata.com/wp-content/uploads/2020/06/screenshot-console.cloud_.google.com-2020.06.18-14_57_39.png 872w, https://reflectivedata.com/wp-content/uploads/2020/06/screenshot-console.cloud_.google.com-2020.06.18-14_57_39-700x527.png 700w, https://reflectivedata.com/wp-content/uploads/2020/06/screenshot-console.cloud_.google.com-2020.06.18-14_57_39-768x578.png 768w" sizes="(max-width: 872px) 100vw, 872px" /></a><figcaption id="caption-attachment-4158" class="wp-caption-text">Mailchimp subscribers in BigQuery</figcaption></figure>
<p>As you&#8217;ve probably realized, you can (and should) send data from all marketing tools into one unified data warehouse. As BigQuery and most other solutions are available at a rather <a href="https://cloud.google.com/bigquery/pricing" target="_blank" rel="noopener noreferrer">reasonable pricing point</a>, I would recommend collecting data from all sources, even ones you don&#8217;t plan on using in the nearest future because it&#8217;s always good to have access to historical data for a more advanced ad-hoc analysis.</p>
<h2>Moving forward</h2>
<p>If your company already has a marketing data warehouse that&#8217;s built on a modern cloud infrastructure and contains data from all the marketing tools that your business is using – good job! You&#8217;re working at a good, forward-thinking company. Just make sure this data is actually put in use as well.</p>
<p>If that&#8217;s not the case and your company doesn&#8217;t have a proper marketing data warehouse in place, start by thinking of all the marketing (and other relevant) tools that are producing data. You&#8217;ll probably realize that what you have is a bunch of silos, limiting the efficiency of your teams and holding your business back from being a truly data-driven one.</p>
<p>Whether you&#8217;re planning on building the data pipeline that feeds your data warehouse with high-quality data yourself or to buy it in as a service, it never hurts to <a href="http://reflectivedata.com/analytics-data-pipeline/">consult with the experts</a> that have been building data management systems for years.</p>
<p>If you have any questions, feel free to shoot them in the comments below.</p>
<p>The post <a href="https://www.reflectivedata.com/making-bigquery-a-single-source-of-truth-for-marketing-data-analysis/">Making BigQuery a Single Source of Truth for Marketing Data Analysis</a> appeared first on <a href="https://www.reflectivedata.com">Reflective Data</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.reflectivedata.com/making-bigquery-a-single-source-of-truth-for-marketing-data-analysis/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Why Every Business Needs a Marketing Data Warehouse and How to Set One Up?</title>
		<link>https://www.reflectivedata.com/why-every-business-needs-a-marketing-data-warehouse-and-how-to-set-one-up/</link>
					<comments>https://www.reflectivedata.com/why-every-business-needs-a-marketing-data-warehouse-and-how-to-set-one-up/#comments</comments>
		
		<dc:creator><![CDATA[Silver Ringvee]]></dc:creator>
		<pubDate>Thu, 21 May 2020 13:43:35 +0000</pubDate>
				<category><![CDATA[BigQuery]]></category>
		<category><![CDATA[Data Pipeline]]></category>
		<guid isPermaLink="false">http://reflectivedata.com/?p=4051</guid>

					<description><![CDATA[<p>The number of marketing tools an average business uses has grown rapidly. Besides one or two analytics platforms there’re a few ads platforms, CRM, CMS, several social media platforms, an email system and probably a few more tools and platforms.</p>
<p>All of those tools are supposed to make our work as marketers, business owners or data analysts easier and more effective. In reality, though, you will end up with a bunch of silos – systems that don’t really communicate well with each other and almost never agree on any of the important metrics.</p>
<p>Data silos create confusion and disagreement between teams, leading to a situation where, at the end of the day, no-one knows which tool or numbers to trust.</p>
<p>The post <a href="https://www.reflectivedata.com/why-every-business-needs-a-marketing-data-warehouse-and-how-to-set-one-up/">Why Every Business Needs a Marketing Data Warehouse and How to Set One Up?</a> appeared first on <a href="https://www.reflectivedata.com">Reflective Data</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>The number of marketing tools an average business uses has grown rapidly. Besides one or two analytics platforms there&#8217;re a few ads platforms, CRM, CMS, several social media platforms, an email system and probably a few more tools and platforms.</p>
<p>All of those tools are supposed to make our work as marketers, business owners or data analysts easier and more effective. In reality, though, you will end up with a bunch of silos – systems that don&#8217;t really communicate well with each other and almost never agree on any of the important metrics.</p>
<p>Data silos create confusion and disagreement between teams, leading to a situation where, at the end of the day, no-one knows which tool or numbers to trust.</p>
<h2>You need a marketing data warehouse.</h2>
<p>As time goes on and your business grows, the number of marketing tools and platforms involved is likely to grow as well. Without one central location for all data, this means more and more data silos and less efficiency.</p>
<p>A marketing data warehouse is the only real solution to break these silos. To put it very simply, you need a system that sends all of your marketing data, from all tools, into one central location.</p>
<p>Below are some of the reasons that should make it clear that your business needs a marketing data warehouse.</p>
<p><strong>&#8211; Single source of truth:</strong> the main benefit you receive from having a marketing data warehouse is that everyone from your business will look at the same metrics, calculated the same way and coming from one location. This alone will save you from a lot of confusion and possible conflicts between teams and functions.</p>
<p><strong>&#8211; A complete overview of the user journey:</strong> no one tool knows everything about your users thus looking at them doesn&#8217;t show you the complete user journey. Combining data from all tools and sources, both online and offline gives you a much more detailed picture of the entire user journey. Furthermore, this gives you much more accurate long term metrics like users&#8217; lifetime value.</p>
<p><strong>&#8211; Access to raw data:</strong> most marketing tools&#8217; user interfaces show you aggregated data and calculated metrics. Besides limiting your ability to do your own calculations, this is also the main reason why data from different tools never match – they simply measure and calculate metrics like users, sessions, conversion rate, revenue etc. in a different way. When working with raw data, you define your own aggregation and calculation rules – this should be agreed on company level.</p>
<p><strong>&#8211; More accurate attribution:</strong> tools like Google Analytics are great when you&#8217;re just getting started with marketing channel attribution. What most tools lack, though, are access to all touch-points (online and offline) and the ability to use custom attribution models (Markov, FBA, ML-based etc.).</p>
<p><strong>&#8211; Manual data joining doesn&#8217;t scale:</strong> exporting data from various sources and joining them in Excel/Sheets can give you interesting insights you wouldn&#8217;t have seen in any single tool but let&#8217;s be honest, this system isn&#8217;t very scalable. Working with a data warehouse, you can pre-join commonly combined data into views or pull everything together in a dashboard.</p>
<p><strong>&#8211; Visualization and BI tools:</strong> unfortunately, not all marketing tools have a connector with all major data visualization and BI tools. Working with CSV files and Sheets isn&#8217;t automatic nor scalable. Data warehouses like BigQuery, have a native integration with nearly all decent BI and visualization tools.</p>
<p><strong>&#8211; Machine learning:</strong> with tools like BigQuery ML, Auto ML and others, machine learning has become available to the masses. The only part that&#8217;s missing, though, is access to high-quality raw hit-level data that is required for training your models. With all your marketing data in your data warehouse, you can create models from product recommendations to smarter remarketing campaigns.</p>
<p>***</p>
<p>I could go on for hours writing about the benefits that favor having a proper data warehouse. What about you? Let us know of the reasons your business needs (or already has) a data warehouse in the comments below.</p>
<h2>How to set up a data warehouse?</h2>
<p>Having a data warehouse is kind of a no-brainer these days. That doesn&#8217;t mean, though, that setting one up is simple as 1-2-3.</p>
<p>Yes, there are some tools that are kind of plug-and-play solutions. But just like every business is different so are their requirements for a data warehouse. There is no real one size fits all solution here.</p>
<h3>Mapping data sources</h3>
<p>Before thinking of anything else, map all the data sources you have. This can include but isn&#8217;t limited to: Google Analytics, CRM, CMS, offline data, Ads platforms, email tools, SMS and push notification platforms etc.</p>
<p>Next, try on group all data sources into a document and sort them somehow in a logical order. For example, (1) analytics platforms, (2) ads platforms etc.</p>
<p>After writing down and sorting your data sources, think about each one. Take a look at their documentation and data structure. In your document, take note of what kind of data and in what format you&#8217;d need in your data warehouse. Start by thinking of how you&#8217;re using this data today.</p>
<p>Furthermore, take note of how fresh each dataset has to be. Do you need in real-time, hourly, or maybe a daily update is fine?</p>
<p>As an extra, I recommend you check if your data source has a public API or if they allow automated data export. If that&#8217;s not the case, it&#8217;s highly likely you can&#8217;t easily export data from the tool and I&#8217;d look for an alternative for that tool. Every decent marketing tool should have a public API for exporting data.</p>
<h3>Mapping use cases</h3>
<p>Based on the list of data sources you have available, now it&#8217;s time to think about all the use cases for a data warehouse that includes all of them.</p>
<p>Again, I recommend you start a document and structure it logically based on some category. For example, (1) attribution, (2) user behavior analysis, (3) alerts etc.</p>
<p>Of course, you don&#8217;t have to think about everything beforehand but it helps you later on deciding the right schema, load frequency (batch load vs stream), pre-calculated views and metrics etc.</p>
<p>Start by thinking of all the ways you are currently using the data available within each marketing tool. Next, think of ways you&#8217;ve joined the data in the past using tools like Excel or Google Sheets. Then, I recommend, you go completely creative. Think of things you were never able to get from your data but would really like to. For example, analyzing user journey across all touchpoints, online and offline.</p>
<h3>Build or buy?</h3>
<p>Building a data warehouse has never been easier. Every cloud platform has their own offering and several solutions have been built on top of major cloud platforms.</p>
<p>To be honest, setting up a data warehouse is the easy part. What makes it difficult though, is getting data in the data warehouse – automatically, reliably, fast and without duplicates. This part is known as a data pipeline and this is the system that feeds your data warehouse and, ultimately, your business with trustworthy data.</p>
<p>Now, where do you get a solid data pipeline? You have three options.</p>
<p><strong>1. Build:</strong> if your company has enough resources (money, time, developers, data scientists, data engineers) then building everything in-house might be a good idea. There are some useful building blocks available in most cloud platforms (i.e. Cloud Dataflow, Pub/Sub, Cloud Functions in GCP). What I would recommend, though, is to make sure you have at least one person in the team that has led a data pipeline build before or at least someone you could consult with. Otherwise, there are things that will probably go wrong in your first attempt.</p>
<p><strong>2. Ready-made solutions:</strong> depending on the level of customization you require, some of the ready-made data pipeline solutions might fit most of your needs. Some tools to check out are Stitch, Fivetran, Funnel and Segment. All of them do a great job at what they&#8217;re built for – offering fixed or semi-flexible data pipeline to feed your data warehouse with data. Unfortunately, though, each of them has their shortcomings. For example, none of them is able to send raw hit-level Google Analytics data into your data warehouse and process it into sessions based on your rules. Oh, and setting such a tool up can still be a considerable amount of work.</p>
<p><strong>3. Data Pipeline as a Service:</strong> to gain full control of your marketing data, you need a system that&#8217;s tailored to your business&#8217; needs. A way to get there is to hire a company that has all the necessary infrastructure (connectors, integrations, batch loaders, monitoring systems etc.) and is willing to take a personal approach with every client. This means getting to know your business, interviewing your team and building a solid data pipeline using the building blocks they already have – and code everything they don&#8217;t.</p>
<p>***</p>
<p>Start by mapping your data sources and use cases as described above. Then see if any of the ready-made solutions could fit your needs. If you need a more customized/advanced solution, think about your internal resources. If you need help with deciding which way to go or want to learn more about data pipeline as a service, <a href="http://reflectivedata.com/analytics-data-pipeline/">talk to experts at RD</a>.</p>
<h3>Costs</h3>
<p>No matter what path you choose, your costs will mostly depend on the number of different data sources and the amount of data you&#8217;re going to collect.</p>
<p><strong>1. Build:</strong> the process of planning, building and testing a data pipeline is likely to take 1-3 months. Pricing for the cloud platform depends on usage but expect to pay at least $250/month. Most cloud platforms offer calculators to help you estimate the cost (i.e. <a href="https://cloud.google.com/products/calculator" target="_blank" rel="noopener noreferrer">Google Cloud Platform</a>). You are probably not going to build all connectors yourself, therefore expect to pay $500 &#8211; $1,000 for tools like Stitch and SuperMetrics.</p>
<p><strong>2. Ready-made solutions:</strong> some solutions start as low as $120/mo but the pricing grows rapidly into thousands based on your usage. Another thing to keep in mind is that some providers have free connectors and premium connectors, meaning you might have to pay extra for some data sources.</p>
<p><strong>3. Data Pipeline as a Service:</strong> when hiring a company to build you a custom data pipeline, there will almost always be an initial setup cost involved. This depends heavily on the number of connectors and customization required. A very light setup usually starts around $500 and a decent pipeline is usually a few thousand $ (one-time fee). In most cases, the monthly cost depends on usage only. In fact, we&#8217;ve seen this to be the most cost-effective solution of the three in the long run. This is because there is no premium to pay for certain connectors and data streams are better optimized than in most in-house solutions.</p>
<h2>How to move forward</h2>
<p>As mentioned before, start by mapping your data sources and use cases. Then, based on your needs and resources available try to pick one of the paths listed in the previous section. If you&#8217;re not sure if a solution is right for you, I&#8217;d recommend contacting some service providers or independent data warehousing experts. You can start by posting your questions or ideas in the comments below this article.</p>
<p>Learn more about the <a href="http://reflectivedata.com/analytics-data-pipeline/">Data Pipeline as a Service offered by Reflective Data</a> and schedule a call with one of the experts today.</p>
<p>The post <a href="https://www.reflectivedata.com/why-every-business-needs-a-marketing-data-warehouse-and-how-to-set-one-up/">Why Every Business Needs a Marketing Data Warehouse and How to Set One Up?</a> appeared first on <a href="https://www.reflectivedata.com">Reflective Data</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.reflectivedata.com/why-every-business-needs-a-marketing-data-warehouse-and-how-to-set-one-up/feed/</wfw:commentRss>
			<slash:comments>6</slash:comments>
		
		
			</item>
		<item>
		<title>How to Query and Analyze Google Analytics Data with BigQuery</title>
		<link>https://www.reflectivedata.com/how-to-query-and-analyze-google-analytics-data-with-bigquery/</link>
					<comments>https://www.reflectivedata.com/how-to-query-and-analyze-google-analytics-data-with-bigquery/#comments</comments>
		
		<dc:creator><![CDATA[Silver Ringvee]]></dc:creator>
		<pubDate>Wed, 15 Apr 2020 15:21:03 +0000</pubDate>
				<category><![CDATA[BigQuery]]></category>
		<category><![CDATA[Data Pipeline]]></category>
		<category><![CDATA[Google Analytics]]></category>
		<category><![CDATA[Technical]]></category>
		<category><![CDATA[Tools]]></category>
		<guid isPermaLink="false">http://reflectivedata.com/?p=3815</guid>

					<description><![CDATA[<p>BigQuery is an extremely powerful tool for analyzing massive sets of data. It's serverless, highly scalable and integrates seamlessly with most popular BI and data visualization tools like Data Studio, Tableau and Looker.</p>
<p>Working with Google Analytics data in BigQuery has mostly been a privilege of those having a 360 version of Google Analytics. Its hefty price tag, though, has made that list quite short.</p>
<p>The post <a href="https://www.reflectivedata.com/how-to-query-and-analyze-google-analytics-data-with-bigquery/">How to Query and Analyze Google Analytics Data with BigQuery</a> appeared first on <a href="https://www.reflectivedata.com">Reflective Data</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>BigQuery is an extremely powerful tool for analyzing massive sets of data. It&#8217;s serverless, highly scalable and integrates seamlessly with most popular BI and data visualization tools like Data Studio, Tableau and Looker.</p>
<p>Working with Google Analytics data in BigQuery has mostly been a privilege of those having a 360 version of Google Analytics. Its hefty price tag, though, has made that list quite short.</p>
<p>With <a href="http://reflectivedata.com/services/google-analytics-parallel-tracking/">Google Analytics Parallel Tracking Service</a> from Reflective Data, having access to Google Analytics data in BigQuery has become a lot more affordable. (you can get a quote from the previous link)</p>
<p>Now, regardless of whether you have Google Analytics 360, a Parallel Tracking system from Reflective Data or some other integration in place, the structure of the data in BigQuery is quite similar.</p>
<p>In this article, I&#8217;m giving you a tour of the features in BigQuery and some of the ways how you can leverage them when working with your Google Analytics data.</p>
<p>Take a look at <a href="http://reflectivedata.com/unsampled-hit-level-google-analytics-data-without-360/">this article</a> if you want to learn more about sending your Google Analytics data into BigQuery first.</p>
<p>In case you don&#8217;t have access to any BigQuery dataset containing Google Analytics data, you can check out the <a href="https://support.google.com/analytics/answer/7586738?hl=en" target="_blank" rel="noopener noreferrer">Google Analytics sample dataset for BigQuery</a>. The sample dataset provides an obfuscated Google Analytics 360 dataset that can be accessed via BigQuery. It’s a great way to look at business data and experiment and learn the benefits of analyzing Google Analytics 360 data in BigQuery.</p>
<p>In this blog post, though, we are going to work with the demo dataset generated by Reflective Data&#8217;s <a href="http://reflectivedata.com/services/google-analytics-parallel-tracking/">Parallel Tracking System</a>. As mentioned before, the structure of the data is pretty much the same.</p>
<h2>Creating and running your first query</h2>
<p>With Reflective Data&#8217;s Parallel Tracking System, you will have three main tables in your BigQuery dataset. Let&#8217;s take a quick look at each one of them with a simple query.</p>
<h3><strong>Table: raw_hits</strong></h3>
<p>This is the most up to date table and contains raw data coming in from the website, app or via the measurement protocol. Data is available withing ~5 seconds after it was sent.</p>
<p><code>raw_hits</code> table contains only four columns.</p>
<ul>
<li><code>ua</code> &#8211; the user agent string of the client</li>
<li><code>ip</code> &#8211; the ip address of the client</li>
<li><code>q</code> &#8211; the actual Google Analytics hit payload</li>
<li><code>timestamp</code> &#8211; when data hit the processing engine (~50ms after it was sent)</li>
</ul>
<p>For example, we could query the number of hits for every hour in a given day.</p>
<figure id="attachment_3818" aria-describedby="caption-attachment-3818" style="width: 593px" class="wp-caption aligncenter"><a  href="http://reflectivedata.com/wp-content/uploads/2020/04/screenshot-console.cloud_.google.com-2020.04.13-22_11_07.png" data-rel="lightbox-gallery-0" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" class="wp-image-3818 size-full" src="http://reflectivedata.com/wp-content/uploads/2020/04/screenshot-console.cloud_.google.com-2020.04.13-22_11_07.png" alt="raw_hits sample query in BigQuery" width="593" height="1190" srcset="https://reflectivedata.com/wp-content/uploads/2020/04/screenshot-console.cloud_.google.com-2020.04.13-22_11_07.png 593w, https://reflectivedata.com/wp-content/uploads/2020/04/screenshot-console.cloud_.google.com-2020.04.13-22_11_07-349x700.png 349w, https://reflectivedata.com/wp-content/uploads/2020/04/screenshot-console.cloud_.google.com-2020.04.13-22_11_07-510x1024.png 510w" sizes="(max-width: 593px) 100vw, 593px" /></a><figcaption id="caption-attachment-3818" class="wp-caption-text">Hits by hour in a day</figcaption></figure>
<h3><strong>Table: processed_hits</strong></h3>
<p>This is a processed version of the <code>raw_hits</code> table. Data in this table becomes available ~30 seconds after the hit was sent. This is still really-really fast and considered near-real-time data.</p>
<p>When it comes to columns, this table is much richer compared to the <code>raw_hits</code> table. It has all the time-related columns (<code>date</code>, <code>hour</code>, <code>minute</code>, <code>timestamp</code> etc.) converted into the correct timezone. Some of the data is in a special format known as a record in BigQuery. This includes columns like <code>traffic_source</code>, <code>page</code>, <code>event</code>, <code>device</code>, <code>transaction</code> etc. In fact, this table has a column for every parameter you can send with a Google Analytics hit. Added are some data points normally not available in Google Analytics (ip address, user agent, client ID, user ID etc.)</p>
<p><a href="https://developers.google.com/analytics/devguides/collection/protocol/v1/reference" target="_blank" rel="noopener noreferrer">List of paramaters/columns as seen in Measurement Protocol Reference</a>.</p>
<p>As an example, we are querying top 10 visitors (by client ID) that created the most hits in a given day.</p>
<figure id="attachment_3821" aria-describedby="caption-attachment-3821" style="width: 599px" class="wp-caption aligncenter"><a  href="http://reflectivedata.com/wp-content/uploads/2020/04/screenshot-console.cloud_.google.com-2020.04.13-22_41_53.png" data-rel="lightbox-gallery-0" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" class="size-full wp-image-3821" src="http://reflectivedata.com/wp-content/uploads/2020/04/screenshot-console.cloud_.google.com-2020.04.13-22_41_53.png" alt="Top visitors by the number of hits" width="599" height="777" srcset="https://reflectivedata.com/wp-content/uploads/2020/04/screenshot-console.cloud_.google.com-2020.04.13-22_41_53.png 599w, https://reflectivedata.com/wp-content/uploads/2020/04/screenshot-console.cloud_.google.com-2020.04.13-22_41_53-540x700.png 540w" sizes="(max-width: 599px) 100vw, 599px" /></a><figcaption id="caption-attachment-3821" class="wp-caption-text">Top visitors by the number of hits</figcaption></figure>
<p>Isn&#8217;t that easy? and cool, too!</p>
<p>I certainly like working with my Google Analytics data using SQL queries. Okay, let&#8217;s move on.</p>
<h3><strong>Table: processed_sessions</strong></h3>
<p>This table is, for sure, the richest of the three. It has all the columns from <code>processed_rows</code> but also includes quite a few new ones. These are the columns that require more processing (ip address to geolocation etc.) and/or the session to be ended (total hits in a session etc.). For these reasons, this table is usually updated a few times a day and a final version is generated at the beginning of the next day.</p>
<p>If you aren&#8217;t completely sure how a web session is defined in Google Analytics, take a look at <a href="https://support.google.com/analytics/answer/2731565?hl=en" target="_blank" rel="noopener noreferrer">this article</a>.</p>
<p>A good thing about raw data is that whether you like the fact that Google Analytics is mostly session-based or not, you have the freedom to calculate your metrics however you wish. You could also mix and match different techniques.</p>
<p>For example, we might query top country/browser combinations by the number of sessions and pageviews in a given month. Let&#8217;s see how that would look like with our demo dataset.</p>
<figure id="attachment_3823" aria-describedby="caption-attachment-3823" style="width: 597px" class="wp-caption aligncenter"><a  href="http://reflectivedata.com/wp-content/uploads/2020/04/screenshot-console.cloud_.google.com-2020.04.14-00_49_22.png" data-rel="lightbox-gallery-0" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" class="size-full wp-image-3823" src="http://reflectivedata.com/wp-content/uploads/2020/04/screenshot-console.cloud_.google.com-2020.04.14-00_49_22.png" alt="Top country/browser combinations by sessions and pageviews" width="597" height="925" srcset="https://reflectivedata.com/wp-content/uploads/2020/04/screenshot-console.cloud_.google.com-2020.04.14-00_49_22.png 597w, https://reflectivedata.com/wp-content/uploads/2020/04/screenshot-console.cloud_.google.com-2020.04.14-00_49_22-452x700.png 452w" sizes="(max-width: 597px) 100vw, 597px" /></a><figcaption id="caption-attachment-3823" class="wp-caption-text">Top country/browser combinations by sessions and pageviews</figcaption></figure>
<h2>Creating and running more complex queries</h2>
<p>The best thing about raw hit-level data is that you&#8217;re not limited by things like sampling or pre-defined metric/dimension combinations. Both of which are common in Google Analytics, both the UI and the Reporting API.</p>
<p>What&#8217;s more, with BigQuery you can load in data from almost anywhere and mix it with your analytics data in any way you like. This may include data from your CRM, CMS, Ads platform or other analytics tools.</p>
<blockquote><p>Google Analytics’ data model is structured so that session-based dimensions (like source/medium) don’t play well when combined with user-level or page-level dimensions and metrics. And there’s a limit to the number of dimensions we can see side-by-side: two dimensions is usually our limit in the interface, five in custom reports, and the API allows for seven dimensions. With BigQuery, there are no such limitations.</p>
<p>For example – ecommerce customers may have trouble pulling exact stats of the number of users from Social Media that saw a product page and then subsequently purchased the same product. BigQuery users can handle that with a single query.</p>
<p>By Alex Moore, <a href="https://www.bounteous.com/insights/2017/05/17/value-google-bigquery-and-google-analytics-360/" target="_blank" rel="noopener noreferrer">source</a></p></blockquote>
<p>One of the queries that almost always ends up being inaccurate (due to sampling) in Google Analytics is when you want to analyze all hits triggered by a single user. With BigQuery, this query is fast and simple, and there is no sampling. Never.</p>
<p>First, let&#8217;s go ahead and query some totals.</p>
<figure id="attachment_3826" aria-describedby="caption-attachment-3826" style="width: 665px" class="wp-caption aligncenter"><a  href="http://reflectivedata.com/wp-content/uploads/2020/04/screenshot-console.cloud_.google.com-2020.04.14-12_56_28.png" data-rel="lightbox-gallery-0" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" class="size-full wp-image-3826" src="http://reflectivedata.com/wp-content/uploads/2020/04/screenshot-console.cloud_.google.com-2020.04.14-12_56_28.png" alt="Totals for a given user" width="665" height="518" /></a><figcaption id="caption-attachment-3826" class="wp-caption-text">Totals for a given user</figcaption></figure>
<p>Now, let&#8217;s take a look at all of the hits in chronological order. This will give us a detailed overview of their user journey.</p>
<figure id="attachment_3829" aria-describedby="caption-attachment-3829" style="width: 706px" class="wp-caption aligncenter"><a  href="http://reflectivedata.com/wp-content/uploads/2020/04/screenshot-console.cloud_.google.com-2020.04.14-15_55_00.png" data-rel="lightbox-gallery-0" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" class="size-full wp-image-3829" src="http://reflectivedata.com/wp-content/uploads/2020/04/screenshot-console.cloud_.google.com-2020.04.14-15_55_00.png" alt="Analyze user journey" width="706" height="1004" srcset="https://reflectivedata.com/wp-content/uploads/2020/04/screenshot-console.cloud_.google.com-2020.04.14-15_55_00.png 706w, https://reflectivedata.com/wp-content/uploads/2020/04/screenshot-console.cloud_.google.com-2020.04.14-15_55_00-492x700.png 492w" sizes="(max-width: 706px) 100vw, 706px" /></a><figcaption id="caption-attachment-3829" class="wp-caption-text">Analyze user journey</figcaption></figure>
<p>I believe you can see how analyzing a user journey like this can be very useful. For example, when a new lead comes in, before contacting them you could check what content they&#8217;ve already interacted with.</p>
<p>***</p>
<p>For someone that has worked mostly with the Google Analytics UI and not with the raw data before, there are some things that can be a bit confusing in the beginning. For example, not all of your common metrics are available as a column in BigQuery. Even the really basic ones, like bounce rate. That means you have to define them in your query.</p>
<p>Let&#8217;s take a look at the bounce rate for the top 10 landing pages in our sample dataset.</p>
<figure id="attachment_3831" aria-describedby="caption-attachment-3831" style="width: 693px" class="wp-caption aligncenter"><a  href="http://reflectivedata.com/wp-content/uploads/2020/04/screenshot-console.cloud_.google.com-2020.04.14-18_09_34.png" data-rel="lightbox-gallery-0" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" class="size-full wp-image-3831" src="http://reflectivedata.com/wp-content/uploads/2020/04/screenshot-console.cloud_.google.com-2020.04.14-18_09_34.png" alt="Top 10 landing pages" width="693" height="898" srcset="https://reflectivedata.com/wp-content/uploads/2020/04/screenshot-console.cloud_.google.com-2020.04.14-18_09_34.png 693w, https://reflectivedata.com/wp-content/uploads/2020/04/screenshot-console.cloud_.google.com-2020.04.14-18_09_34-540x700.png 540w" sizes="(max-width: 693px) 100vw, 693px" /></a><figcaption id="caption-attachment-3831" class="wp-caption-text">Top 10 landing pages</figcaption></figure>
<p>Calculating your own metrics like this can be a bit frustrating in the beginning but you actually only have to write most queries once and can later save them as views or saved queries in BigQuery. A benefit of defining your own metrics is that you are not limited by pre-defined metrics in Google Analytics. As you can see, in the query above we defined bounce as a session that has less than 2 pageviews but we could also include a rule that there can&#8217;t be any interaction hits in the session. We could also play with session duration or other data available in BigQuery.</p>
<p>A true value of having your analytics data in BigQuery, though, is that you can easily join it with other data that you&#8217;ve also sent to BigQuery.</p>
<p>For example, you could use <a href="https://cloud.google.com/bigquery-transfer/docs/adwords-transfer" target="_blank" rel="noopener noreferrer">Google Ads Data Transfer</a> tool for BigQuery to automatically send all of your Google Ads data into a BigQuery dataset. This is especially useful if you&#8217;re using Google Ads <a href="https://support.google.com/google-ads/answer/3095550?hl=en" target="_blank" rel="noopener noreferrer">auto-tagging solution</a> because that means the only connection between your Google Analytics and Ads data is the <code>gclid</code> ID which is unique for every click.</p>
<p>With a simple query, you can join your <code>processed_sessions</code> table with <code>ClickStats</code> table.</p>
<figure id="attachment_3834" aria-describedby="caption-attachment-3834" style="width: 788px" class="wp-caption aligncenter"><a  href="http://reflectivedata.com/wp-content/uploads/2020/04/screenshot-console.cloud_.google.com-2020.04.15-17_14_02.png" data-rel="lightbox-gallery-0" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" class="size-full wp-image-3834" src="http://reflectivedata.com/wp-content/uploads/2020/04/screenshot-console.cloud_.google.com-2020.04.15-17_14_02.png" alt="Google Analytics data joined with Ads data" width="788" height="572" srcset="https://reflectivedata.com/wp-content/uploads/2020/04/screenshot-console.cloud_.google.com-2020.04.15-17_14_02.png 788w, https://reflectivedata.com/wp-content/uploads/2020/04/screenshot-console.cloud_.google.com-2020.04.15-17_14_02-700x508.png 700w, https://reflectivedata.com/wp-content/uploads/2020/04/screenshot-console.cloud_.google.com-2020.04.15-17_14_02-768x557.png 768w" sizes="(max-width: 788px) 100vw, 788px" /></a><figcaption id="caption-attachment-3834" class="wp-caption-text">Google Analytics data joined with Ads data</figcaption></figure>
<p>After joining two datasets, you can combine any data points that are available in either dataset. The most important one, perhaps, is the cost data from the Ads dataset. This would allow you to calculate the amount of money you spent on acquiring each user.</p>
<h2>Analyzing BigQuery data in a BI tool</h2>
<p>Not everyone can write complex SQL queries to access their analytics data in BigQuery. Luckily, BigQuery has a native connector with almost all of the major BI and data visualization platforms.</p>
<p>My default recommendation is <a href="https://datastudio.google.com/" target="_blank" rel="noopener noreferrer">Data Studio</a>. It&#8217;s free, full of powerful features and since it&#8217;s also from Google, you get a smart caching layer between Data Studio and BigQuery which can significantly lower your BigQuery costs.</p>
<p>Connecting BigQuery and Data Studio is really simple. All you have to do is create a new source in Data Studio and select BigQuery. It will automatically show you the list of Google Cloud projects you have access to and from there you can easily navigate to your datasets and tables.</p>
<figure id="attachment_3841" aria-describedby="caption-attachment-3841" style="width: 1064px" class="wp-caption aligncenter"><a  href="http://reflectivedata.com/wp-content/uploads/2020/04/screenshot-datastudio.google.com-2020.04.15-18_01_46.png" data-rel="lightbox-gallery-0" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" class="size-full wp-image-3841" src="http://reflectivedata.com/wp-content/uploads/2020/04/screenshot-datastudio.google.com-2020.04.15-18_01_46.png" alt="BigQuery connector for Google Data Studio" width="1064" height="975" srcset="https://reflectivedata.com/wp-content/uploads/2020/04/screenshot-datastudio.google.com-2020.04.15-18_01_46.png 1064w, https://reflectivedata.com/wp-content/uploads/2020/04/screenshot-datastudio.google.com-2020.04.15-18_01_46-700x641.png 700w, https://reflectivedata.com/wp-content/uploads/2020/04/screenshot-datastudio.google.com-2020.04.15-18_01_46-1024x938.png 1024w, https://reflectivedata.com/wp-content/uploads/2020/04/screenshot-datastudio.google.com-2020.04.15-18_01_46-768x704.png 768w" sizes="(max-width: 1064px) 100vw, 1064px" /></a><figcaption id="caption-attachment-3841" class="wp-caption-text">BigQuery connector for Google Data Studio</figcaption></figure>
<p>Once you found the correct table, you can either choose the fields you want to include in your report (if not sure, choose all) or write your own query.</p>
<p>In our example, we connected two tables (<code>processed_hits</code> and <code>processed_sessions</code>) and selected all fields available in these tables.</p>
<p>Now, let&#8217;s create a quick time-series chart to see the number of hits of each hit type per day in our selected time period. Settings for a chart like this are really simple.</p>
<p><a  href="http://reflectivedata.com/wp-content/uploads/2020/04/screenshot-datastudio.google.com-2020.04.15-18_09_28.png" data-rel="lightbox-gallery-0" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-3842" src="http://reflectivedata.com/wp-content/uploads/2020/04/screenshot-datastudio.google.com-2020.04.15-18_09_28.png" alt="" width="162" height="244" /></a></p>
<p>And this is how the chart itself looks like. Nothing special but allows you to have a quick overview of your traffic and spot any anomalies in tracking.</p>
<p><a  href="http://reflectivedata.com/wp-content/uploads/2020/04/screenshot-datastudio.google.com-2020.04.15-18_10_39.png" data-rel="lightbox-gallery-0" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-3843" src="http://reflectivedata.com/wp-content/uploads/2020/04/screenshot-datastudio.google.com-2020.04.15-18_10_39.png" alt="" width="1129" height="318" srcset="https://reflectivedata.com/wp-content/uploads/2020/04/screenshot-datastudio.google.com-2020.04.15-18_10_39.png 1129w, https://reflectivedata.com/wp-content/uploads/2020/04/screenshot-datastudio.google.com-2020.04.15-18_10_39-700x197.png 700w, https://reflectivedata.com/wp-content/uploads/2020/04/screenshot-datastudio.google.com-2020.04.15-18_10_39-1024x288.png 1024w, https://reflectivedata.com/wp-content/uploads/2020/04/screenshot-datastudio.google.com-2020.04.15-18_10_39-768x216.png 768w" sizes="(max-width: 1129px) 100vw, 1129px" /></a></p>
<p>Another useful chart I recommend setting up is a time-series comparison between data in Google Analytics and BigQuery. This means you have to <a href="https://support.google.com/datastudio/answer/9061420?hl=en" target="_blank" rel="noopener noreferrer">blend two data sources</a>.</p>
<p><a  href="http://reflectivedata.com/wp-content/uploads/2020/04/screenshot-datastudio.google.com-2020.04.15-18_13_55.png" data-rel="lightbox-gallery-0" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-3844" src="http://reflectivedata.com/wp-content/uploads/2020/04/screenshot-datastudio.google.com-2020.04.15-18_13_55.png" alt="" width="1121" height="600" srcset="https://reflectivedata.com/wp-content/uploads/2020/04/screenshot-datastudio.google.com-2020.04.15-18_13_55.png 1121w, https://reflectivedata.com/wp-content/uploads/2020/04/screenshot-datastudio.google.com-2020.04.15-18_13_55-700x375.png 700w, https://reflectivedata.com/wp-content/uploads/2020/04/screenshot-datastudio.google.com-2020.04.15-18_13_55-1024x548.png 1024w, https://reflectivedata.com/wp-content/uploads/2020/04/screenshot-datastudio.google.com-2020.04.15-18_13_55-768x411.png 768w" sizes="(max-width: 1121px) 100vw, 1121px" /></a></p>
<p>As you can see, the numbers are pretty close.</p>
<p>For more advanced dashboards you might want to write a custom query on a Data Studio data source level. This way you can pre-join different tables and/or datasets.</p>
<p>***</p>
<p>While being more difficult than using the Google Analytics UI, the freedom you get from having access to raw hit-level data in BigQuery is definitely worth it. As mentioned at the beginning of this article, you don&#8217;t necessarily have to spend a fortune on Google Analytics 360 because with Reflective Data&#8217;s <a href="http://reflectivedata.com/services/google-analytics-parallel-tracking/">Google Analytics Parallel Tracking System</a> you can send your analytics data into BigQuery for a fraction of the money.</p>
<p>Should you have any questions about working with Google Analytics data in BigQuery, post them in the comments below and someone from our team will get back to you.</p>
<p>If you want to learn more about the Parallel Tracking System, <a href="http://reflectivedata.com/services/google-analytics-parallel-tracking/">click here</a>.</p>
<p>The post <a href="https://www.reflectivedata.com/how-to-query-and-analyze-google-analytics-data-with-bigquery/">How to Query and Analyze Google Analytics Data with BigQuery</a> appeared first on <a href="https://www.reflectivedata.com">Reflective Data</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.reflectivedata.com/how-to-query-and-analyze-google-analytics-data-with-bigquery/feed/</wfw:commentRss>
			<slash:comments>5</slash:comments>
		
		
			</item>
		<item>
		<title>Six Key Components of an Analytics Data Pipeline</title>
		<link>https://www.reflectivedata.com/six-key-components-of-an-analytics-data-pipeline/</link>
					<comments>https://www.reflectivedata.com/six-key-components-of-an-analytics-data-pipeline/#respond</comments>
		
		<dc:creator><![CDATA[Silver Ringvee]]></dc:creator>
		<pubDate>Tue, 10 Dec 2019 15:03:01 +0000</pubDate>
				<category><![CDATA[Data Pipeline]]></category>
		<category><![CDATA[Technical]]></category>
		<guid isPermaLink="false">http://reflectivedata.com/?p=3672</guid>

					<description><![CDATA[<p>This blog post is aimed for anyone planning to build a data pipeline or upgrade their current setup.</p>
<p>An end-to-end analytics data pipeline is a secure and reliable mechanism that is responsible for feeding your business with valuable data that can be used for reporting, analysis, machine learning or any other activity that requires accurate data about your business.</p>
<p>The post <a href="https://www.reflectivedata.com/six-key-components-of-an-analytics-data-pipeline/">Six Key Components of an Analytics Data Pipeline</a> appeared first on <a href="https://www.reflectivedata.com">Reflective Data</a>.</p>
]]></description>
										<content:encoded><![CDATA[<blockquote><p><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/26a0.png" alt="⚠" class="wp-smiley" style="height: 1em; max-height: 1em;" />  If you need help with planning or building a data pipeline or a data warehouse then <a href="http://reflectivedata.com/analytics-data-pipeline/">get in touch</a> for a free consultation session with one of our top data engineers!</p></blockquote>
<hr />
<p>These days, data is at the core of almost all successful companies. The system that feeds those companies with data is known as a data pipeline.</p>
<p>This blog post is for anyone eager to learn more about data pipelines, planning to build a new pipeline or upgrade their current setup.</p>
<p>An end-to-end analytics data pipeline is a secure and reliable mechanism that is responsible for feeding your business with valuable data that can be used for reporting, analysis, machine learning or any other activity that requires accurate data about your business.</p>
<p>Every business is different and so are the analytics data pipelines that best suits their needs. Our model of an enterprise-grade, fully customizable data pipelines are divided into six logical steps. Let’s take a closer look at each one of them.</p>
<p style="text-align: center;">Events → Enrichment → Process → Manage &amp; Monitor → Storage → Report &amp; Visualize</p>
<h2>Events</h2>
<p>Events are the basis of most data pipelines, they trigger other actions and take the largest part (storage) of your data lake/warehouse.</p>
<p>There is a wide variety of events that may act as a source for your data pipeline. Here are the six main categories of sources that generate an ongoing flow of events.</p>
<ul>
<li>Website users
<ul>
<li>Click stream</li>
<li>Google Analytics parallel tracking</li>
<li>Form analytics</li>
</ul>
</li>
<li>Server events
<ul>
<li>Orders</li>
<li>Payments</li>
</ul>
</li>
<li>Mobile Apps
<ul>
<li>Real-time</li>
<li>Batch</li>
</ul>
</li>
<li>Ads
<ul>
<li>Google Ads</li>
<li>Facebook Ads</li>
<li>Twitter Ads</li>
<li>Others</li>
</ul>
</li>
<li>Feedback tool
<ul>
<li>Surveys</li>
<li>On-site polls</li>
</ul>
</li>
<li>3rd parties
<ul>
<li>Testing tools</li>
<li>Personalization tools</li>
<li>Email providers</li>
<li>Call tracking</li>
</ul>
</li>
</ul>
<p>Events in data pipelines are usually invoked by <a href="https://simonfredsted.com/1583" target="_blank" rel="noopener noreferrer">webhooks</a> that put all events into the processing queue where they are validated, enriched and batched.</p>
<p>For example, here&#8217;s a webhook for Google Analytics parallel tracking.</p>
<pre class="EnlighterJSRAW" data-enlighter-language="null">https://analytics-6785943.appspot.com/collect?v=1&amp;_v=j79&amp;a=1359602631&amp;t=pageview&amp;_s=1&amp;dl=https%3A%2F%2Freflectivedata.com%2F&amp;ul=en-us&amp;de=UTF-8&amp;dt=Homepage&amp;sd=24-bit&amp;sr=1920x1080&amp;vp=1336x977&amp;je=0&amp;_u=SCCACEAjR~&amp;jid=&amp;gjid=&amp;cid=1177657878.1573135112&amp;tid=UA-3696947-1&amp;_gid=775207114.1575821022&amp;z=1779653917</pre>
<p>The above webhook is quite similar to Google Analytics hit payload and is sent at the same time. It is then processed, enriched and streamed into the data warehouse.</p>
<p>All events are generally stored in three locations:</p>
<ol>
<li>Log files &#8211; raw hits</li>
<li>Data Lake &#8211; Processed data (sometimes also enriched)</li>
<li>BigQuery &#8211; Processed &amp; enriched data</li>
</ol>
<p>This setup ensures us that we can re-process everything should there be something wrong with the enrichment process or should the data somehow get lost from the BigQuery instance.</p>
<h2>Enrichment</h2>
<p>To give more context to the raw event-level data, our systems are pulling data from various sources, including:</p>
<ul>
<li>CRM &amp; CMS</li>
<li>Google Analytics</li>
<li>3rd party APIs</li>
</ul>
<p>For sources that don’t allow real-time access, we are using periodic batch load processes.</p>
<p>Data from various sources is either combined with the hit level data or sent to the data warehouse separately for query-level joining or processing after collection.</p>
<h2>Process</h2>
<p>Processing makes sure your data is secure, reliable, accurate and free from duplicates. To securely process your data, we are using the following tools from Google Cloud:</p>
<ul>
<li><a href="https://cloud.google.com/dataflow/" target="_blank" rel="noopener noreferrer">Cloud Dataflow</a></li>
<li><a href="https://cloud.google.com/pubsub/" target="_blank" rel="noopener noreferrer">Cloud Pub/Sub</a></li>
<li><a href="https://cloud.google.com/functions/" target="_blank" rel="noopener noreferrer">Cloud Functions</a></li>
</ul>
<p>Similar tools are also available in <a href="https://aws.amazon.com/" target="_blank" rel="noopener noreferrer">Amazon Web Services</a>. There are several open-source solutions (often used by providers like Google and Amazon) but we prefer and recommend using managed services that can scale automatically. This allows us (and you) to focus on the data pipeline itself instead of maintaining the infrastructure.</p>
<p>We build the data processing queues to handle late-arriving data, duplicates and storage system outages in a way that best fits every use case. For example, people using your app on a 10-hour flight can produce a lot of events that are arriving and getting processed hours after they actually happened.</p>
<h2>Manage &amp; Monitor</h2>
<p>To make sure everything is working as expected and to alert us and our clients if something is not, we are setting up a set of tools built in-house and from Google Cloud. Such as <a href="https://cloud.google.com/monitoring/" target="_blank" rel="noopener noreferrer">Stackdriver Monitoring</a>.</p>
<p>Our goal is to provide our clients with the most accurate data with the least amount of latency.</p>
<p>In the pipeline management tools, you can see the pipeline&#8217;s structure, sources, processors, storage options etc. You would also see how data is moving between different elements and if there have been any errors or other incidents.</p>
<blockquote><p><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/26a0.png" alt="⚠" class="wp-smiley" style="height: 1em; max-height: 1em;" />  If you need help with planning or building a data pipeline or a data warehouse then <a href="http://reflectivedata.com/analytics-data-pipeline/">get in touch</a> for a free consultation session with one of our top data engineers!</p></blockquote>
<h2>Storage</h2>
<p>We’ve built the data pipeline so that it can send and store data in almost any database, data lake or data warehouse available. Here’s our standard recommendation.</p>
<ul>
<li><a href="https://cloud.google.com/bigquery/" target="_blank" rel="noopener noreferrer">Google BigQuery</a></li>
<li>Digital Analytics Platforms
<ul>
<li>Google/Adobe Analytics</li>
</ul>
</li>
<li>Long-term storage
<ul>
<li><a href="https://cloud.google.com/storage/" target="_blank" rel="noopener noreferrer">Cloud Storage </a></li>
<li><a href="https://aws.amazon.com/s3/" target="_blank" rel="noopener noreferrer">AWS S3</a></li>
</ul>
</li>
</ul>
<p>We make sure that your data stays safe and meets all the security requirements while giving you the full ownership and control over your data.</p>
<p>As mentioned earlier, we store raw hits as well to ensure that we can re-process everything should there be something wrong with the enrichment process or should the data somehow get lost from the BigQuery (or other reporting) instance.</p>
<h2>Report &amp; Visualize</h2>
<p>Collecting data is pointless if it’s never being used to benefit your business. We think about the value our clients&#8217; data has to provide in the earliest phase of planning and building the data pipeline. Our team works closely with our clients in order to figure out the KPIs, reports and dashboards that are needed for their companies growth.</p>
<p>Tools we are using for reporting, analysis and visualization include:</p>
<ul>
<li><a href="https://datastudio.google.com/" target="_blank" rel="noopener noreferrer">Google Data Studio</a></li>
<li><a href="https://jupyter.org/">Jupyter Notebooks</a></li>
<li><a href="https://redash.io/product/">Redash</a></li>
<li>Other BI tools</li>
</ul>
<p>We build all analytics data pipelines and storage systems so that they could be connected with almost any BI tool available on the market. Wherever possible, we make data available for reporting in near real-time.</p>
<hr />
<p>It&#8217;s no news that data is running most of the successful businesses these days and more and more companies as implementing modern data pipelines.</p>
<p>When thinking of a modern data pipeline, keep these keywords on mind:</p>
<ul>
<li>Serverless</li>
<li>Scalable</li>
<li>Real-time access</li>
<li>Security</li>
<li>Flexibility</li>
</ul>
<p>Our team is happy to answer any analytics data pipeline related questions in the comments below.</p>
<blockquote><p>Need help with planning or upgrading your data pipeline? <a href="http://reflectivedata.com/analytics-data-pipeline/">Contact us</a> and get a free consultation with one of our top data engineers.</p></blockquote>
<p>The post <a href="https://www.reflectivedata.com/six-key-components-of-an-analytics-data-pipeline/">Six Key Components of an Analytics Data Pipeline</a> appeared first on <a href="https://www.reflectivedata.com">Reflective Data</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.reflectivedata.com/six-key-components-of-an-analytics-data-pipeline/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>How to Detect and Fix Duplicate Transactions in Google Analytics</title>
		<link>https://www.reflectivedata.com/how-to-detect-and-fix-duplicate-transactions-in-google-analytics/</link>
					<comments>https://www.reflectivedata.com/how-to-detect-and-fix-duplicate-transactions-in-google-analytics/#comments</comments>
		
		<dc:creator><![CDATA[Silver Ringvee]]></dc:creator>
		<pubDate>Thu, 07 Nov 2019 15:15:36 +0000</pubDate>
				<category><![CDATA[Google Analytics]]></category>
		<category><![CDATA[Technical]]></category>
		<category><![CDATA[Tools]]></category>
		<guid isPermaLink="false">http://reflectivedata.com/?p=3591</guid>

					<description><![CDATA[<p>Enhanced Ecommerce is one of the most powerful and flexible features of Google Analytics. Its flexibility, though, leaves a lot of room for errors in the setup.</p>
<p>In this article, we are covering everything you need to know about the problem of duplicate transactions, a root cause of skewed data in many Google Analytics instances.</p>
<p>The post <a href="https://www.reflectivedata.com/how-to-detect-and-fix-duplicate-transactions-in-google-analytics/">How to Detect and Fix Duplicate Transactions in Google Analytics</a> appeared first on <a href="https://www.reflectivedata.com">Reflective Data</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Enhanced Ecommerce is one of the most powerful and flexible features of Google Analytics. Its flexibility, though, leaves a lot of room for errors in the setup.</p>
<p>In this article, we are covering everything you need to know about the problem of duplicate transactions, a root cause of skewed data in many Google Analytics instances.</p>
<h2>Detecting Duplicate Transactions</h2>
<p>Duplicate transactions in Google Analytics means simply that a single transaction was counted more than once. This can dramatically skew your data because along with the transaction count, this also inflates the revenue, quantity and other metrics directly related to transactions.</p>
<p>To check if your Google Analytics E-commerce setup is affected by duplicate transactions, let&#8217;s start by creating a custom report (Customisation &#8211;&gt; Custom Reports &#8211;&gt; New Custom Report) with the following settings.</p>
<p>Metrics: Transactions</p>
<p>Dimensions: Transaction ID</p>
<figure id="attachment_3592" aria-describedby="caption-attachment-3592" style="width: 923px" class="wp-caption aligncenter"><a  href="http://reflectivedata.com/wp-content/uploads/2019/11/screenshot-analytics.google.com-2019.11.05-17_13_26.png" data-rel="lightbox-gallery-0" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" class="size-full wp-image-3592" src="http://reflectivedata.com/wp-content/uploads/2019/11/screenshot-analytics.google.com-2019.11.05-17_13_26.png" alt="Google Analytics Custom Report for Duplicate Transactions" width="923" height="759" srcset="https://reflectivedata.com/wp-content/uploads/2019/11/screenshot-analytics.google.com-2019.11.05-17_13_26.png 923w, https://reflectivedata.com/wp-content/uploads/2019/11/screenshot-analytics.google.com-2019.11.05-17_13_26-700x576.png 700w, https://reflectivedata.com/wp-content/uploads/2019/11/screenshot-analytics.google.com-2019.11.05-17_13_26-768x632.png 768w" sizes="(max-width: 923px) 100vw, 923px" /></a><figcaption id="caption-attachment-3592" class="wp-caption-text">Google Analytics Custom Report for Duplicate Transactions</figcaption></figure>
<p>Hit &#8220;Save&#8221; and you should see your Duplicate Transactions custom report right away.</p>
<p>Firstly, choose a time frame. I&#8217;d recommend starting with 30, 60 or 90 days depending on how many transactions your site generates and how often your analytics setup changes.</p>
<p>Secondly, sort your table by most Transactions first.</p>
<p>If every transaction ID shows only one transaction then congratulations, in the selected time frame there were no duplicate transactions.</p>
<p>Every number greater than one is a sign of duplicate transaction. Now, to get an overview of the magnitude of the problem, compare the number of transactions against the number of rows in the table. The latter is the actual count of unique transactions.</p>
<figure id="attachment_3593" aria-describedby="caption-attachment-3593" style="width: 980px" class="wp-caption aligncenter"><a  href="http://reflectivedata.com/wp-content/uploads/2019/11/screenshot-analytics.google.com-2019.11.05-17_21_21.png" data-rel="lightbox-gallery-0" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" class="size-full wp-image-3593" src="http://reflectivedata.com/wp-content/uploads/2019/11/screenshot-analytics.google.com-2019.11.05-17_21_21.png" alt="Google Analytics Duplicate Transactions" width="980" height="576" srcset="https://reflectivedata.com/wp-content/uploads/2019/11/screenshot-analytics.google.com-2019.11.05-17_21_21.png 980w, https://reflectivedata.com/wp-content/uploads/2019/11/screenshot-analytics.google.com-2019.11.05-17_21_21-700x411.png 700w, https://reflectivedata.com/wp-content/uploads/2019/11/screenshot-analytics.google.com-2019.11.05-17_21_21-768x451.png 768w" sizes="(max-width: 980px) 100vw, 980px" /></a><figcaption id="caption-attachment-3593" class="wp-caption-text">Google Analytics Duplicate Transactions</figcaption></figure>
<p>In the above screenshot, there are some duplicate transactions but considering the total amount of transactions, the problem is minor.</p>
<p>If your duplicate transaction ratio is &gt;10% you have a serious problem with your e-commerce numbers and before fixing it, you should take your numbers with a grain of salt.</p>
<p>PS! We should be thankful that Google has kept Transaction ID available as a dimension in almost all reports instead of hiding them as they do with the Client ID, User ID, Session ID and other really useful dimensions (that you should <a href="http://reflectivedata.com/ideas-for-google-analytics-custom-dimensions-and-metrics/">track using custom dimensions</a>).</p>
<h2>Fixing Duplicate Transactions</h2>
<p>By far the most common reason duplicate transactions are happening is that a transaction hit is sent to Google Analytics every time the &#8220;thank you&#8221; page is loaded. There are people who bookmark this page and go back to check the order id for tracking or whatnot. Also, some companies send the &#8220;thank-you&#8221; URL in the order confirmation email.</p>
<p>To fix this, there are two possible solutions.</p>
<h3>Option 1</h3>
<p>Make the event trigger based on something coming from the back end, something that only triggers when the actual transaction is happening. For example, after the user has entered their credit card information and pressed &#8220;Complete payment&#8221; and your system has validated the transaction. I.e. just before redirecting the user onto the &#8220;thank you&#8221; page.</p>
<h3>Option 2</h3>
<p>Make your &#8220;thank you&#8221; pages to load only once. If you keep your transaction hits on the &#8220;thank you&#8221; page, make sure a user can see and visit the page only once. Every subsequent attempt to access this page should redirect them to some other page. This could be an order overview page or something similar (should still be order-related and contain order details).</p>
<p>&#8230;</p>
<p>Now, to take it one step further, you can make your e-commerce tracking even more reliable by sending transaction hits straight from the back end using <a href="https://developers.google.com/analytics/devguides/collection/protocol/v1">Measurement Protocol</a>. This way you can make sure that no transaction goes untracked or that someone is sending fake transactions towards your Google Analytics instance.</p>
<p>Another option is to use <code>localStorage</code> to keep track of transaction IDs that have already been sent to Google Analytics. This method is described in detail by Simo Ahava in this <a href="https://www.simoahava.com/analytics/prevent-google-analytics-duplicate-transactions-with-customtask/" target="_blank" rel="noopener noreferrer">blog post</a>.</p>
<h2>Final thoughts</h2>
<p>Google Analytics is an excellent tool for keeping track of your e-commerce business. What you need to keep in mind, though, is that skewed numbers can do more harm than having no numbers at all.</p>
<p>This is why you should audit (or have someone else <a href="http://reflectivedata.com/services/analytics-services/">do it for you</a>) your Google Analytics and Enhanced Ecommerce setups regularly and compare the numbers in GA against the numbers in your back end and accounting.</p>
<p>If you see that the numbers don&#8217;t add up, see if you have any duplicate transactions by creating a simple custom report seen in the beginning of this blog post.</p>
<p>Have any questions or thoughts about detecting and fixing duplicate transactions in Google Analytics? Post them in the comments below.</p>
<p>***</p>
<p>To make sure you have access to reliable data even after problems like duplicate transactions have skewed your data, we recommend sending all of your Google Analytics data into a data warehouse like BigQuery. This makes sure you can filter out duplicated data and reprocess your reports to be 100% accurate. One solution to achieve this is to use a <a href="http://reflectivedata.com/analytics-data-pipeline/">Google Analytics Parallel Tracker</a> from Reflective Data.</p>
<p>The post <a href="https://www.reflectivedata.com/how-to-detect-and-fix-duplicate-transactions-in-google-analytics/">How to Detect and Fix Duplicate Transactions in Google Analytics</a> appeared first on <a href="https://www.reflectivedata.com">Reflective Data</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.reflectivedata.com/how-to-detect-and-fix-duplicate-transactions-in-google-analytics/feed/</wfw:commentRss>
			<slash:comments>3</slash:comments>
		
		
			</item>
		<item>
		<title>Working with Google Analytics Data Using Python and Jupyter Notebooks</title>
		<link>https://www.reflectivedata.com/working-with-google-analytics-data-using-python-and-jupyter-notebooks</link>
					<comments>https://www.reflectivedata.com/working-with-google-analytics-data-using-python-and-jupyter-notebooks#comments</comments>
		
		<dc:creator><![CDATA[Silver Ringvee]]></dc:creator>
		<pubDate>Mon, 28 Oct 2019 09:19:41 +0000</pubDate>
				<category><![CDATA[Data Visualization]]></category>
		<category><![CDATA[Google Analytics]]></category>
		<category><![CDATA[Jupyter Notebook]]></category>
		<category><![CDATA[Technical]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[notebook]]></category>
		<guid isPermaLink="false">http://reflectivedata.com/?p=3574</guid>

					<description><![CDATA[<p>Python is a programming language with virtually limitless functionalities and one of the best languages for working with data. Jupyter Notebooks, on the other hand, is the most popular tool for running and sharing both your Python code and data analysis.</p>
<p>Putting Python and Notebooks together with Google Analytics, the most popular and a really powerful tool for tracking websites, gives you almost like a superpower for doing your analysis.</p>
<p>The post <a href="https://www.reflectivedata.com/working-with-google-analytics-data-using-python-and-jupyter-notebooks">Working with Google Analytics Data Using Python and Jupyter Notebooks</a> appeared first on <a href="https://www.reflectivedata.com">Reflective Data</a>.</p>
]]></description>
										<content:encoded><![CDATA[<div class="notebook-container show-input-blocks">
<div class="nb-notebook">
<div class="nb-worksheet">
<div class="nb-cell nb-markdown-cell">
<p>Python is a programming language with virtually limitless functionalities and one of the best languages for working with data. Jupyter Notebooks, on the other hand, is the most popular tool for running and sharing both your Python code and data analysis.</p>
<p>Putting Python and Notebooks together with Google Analytics, the most popular and a really powerful tool for tracking websites, gives you almost like a superpower for doing your analysis.</p>
<p>This is exactly what this post is about. Pulling in and analysing your Google Analytics data using Python and Notebooks.</p>
<p>Oh, and by the way, this blog post itself is a Jupyter Notebook created in Google&#8217;s <a href="https://colab.research.google.com">Colab</a>, a version of Jupyter Notebooks that makes it super easy to collaboratively work on and share your Notebooks.</p>
<p>We wrote more on how we managed to turn a Notebook into a WordPress blog post in <a href="http://reflectivedata.com/jupyer-notebooks-in-wordpress/">this article</a>.</p>
<p>Without furder ado, let&#8217;s start by loading in some dependencies we are going to need for superfsadfsadfsdfsafasdfsadfpulling data from Google Analytics.</p>
</div>
<div class="nb-cell nb-code-cell">
<div class="nb-input" data-prompt-number="0">
<pre class=" language-python"><code class=" language-python" data-language="python"><span class="token keyword">import</span> pandas <span class="token keyword">as</span> pd <span class="token comment"># Pandas is an open source library providing high-performance, easy-to-use data structures and data analysis tools for Python</span>
<span class="token keyword">import</span> json <span class="token comment"># JSON encoder and decoder for Python</span>
<span class="token keyword">import</span> requests <span class="token comment"># Library for sending HTTP requests</span></code></pre>
</div>
</div>
<div class="nb-cell nb-markdown-cell">
<p>There are many ways you can pull data from Google Analytics but one of the simplest is by using the API Query URI that you can grab from the <a href="https://</p>
<p>ga-dev-tools.appspot.com/query-explorer/&#8221;>Query Explorer</a>.</p>
<h3 id="step-1---go-to-query-explorer">Step 1 &#8211; Go to Query Explorer</h3>
<p>If you are not familiar with the <a href="https://ga-dev-tools.appspot.com/query-explorer/">Query Explorer</a>, this is an official tool from Google that lets </p>
<p>you play with the <a href="https://developers.google.com/analytics/devguides/reporting/core/v3/">Core Reporting API</a> by building queries to get data from your Google Analytics views (profiles). You can use these queries in any of the client libraries to build your own tools. In this case, the tool is a Notebook.</p>
<h3 id="step-2---authenticate">Step 2 &#8211; Authenticate</h3>
<p>Choose the Google Account that has access to the Google Analytics View from which you want to get data.</p>
<h3 id="step-3---build-the-query">Step 3 &#8211; Build the query</h3>
<p>If you know how Google Analytics works, building a query is rather straightforward.</p>
<p>First, choose the right Account, Property and View you want to access.</p>
<p><img decoding="async" src="https://i.imgur.com/uhZK3ma.png" alt="alt text" /></p>
<p>Then choose the date range. You can use the calendar picker or write dynamic ranges like from <code>90daysAgo</code> to <code>yesterday</code>.</p>
<p>Next, pick the metrics and dimensions. For example, you might pick metrics <code>ga:sessions</code> and <code>ga:users</code> and a dimension <code>ga:date</code></p>
<p>.</p>
<p>Finally, you can apply sorting, filtering and segmenting rules as you wish. I&#8217;d recommend using them after you feel comfortable with the basics.</p>
<p><img decoding="async" src="https://i.imgur.com/V9Gw8dj.png" alt="alt text" /></p>
<p>Perfect. Now test your query by pressing the &#8220;Run Query&#8221; button. If everything went as expected, you should see a table with results appear in a few seconds.</p>
<h3 id="step-4---get-the-api-query-uri">Step 4 &#8211; Get the API Query URI</h3>
<p>Now, copy the API Query URI &#8211; we are going to use it for making requests straight from the Notebook.</p>
<p><img decoding="async" src="https://i.imgur.com/Cb96t5Y.png" alt="alt text" /></p>
<p>Other options to pull data from Google Analytics using Python include:</p>
<ul>
<li>Using the Google Analytics <a href="https://developers.google.com/analytics/devguides/reporting/core/v4/quickstart/service-py">Reporting API library</a> for Python in your Notebook &#8211; based on <a href="https://github.com/googleapis/google-api-python-client">Google API Client</a> for Python</li>
<li>Building a custom endpoint for handling your queries using the abovementioned API</li>
<li>Exporting data from Google Analytics UI into CSV or XLSX and importing using <code>pd.read_csv()</code></li>
</ul>
<h2 id="making-the-request">Making the request</h2>
<p>Now that we have the API Query URI, we can make our first request using Python in the Notebook.</p>
<p>In this example, we are loading the number of Sessions and Users per day for the last 30 days.</p>
</div>
<div class="nb-cell nb-code-cell">
<div class="nb-input" data-prompt-number="2">
<pre class=" language-python"><code class=" language-python" data-language="python"><span class="token keyword">from</span> getpass <span class="token keyword">import</span> getpass <span class="token comment"># required only for hiding your variables</span>

api_query_uri <span class="token operator">=</span> getpass<span class="token punctuation">(</span><span class="token string">'Enter API Query URI here'</span><span class="token punctuation">)</span> <span class="token comment"># get the URI</span>
r <span class="token operator">=</span> requests<span class="token punctuation">.</span>get<span class="token punctuation">(</span>api_query_uri<span class="token punctuation">)</span> <span class="token comment"># make the request</span>
data<span class="token operator">=</span> r<span class="token punctuation">.</span>json<span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token comment"># read data from a JSON format</span>
df <span class="token operator">=</span> pd<span class="token punctuation">.</span>DataFrame<span class="token punctuation">(</span>data<span class="token punctuation">[</span><span class="token string">'rows'</span><span class="token punctuation">]</span><span class="token punctuation">)</span> <span class="token comment"># turn data into a Pandas data frame</span>
df <span class="token operator">=</span> df<span class="token punctuation">.</span>rename<span class="token punctuation">(</span>columns<span class="token operator">=</span><span class="token punctuation">{</span><span class="token number">0</span><span class="token punctuation">:</span> <span class="token string">'Date'</span><span class="token punctuation">,</span> <span class="token number">1</span><span class="token punctuation">:</span> <span class="token string">'Sessions'</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">:</span> <span class="token string">'Users'</span><span class="token punctuation">}</span><span class="token punctuation">)</span> <span class="token comment"># giving the columns some proper titles</span>
df<span class="token punctuation">[</span><span class="token string">'Sessions'</span><span class="token punctuation">]</span> <span class="token operator">=</span> df<span class="token punctuation">[</span><span class="token string">'Sessions'</span><span class="token punctuation">]</span><span class="token punctuation">.</span>astype<span class="token punctuation">(</span><span class="token builtin">int</span><span class="token punctuation">)</span> <span class="token comment"># formatting sessions as ints</span>
df<span class="token punctuation">[</span><span class="token string">'Users'</span><span class="token punctuation">]</span> <span class="token operator">=</span> df<span class="token punctuation">[</span><span class="token string">'Users'</span><span class="token punctuation">]</span><span class="token punctuation">.</span>astype<span class="token punctuation">(</span><span class="token builtin">int</span><span class="token punctuation">)</span> <span class="token comment"># formatting users as ints</span>
df<span class="token punctuation">[</span><span class="token string">'Date'</span><span class="token punctuation">]</span> <span class="token operator">=</span> pd<span class="token punctuation">.</span>to_datetime<span class="token punctuation">(</span>df<span class="token punctuation">[</span><span class="token string">'Date'</span><span class="token punctuation">]</span><span class="token punctuation">)</span>

df<span class="token punctuation">.</span>head<span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token comment"># printing the first five rows</span></code></pre>
</div>
<div class="nb-output" data-prompt-number="2">
<pre class="nb-stdout">Enter API Query URI here··········
</pre>
</div>
<div class="nb-output" data-prompt-number="2">
<div class="nb-html-output">
<div>
<style scoped="">
    .dataframe tbody tr th:only-of-type {<br />        vertical-align: middle;<br />    }</p>
<p>    .dataframe tbody tr th {<br />        vertical-align: top;<br />    }</p>
<p>    .dataframe thead th {<br />        text-align: right;<br />    }<br /></style>
<table class="dataframe" border="1">
<thead>
<tr style="text-align: right;">
<th></th>
<th>Date</th>
<th>Sessions</th>
<th>Users</th>
</tr>
</thead>
<tbody>
<tr>
<th>0</th>
<td>2019-09-25</td>
<td>64076</td>
<td>83335</td>
</tr>
<tr>
<th>1</th>
<td>2019-09-26</td>
<td>74569</td>
<td>103784</td>
</tr>
<tr>
<th>2</th>
<td>2019-09-27</td>
<td>59752</td>
<td>77642</td>
</tr>
<tr>
<th>3</th>
<td>2019-09-28</td>
<td>57743</td>
<td>76690</td>
</tr>
<tr>
<th>4</th>
<td>2019-09-29</td>
<td>63712</td>
<td>82980</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
<div class="nb-cell nb-markdown-cell">
<p>Great, so our data is now loaded and formatted for our needs.</p>
<p>Let&#8217;s go ahead and try visualizing it. For timeseries data, a line chart should work well.</p>
</div>
<div class="nb-cell nb-code-cell">
<div class="nb-input" data-prompt-number="3">
<pre class=" language-python"><code class=" language-python" data-language="python">df<span class="token punctuation">.</span>plot<span class="token punctuation">.</span>line<span class="token punctuation">(</span>x<span class="token operator">=</span><span class="token string">'Date'</span><span class="token punctuation">,</span> y<span class="token operator">=</span><span class="token punctuation">[</span><span class="token string">'Sessions'</span><span class="token punctuation">,</span> <span class="token string">'Users'</span><span class="token punctuation">]</span><span class="token punctuation">,</span> ylim<span class="token operator">=</span><span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">,</span><span class="token boolean">None</span><span class="token punctuation">]</span><span class="token punctuation">,</span> figsize<span class="token operator">=</span><span class="token punctuation">[</span><span class="token number">10</span><span class="token punctuation">,</span> <span class="token number">6</span><span class="token punctuation">]</span><span class="token punctuation">)</span></code></pre>
</div>
<div class="nb-output" data-prompt-number="3">
<pre class="nb-text-output">&lt;matplotlib.axes._subplots.AxesSubplot at 0x7f3cb89692b0&gt;</pre>
</div>
<div class="nb-output" data-prompt-number="3"><img decoding="async" class="nb-image-output" src="data:image/png;base64,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" /></div>
</div>
<div class="nb-cell nb-markdown-cell">
<p>That was easy, right?</p>
<p>Now, let&#8217;s take a look at a bit more advanced visualization by drawing a population pyramid based on data we are now pulling from Google Analytics.</p>
<p>This is how the query looks like:</p>
<pre><code>dimensions: ga:userAgeBracket, ga:userGender
metrics: ga:sessions</code></pre>
</div>
<div class="nb-cell nb-code-cell">
<div class="nb-input" data-prompt-number="4">
<pre class=" language-python"><code class=" language-python" data-language="python">api_query_uri <span class="token operator">=</span> getpass<span class="token punctuation">(</span><span class="token string">'Enter API Query URI here'</span><span class="token punctuation">)</span> <span class="token comment"># get the URI</span>
r <span class="token operator">=</span> requests<span class="token punctuation">.</span>get<span class="token punctuation">(</span>api_query_uri<span class="token punctuation">)</span> <span class="token comment"># make the request</span>
data<span class="token operator">=</span> r<span class="token punctuation">.</span>json<span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token comment"># read data from a JSON format</span>
df <span class="token operator">=</span> pd<span class="token punctuation">.</span>DataFrame<span class="token punctuation">(</span>data<span class="token punctuation">[</span><span class="token string">'rows'</span><span class="token punctuation">]</span><span class="token punctuation">)</span> <span class="token comment"># turn data into a Pandas data frame</span>
df <span class="token operator">=</span> df<span class="token punctuation">.</span>rename<span class="token punctuation">(</span>columns<span class="token operator">=</span><span class="token punctuation">{</span><span class="token number">0</span><span class="token punctuation">:</span> <span class="token string">'Age'</span><span class="token punctuation">,</span> <span class="token number">1</span><span class="token punctuation">:</span> <span class="token string">'Gender'</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">:</span> <span class="token string">'Sessions'</span><span class="token punctuation">}</span><span class="token punctuation">)</span> <span class="token comment"># giving the columns some proper titles</span>
df<span class="token punctuation">[</span><span class="token string">'Sessions'</span><span class="token punctuation">]</span> <span class="token operator">=</span> df<span class="token punctuation">[</span><span class="token string">'Sessions'</span><span class="token punctuation">]</span><span class="token punctuation">.</span>astype<span class="token punctuation">(</span><span class="token builtin">int</span><span class="token punctuation">)</span> <span class="token comment"># formatting sessions as ints</span>
df<span class="token punctuation">.</span>head<span class="token punctuation">(</span><span class="token punctuation">)</span></code></pre>
</div>
<div class="nb-output" data-prompt-number="4">
<pre class="nb-stdout">Enter API Query URI here··········
</pre>
</div>
<div class="nb-output" data-prompt-number="4">
<div class="nb-html-output">
<div>
<style scoped="">
    .dataframe tbody tr th:only-of-type {<br />        vertical-align: middle;<br />    }</p>
<p>    .dataframe tbody tr th {<br />        vertical-align: top;<br />    }</p>
<p>    .dataframe thead th {<br />        text-align: right;<br />    }<br /></style>
<table class="dataframe" border="1">
<thead>
<tr style="text-align: right;">
<th></th>
<th>Age</th>
<th>Gender</th>
<th>Sessions</th>
</tr>
</thead>
<tbody>
<tr>
<th>0</th>
<td>18-24</td>
<td>female</td>
<td>56244</td>
</tr>
<tr>
<th>1</th>
<td>18-24</td>
<td>male</td>
<td>9362</td>
</tr>
<tr>
<th>2</th>
<td>25-34</td>
<td>female</td>
<td>228866</td>
</tr>
<tr>
<th>3</th>
<td>25-34</td>
<td>male</td>
<td>33987</td>
</tr>
<tr>
<th>4</th>
<td>35-44</td>
<td>female</td>
<td>109795</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
<div class="nb-cell nb-code-cell">
<div class="nb-input" data-prompt-number="5">
<pre class=" language-python"><code class=" language-python" data-language="python"><span class="token keyword">import</span> matplotlib<span class="token punctuation">.</span>pyplot <span class="token keyword">as</span> plt <span class="token comment"># Matplotlib is a popular library for drawing plots in Python</span>
<span class="token keyword">import</span> seaborn <span class="token keyword">as</span> sns <span class="token comment"># Seaborn is a Python data visualization library based on matplotlib</span>

<span class="token comment"># Making copy of the dataframe and modifying session values to be negative for females (see chart below to see why)</span>
df<span class="token punctuation">[</span><span class="token string">'Sessions'</span><span class="token punctuation">]</span> <span class="token operator">=</span> df<span class="token punctuation">.</span><span class="token builtin">apply</span><span class="token punctuation">(</span><span class="token keyword">lambda</span> row<span class="token punctuation">:</span> row<span class="token punctuation">[</span><span class="token string">'Sessions'</span><span class="token punctuation">]</span> <span class="token operator">*</span> <span class="token operator">-</span><span class="token number">1</span> <span class="token keyword">if</span> row<span class="token punctuation">[</span><span class="token string">'Gender'</span><span class="token punctuation">]</span> <span class="token operator">==</span> <span class="token string">'female'</span> <span class="token keyword">else</span> row<span class="token punctuation">[</span><span class="token string">'Sessions'</span><span class="token punctuation">]</span><span class="token punctuation">,</span> axis<span class="token operator">=</span><span class="token number">1</span><span class="token punctuation">)</span>

<span class="token comment"># Draw Plot</span>
plt<span class="token punctuation">.</span>figure<span class="token punctuation">(</span>figsize<span class="token operator">=</span><span class="token punctuation">(</span><span class="token number">8</span><span class="token punctuation">,</span><span class="token number">5</span><span class="token punctuation">)</span><span class="token punctuation">,</span> dpi<span class="token operator">=</span> <span class="token number">80</span><span class="token punctuation">)</span>
group_col <span class="token operator">=</span> <span class="token string">'Gender'</span>
order_of_bars <span class="token operator">=</span> df<span class="token punctuation">.</span>Age<span class="token punctuation">.</span>unique<span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">[</span><span class="token punctuation">:</span><span class="token punctuation">:</span><span class="token operator">-</span><span class="token number">1</span><span class="token punctuation">]</span>
colors <span class="token operator">=</span> <span class="token punctuation">[</span>plt<span class="token punctuation">.</span>cm<span class="token punctuation">.</span>Spectral<span class="token punctuation">(</span>i<span class="token operator">/</span><span class="token builtin">float</span><span class="token punctuation">(</span><span class="token builtin">len</span><span class="token punctuation">(</span>df<span class="token punctuation">[</span>group_col<span class="token punctuation">]</span><span class="token punctuation">.</span>unique<span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token operator">-</span><span class="token number">1</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token keyword">for</span> i <span class="token keyword">in</span> <span class="token builtin">range</span><span class="token punctuation">(</span><span class="token builtin">len</span><span class="token punctuation">(</span>df<span class="token punctuation">[</span>group_col<span class="token punctuation">]</span><span class="token punctuation">.</span>unique<span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">]</span>

<span class="token keyword">for</span> c<span class="token punctuation">,</span> group <span class="token keyword">in</span> <span class="token builtin">zip</span><span class="token punctuation">(</span>colors<span class="token punctuation">,</span> df<span class="token punctuation">[</span>group_col<span class="token punctuation">]</span><span class="token punctuation">.</span>unique<span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">:</span>
    sns<span class="token punctuation">.</span>barplot<span class="token punctuation">(</span>x<span class="token operator">=</span><span class="token string">'Sessions'</span><span class="token punctuation">,</span> y<span class="token operator">=</span><span class="token string">'Age'</span><span class="token punctuation">,</span> data<span class="token operator">=</span>df<span class="token punctuation">.</span>loc<span class="token punctuation">[</span>df<span class="token punctuation">[</span>group_col<span class="token punctuation">]</span><span class="token operator">==</span>group<span class="token punctuation">,</span> <span class="token punctuation">:</span><span class="token punctuation">]</span><span class="token punctuation">,</span> order<span class="token operator">=</span>order_of_bars<span class="token punctuation">,</span> color<span class="token operator">=</span>c<span class="token punctuation">,</span> label<span class="token operator">=</span>group<span class="token punctuation">)</span>

<span class="token comment"># Decorations    </span>
plt<span class="token punctuation">.</span>xlabel<span class="token punctuation">(</span><span class="token string">"$Sessions$"</span><span class="token punctuation">)</span>
plt<span class="token punctuation">.</span>ylabel<span class="token punctuation">(</span><span class="token string">"Age"</span><span class="token punctuation">)</span>
plt<span class="token punctuation">.</span>yticks<span class="token punctuation">(</span>fontsize<span class="token operator">=</span><span class="token number">12</span><span class="token punctuation">)</span>
plt<span class="token punctuation">.</span>title<span class="token punctuation">(</span><span class="token string">"Population pyramid of the website visitors"</span><span class="token punctuation">,</span> fontsize<span class="token operator">=</span><span class="token number">16</span><span class="token punctuation">)</span>
plt<span class="token punctuation">.</span>legend<span class="token punctuation">(</span><span class="token punctuation">)</span>
plt<span class="token punctuation">.</span>show<span class="token punctuation">(</span><span class="token punctuation">)</span></code></pre>
</div>
<div class="nb-output" data-prompt-number="5"><img decoding="async" class="nb-image-output" src="data:image/png;base64,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9VyTJ0/mQx/6UFvPIUlSX3EEaBA755xz+PrXv85HP/rR/q6KJEmDiiNAg9QXv/hFbrnlFo499li233577rzzTnbZZRcmTpzIVlttxSWXXALAzJkzWX311fna177G1ltvzbhx47j11ls58sgjmTBhAm9729uYMWMGAE899RQ777wz22yzDePHj+ewww5jyZIlTc9/wQUXsN1227H11luz4447cs899/RZ2yVJWlEGQIPUmWeeycSJEzn99NO58sor+exnP8tFF13EtGnT+N3vfsfRRx/NE088AcBzzz3HNttsw/Tp0/nqV7/Kbrvtxl577cXdd9/NQQcdxPHHHw/A6quvzuWXX85dd93Fvffey8yZM/nZz372mnPfeuutXHzxxdx8881Mnz6dE088kf33379P2y9J0opwCmwImDp1Ko8++ijvf//7l0l/4IEH2HjjjRk1atTS9TsTJ06ko6ODnXfeGYBtt92Wiy66CCjudP2Vr3yF3//+92Qmc+bM4W1vexv77bffMuVedtll3HPPPWy33XZL0+bNm8fLL7/MKqus0s6mSpLUKwyAhoDMZPz48UydOvU1+2bOnMnKK6+89PHw4cMZNWrUMo8XLVoEwGmnncacOXO4/fbbGTVqFEcddVTTn/3ITA466CBOOumkNrRGkqT2cwpsCNh+++3585//zLXXXrs07e6772bhwoU9KueZZ55h3XXXZdSoUTz11FNL1xE12muvvbjwwgt57LHHgGLkaNq0acvfAEmS+pgjQCtgoNyvZ4011uCKK67gS1/6EkcffTR///vf2XDDDbn00kt7VM7hhx/Ohz/8YcaPH896663HpEmTmubbYYcdOOWUU9h7771ZtGgRCxcuZPfdd2fixIm90RxJktouvEPva40ZMyZnz569TNrixYt58MEH2XTTTRk+fHg/1Wzwsd8kDWT+GvzQEhFPZOaYVvI6BSZJkirHAEiSJFXOgAuAIuKdEXF9RLwQEc9GxNSIGFbuy4h4OSLm121b9HedJUnS4DKgAqCIeCfwW2AyMBpYCzgSqF+otGdmdtRtnf4IVhkwjW1fjSVJ0mA00K4COwU4PzP/ty7t9v6qjCRJGpoGzAhQRLwO2B5YHBF3RMTciLgrIhqXxV9Y7pseEZ/ppXMfFRGza9v8+fN7o1hJkjRADaQRoDdSBGQHAXsAfwD2An4SEe/J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" /></div>
</div>
<div class="nb-cell nb-markdown-cell">
<p>Beautiful, now we know that majority of our audience is younger females.</p>
<h2 id="more-custom-visualizations">More custom visualizations</h2>
<p>With the wide variety of Python packages available for data visualization, the number of different charts you can use is virtually limitless.</p>
<p>In the next example, let&#8217;s try out joy plot. If you don&#8217;t know what a joy plot is then you are about to learn it now.</p>
<p>First, let&#8217;s install the required Python package.</p>
</div>
<div class="nb-cell nb-code-cell">
<div class="nb-input" data-prompt-number="6">
<pre class=" language-python"><code class=" language-python" data-language="python">!pip install joypy <span class="token comment"># install joypy</span>
<span class="token keyword">import</span> joypy <span class="token comment"># JoyPy is a one-function Python package based on matplotlib + pandas with a single purpose: drawing joyplots.</span></code></pre>
</div>
<div class="nb-output" data-prompt-number="6">
<pre class="nb-stdout">Requirement already satisfied: joypy in /usr/local/lib/python3.6/dist-packages (0.2.1)
</pre>
</div>
</div>
<div class="nb-cell nb-markdown-cell">
<p>Now, let&#8217;s make the request to load required data. For this example we are using the number of transactions per age bracket and hour of the day for the past 90 days.</p>
</div>
<div class="nb-cell nb-code-cell">
<div class="nb-input" data-prompt-number="7">
<pre class=" language-python"><code class=" language-python" data-language="python">api_query_uri <span class="token operator">=</span> getpass<span class="token punctuation">(</span><span class="token string">'Enter API Query URI here'</span><span class="token punctuation">)</span> <span class="token comment"># get the URI</span>
r <span class="token operator">=</span> requests<span class="token punctuation">.</span>get<span class="token punctuation">(</span>api_query_uri<span class="token punctuation">)</span> <span class="token comment"># make the request</span>
data<span class="token operator">=</span> r<span class="token punctuation">.</span>json<span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token comment"># read data from a JSON format</span>
df <span class="token operator">=</span> pd<span class="token punctuation">.</span>DataFrame<span class="token punctuation">(</span>data<span class="token punctuation">[</span><span class="token string">'rows'</span><span class="token punctuation">]</span><span class="token punctuation">)</span> <span class="token comment"># turn data into a Pandas data frame</span>
df <span class="token operator">=</span> df<span class="token punctuation">.</span>rename<span class="token punctuation">(</span>columns<span class="token operator">=</span><span class="token punctuation">{</span><span class="token number">0</span><span class="token punctuation">:</span> <span class="token string">'Hour'</span><span class="token punctuation">,</span> <span class="token number">1</span><span class="token punctuation">:</span> <span class="token string">'Age'</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">:</span> <span class="token string">'Transactions'</span><span class="token punctuation">}</span><span class="token punctuation">)</span> <span class="token comment"># giving the columns some proper titles</span>
df<span class="token punctuation">[</span><span class="token string">'Hour'</span><span class="token punctuation">]</span> <span class="token operator">=</span> df<span class="token punctuation">[</span><span class="token string">'Hour'</span><span class="token punctuation">]</span><span class="token punctuation">.</span>astype<span class="token punctuation">(</span><span class="token builtin">int</span><span class="token punctuation">)</span> <span class="token comment"># formatting hours as ints</span>
df<span class="token punctuation">[</span><span class="token string">'Transactions'</span><span class="token punctuation">]</span> <span class="token operator">=</span> df<span class="token punctuation">[</span><span class="token string">'Transactions'</span><span class="token punctuation">]</span><span class="token punctuation">.</span>astype<span class="token punctuation">(</span><span class="token builtin">int</span><span class="token punctuation">)</span> <span class="token comment"># formatting transactions as ints</span>
df<span class="token punctuation">.</span>head<span class="token punctuation">(</span><span class="token punctuation">)</span></code></pre>
</div>
<div class="nb-output" data-prompt-number="7">
<pre class="nb-stdout">Enter API Query URI here··········
</pre>
</div>
<div class="nb-output" data-prompt-number="7">
<div class="nb-html-output">
<div>
<style scoped="">
    .dataframe tbody tr th:only-of-type {<br />        vertical-align: middle;<br />    }</p>
<p>    .dataframe tbody tr th {<br />        vertical-align: top;<br />    }</p>
<p>    .dataframe thead th {<br />        text-align: right;<br />    }<br /></style>
<table class="dataframe" border="1">
<thead>
<tr style="text-align: right;">
<th></th>
<th>Hour</th>
<th>Age</th>
<th>Transactions</th>
</tr>
</thead>
<tbody>
<tr>
<th>0</th>
<td>0</td>
<td>18-24</td>
<td>47</td>
</tr>
<tr>
<th>1</th>
<td>0</td>
<td>25-34</td>
<td>195</td>
</tr>
<tr>
<th>2</th>
<td>0</td>
<td>35-44</td>
<td>32</td>
</tr>
<tr>
<th>3</th>
<td>0</td>
<td>45-54</td>
<td>26</td>
</tr>
<tr>
<th>4</th>
<td>0</td>
<td>55-64</td>
<td>26</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
<div class="nb-cell nb-markdown-cell">
<p>To make our dataframe more suitable for the joy plot, we need to pivot it.</p>
</div>
<div class="nb-cell nb-code-cell">
<div class="nb-input" data-prompt-number="9">
<pre class=" language-python"><code class=" language-python" data-language="python">pivot <span class="token operator">=</span> pd<span class="token punctuation">.</span>pivot_table<span class="token punctuation">(</span>df<span class="token punctuation">,</span> values<span class="token operator">=</span><span class="token string">'Transactions'</span><span class="token punctuation">,</span> index<span class="token operator">=</span><span class="token punctuation">[</span><span class="token string">'Hour'</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
    columns<span class="token operator">=</span><span class="token punctuation">[</span><span class="token string">'Age'</span><span class="token punctuation">]</span><span class="token punctuation">)</span>

pivot <span class="token operator">=</span> pivot<span class="token punctuation">.</span>fillna<span class="token punctuation">(</span><span class="token number">0</span><span class="token punctuation">)</span>

pivot<span class="token punctuation">.</span>head<span class="token punctuation">(</span><span class="token punctuation">)</span></code></pre>
</div>
<div class="nb-output" data-prompt-number="9">
<div class="nb-html-output">
<div>
<style scoped="">
    .dataframe tbody tr th:only-of-type {<br />        vertical-align: middle;<br />    }</p>
<p>    .dataframe tbody tr th {<br />        vertical-align: top;<br />    }</p>
<p>    .dataframe thead th {<br />        text-align: right;<br />    }<br /></style>
<table class="dataframe" border="1">
<thead>
<tr style="text-align: right;">
<th>Age</th>
<th>18-24</th>
<th>25-34</th>
<th>35-44</th>
<th>45-54</th>
<th>55-64</th>
<th>65+</th>
</tr>
<tr>
<th>Hour</th>
<th></th>
<th></th>
<th></th>
<th></th>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<th>0</th>
<td>47</td>
<td>195</td>
<td>32</td>
<td>26</td>
<td>26</td>
<td>0</td>
</tr>
<tr>
<th>1</th>
<td>37</td>
<td>68</td>
<td>37</td>
<td>16</td>
<td>42</td>
<td>0</td>
</tr>
<tr>
<th>2</th>
<td>21</td>
<td>16</td>
<td>5</td>
<td>11</td>
<td>5</td>
<td>0</td>
</tr>
<tr>
<th>3</th>
<td>0</td>
<td>16</td>
<td>11</td>
<td>0</td>
<td>5</td>
<td>0</td>
</tr>
<tr>
<th>4</th>
<td>5</td>
<td>5</td>
<td>5</td>
<td>0</td>
<td>0</td>
<td>0</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
<div class="nb-cell nb-markdown-cell">
<p>Now, let&#8217;s see how our joy plot looks like by running the following code.</p>
</div>
<div class="nb-cell nb-code-cell">
<div class="nb-input" data-prompt-number="10">
<pre class=" language-python"><code class=" language-python" data-language="python">x_range <span class="token operator">=</span> <span class="token builtin">list</span><span class="token punctuation">(</span><span class="token builtin">range</span><span class="token punctuation">(</span><span class="token number">24</span><span class="token punctuation">)</span><span class="token punctuation">)</span>
fig<span class="token punctuation">,</span> axes <span class="token operator">=</span> joypy<span class="token punctuation">.</span>joyplot<span class="token punctuation">(</span>pivot<span class="token punctuation">,</span> kind<span class="token operator">=</span><span class="token string">"values"</span><span class="token punctuation">,</span> x_range<span class="token operator">=</span>x_range<span class="token punctuation">,</span> figsize<span class="token operator">=</span><span class="token punctuation">(</span><span class="token number">10</span><span class="token punctuation">,</span><span class="token number">8</span><span class="token punctuation">)</span><span class="token punctuation">)</span>
axes<span class="token punctuation">[</span><span class="token operator">-</span><span class="token number">1</span><span class="token punctuation">]</span><span class="token punctuation">.</span>set_xticks<span class="token punctuation">(</span>x_range<span class="token punctuation">)</span><span class="token punctuation">;</span></code></pre>
</div>
<div class="nb-output" data-prompt-number="10"><img decoding="async" class="nb-image-output" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAsgAAAI4CAYAAAB3OR9vAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvnQurowAAIABJREFUeJzs3XecVPW9//HXmb69V3pViqAUUVAEFESxi6AoIGpMLMlN1CSWn5JiizFG7801mlxjbrCkaK4xiS0aiBFJRBClrPTO9r47feb7+2OWZZDi0na2vJ+PxzzmzJlzZj6T4M57vudzvscyxiAiIiIiIjG2RBcgIiIiItKRKCCLiIiIiMRRQBYRERERiaOALCIiIiISRwFZRERERCSOI9EFHANNvyEiIiIiX8Y60h00giwiIiIiEkcBWUREREQkjgKyiIiIiEgcBWQRERERkTgKyCIiIiIicRSQRURERETiKCCLiIiIiMRRQBYRERERiaOALCIiIiISRwFZRERERCSOArKIiIiISBwFZBERERGROArIIiIiIiJxFJBFREREROIoIIuIiIiIxFFAFhERERGJo4AsIiIiIhJHAVlEREREJI4CsoiIiIhIHAVkEREREZE4CsgiIiIiInEUkEVERERE4iggi4iIiIjEUUAWEREREYmjgCwiIiIiEkcBWUREREQkjgKyiIiIiEgcBWQRERERkTgKyCIiIiIicRSQRURERETiKCCLiIiIiMRRQBYRERERiaOALCIiIiISRwFZRERERCSOArKIiIiISBwFZBERERGROArIIiIiIiJxFJBFREREROIoIIuIiIiIxFFAFhERERGJo4AsIiIiIhJHAVlEREREJI4CsoiIiIhIHAVkEREREZE4CsgiIiIiInEUkEVERERE4iggi4iIiIjEUUAWEREREYmjgCwiIiIiEkcBWUREREQkjgKyiIiIiEgcBWQRERERkTgKyCIiIiIicRSQRURERETiKCCLiIiIiMRRQBYRERERiaOALCIiIiISRwFZRERERCSOArKIiIiISBwFZBERERGROArIIiIiIiJxFJBFREREROIoIIuIiIiIxFFAFhERERGJo4AsIiIiIhJHAVlEREREJI4CsoiIiIhIHAVkEREREZE4CsgiIiIiInEUkEVERERE4iggi4iIiIjEUUAW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zZs3M2HCBBqCUHjdY0STcxJdkoh0Y9FQgEh9BaH6MqzGCiL1ZQRqygjWlhKuLyca9O23fXZuHv369mPwoAEsWbKE8opKss++luSxV+gcis5LI8gikjilpaVMnTqVumY/RQrHItIB2JxubLm9cOb2al2X2nJvjCHqayBcV0akvgyrsZJQXRnrqkr5dNPfcSZn0nvBvZicfokpXhJGAVlEjova2lrOP/98du0po3jOI5iMHokuSUTksCzLwp6cgT05A4pPAiAJSI/bRoeru6c2X8RaRORQvF4vF198MetKPqfwyvshf2CiSxIRETlqCsgickxCoRCzZs3iww8/pOCSb2PrNSLRJYmIiBwTBWQROWrRaJQbb7yRv/71r+RPvxXnoPGJLklEROSYKSCLyFFpbGxkwYIFLFq0iNxz5uIZcUGiSxIRETkudJKeiByxpUuXMnfuXLZt307O2deSPG5WoksSERE5bjSCLCJtFgwGuffee5k4cSJlDX56XfcjUsdfoytKiYhIl6IRZBFpk7Vr13LdddexatUqMk49n6zJN2FcSYkuS0RE5LhTQBaRw4pGozz11FPcc8894Eqmx6yFOPqN1dygIiLSZSkgi8gh7dixgwULFvD3v/+dtJPOIGf61zGejESXJSIickIpIIvIAYwxvPTSS9x22214/UEKZ3wT17BzMeo1FhGRbkABWUT2U1NTwy233MLvf/97UnsPpce1d2LSChJdloiISLtRQBaRVm+//TYLFiygvKKS3MnzSR5zBcZmT3RZIiIi7UrTvIkIXq+X22+/nenTp9MQddF7wU9JOf0qLIVjERHphjSCLNLNLV++nOuuu44NGzaQNe4y0s6eh7G7El2WiIhIwmgEWaSbCofD/OAHP+DMM89kZ0Udva59mPRJN2EpHIuISDenEWSRbmjDhg3MnTuXjz76iPRTppB93lcxrpRElyUiItIhdNqAHAgEcLvdiS5DpFMxxvDMM89w5513ErU5Kb7iHpyDJuiiHyIiInE6bYvFhLPOYufOnYkuQ6TTKC0tZcaMGdx66604iodSfMPPcA6akOiyREREOpxOG5A/XbOOk4aP5J333kt0KSId3quvvsrw4cP523uLyZ9+C1lXfo9ocnaiyxIREemQOm1AHnnb04QdKUyfdj4/eOTHGKODxCJfVF9fz7x585g5cyaB5Dx63fifJI2cgaUr4omIiBxSpw3Iyfm9KZz3BEkDT2fhvd9h+mVX4fV6E12WSIexZMkSRowYwYsvvkTO2XPIufpHRNOLE12WiIhIh9dpAzKAzZ1M7mX3kHn2XN55/Y+cfOpYtmzZkuiyRBLK7/dz1113MWXKFKp8UXrNf5zU8XOw7J32nFwREZF21akDMoBl2cgYP5v8mQvZvXMHQ0eO4q9vvpXoskQS4tNPP2Xs2LH85Cc/IWPUheTNfRLyByW6LBERkU6l0wfkvZIGjKFw3hOYpEwumjGD+77/oPqSpdtoaGjgrrvuYsyYMWzaUUrPq39Axnm3gNOT6NJEREQ6nS4TkAGcWcUUXPc4KSdN4OHv3c+5My6jqakp0WWJnDDGGF544QVOOukknnjiCVKGn0fhgp9h7zMq0aWJiIh0Wl0qIAPYXEnkXPIdMictYPFbf2HwKaPYuHFjossSOe4+/fRTJk6cyNy5c2l0ZND7+p+Sef7tGE9aoksTERHp1LpcQAawLIuMcVeSP+sHlJeXMXzkKP742uuJLkvkuKitreXrX/86o0aNYvmqNRTO+CY5c34M+QMTXZqIiEiX0CUD8l5JfU+laP6TWOn5XHnFZdxx9/8jGo0muiyRoxKNRnnuuecYPHgw//3006SPmkHhTc/gHn4eltWl/1MWERFpV13+W9WRUUD+tY+RMnQSP/3RQ5w99ULq6+sTXZbIEVm+fDlnnHEGN910E/6UQvrc+J9knPtVcKcmujQREZEup8sHZACb00POjDvIOvdmPlz8Nwafchrr1q1LdFkiX6qqqoqbb76ZcePGsXr9Foou/TbZsx/BZPdNdGkiIiJdVrcIyBDrS04fcwkFVz9EdU0tI0eN5aXfv5LoskQOKhKJ8PTTTzN48GCe+9XzZJ5+OYU3PoPr5HN0mWgREZETrNsE5L08vU+hcN6TOHJ6cu3sq7jtju8QiUQSXZZIq6VLlzJmzBhuu+02Qpl96H3Tz0ifdAPGlZTo0kRERLqFbheQARzpueRf8yipI6bx9E9/zJmTp1FbW5vosqSbKysrY/78+Zx11lms376H4ivvJfuqH2Iyeya6NBERkW7FkegCEsVyuMie/nVcRYNY/rdnGTTsVN5788+MHDki0aVJNxMKhfjZz37GwoUL8fr8ZI+fTdoZV+kqeCIiIgnSLUeQ97Isi7RTL6BwziPUNzYx+vRx/PqFlxJdlnQjixcv5tRTT+WOO+7AFJxMr688TdrZcxWORUREEqhbB+S93D2GUDD/SZz5/Vgw91puuu2bhMPhRJclXdjOnTuZPXs2U6ZMYWt5LT1nLyT7igcw6UWJLk1ERKTbU0Bu4UjNJv/qh0k7bQbPPf0UY86aTFVVVaLLki4mEAjwyCOPcPLJJ/PH1/5EzjnXkTf/Z9j7jtXsFCIiIh1Et+1BPhjL7iR72i24Cgfy2TtPM2jYSP72xp8ZM3pUokuTLuCtt97iG9/4Bhs3biTt5PH0OvcrRFPzEl2WiIiIfIFGkA8idcRUCq79EU2+IOPOPJNn/uf5RJckndjWrVu57LLLuOCCC9hd56fXnAfJvvRehWMREZEOSgH5ENxFgymc/ySuopO45Ss3cN1NX9NUcNJm0WiU9evX873vfY+hQ4fyxlvvkDtlAbnz/xNbr1MTXZ6IiIgchlosDsOekkn+rB9Su+R5XnzuWV7+9XOcfc4krrtmNpdeeil5eRoBlNg0bSUlJaxcubL1turTT2luagIgfdg5ZE++EZOSneBKRUREpC0sY0yiazgqEx9bbHbUeNvt/QJlmwhs+ICmkg8I1ZVh2WycMf4srr16FpdffjnFxcXtVoskjs/nY/Xq1axcuZJPPvmElStXsnr1agKBAAB2VxKugn64CwaQXDwIW/5A7Dm9E1y1iIhIt/bitkdnXHckOyggHyFjDKGKrQQ2fkjT50sJVu/EsixOGzuO666exZVXXknv3gpEXUFDQwOrVq1qDcIrV66kpKSk9dLkzuQ0nPkD8BQOILl4ICanL/bMYiybPcGVi4iISBwF5PYWrNpBYOOHNK//kED5FgCGjxzFtVdfxcyZMxk4cGCCK5S2qKqq2i8Ir/zkEzZt3Nj6vCs9B0deP5KKBpFUNACT0w97er6mZhMREen4FJATKVS7B/+GD/Fu+BD/ng0ADB46nGtnx8Ly0KFDE1yhGGPYs2fPfi0SK1auZNfOna3buLMKceT3J6V4EK6C/picfjhS1T8sIiLSSSkgdxTh+gp8Gz7Et/FDfDvXAdB3wCDmXD2Lq2bOZOTIkRp9PMGMMezcuZMVK1bsu61cSWVFRWwDy8KT2wtHXn9SegzCmd8PcvphT0pLbOEiIiJyPCkgd0Thxmr8G/+Fb+OHeLevBhOluFdf5sy+iquumsnYsbqK2rEyxrBr1y4+/vjj1jD88ccrqKqqBMCy2fHk98GRP4DU4kHY8/th5fTF5kpKcOUiIiJygikgd3QRbz2+jcsIbFxG09ZVEI2QX9SDWTOvZPasqxg/fjw2m6anPpy9YTgWgj8+eBjO64OjcACpxYOx5/ePhWGnO8GVi4iISAIoIHcmEX8T/o3/JrDpQ5o2r8REQmTn5jPzyiuYddVMRowY0a4jyw6Hg/T09A4V0OPD8N5A/PGKFVRVfiEMFwwgtccg7PkDFIZFREQk3vEPyJZl9QJ+AxQABviFMeYpy7K+B3wFqGzZ9F5jzBsH2f+HwKVAFKgArjfG7Il7fiywDLjaGPNKWwvvCgE5XjTgxbd5OcFNy2jcuBwTDiSkDsuySEvPIDMri+zsbPJyssnO3nfLalkfv7z3Pinp2NoVvhiGV6xYwccrVrT2DMfCcG8cBQMVhkVERKStTkhALgKKjDErLctKA1YAlwGzgCZjzONfsn+6MaahZfkbwFBjzNdaHtuBvwF+4FfdOSDHi4b8+LeuxO5r30tbm2iEqL+ZiK+RsK+BsK+JsK8R42/E+JsJ+xrBRA+5v8vtISMzk+ysbHJzs8k5SLCOD9ipqals2LBhX5vEwcJw/gBSewzGXjAAK6cPNqenvf7nEBERka7hiAPyl15q2hhTCpS2LDdallUC9GjrG+wNxy1SiI1C7/V14FVgbFtfrzuwOT0kDx6f6DIOYEwUE/QR9TcR8TUS9TdhBZog0IwJNBH1NxLyNbLb18T2HfVE1+/CBJqJ+BuJBv2HfF3LsrWMDI+gaNRgbPn9seX2VRgWERGRhPjSgBzPsqy+wGnAv4EJwO2WZc0DPgbuNMYcdMjTsqyHgHlAPTC5ZV0P4PKWx0cckMsbDh245MSwLBuWOwWbOwVHRsER7WsiIaL+JqK+JiL+WJiOBppxZhbizO+nMCwiIiIdRpsDsmVZqcRGe79pjGmwLOvnwA+JjQj/EPgJcMPB9jXG3AfcZ1nWPcDtwELgSeC7xpjo0ZyI1is7GW8wfMT7SaJ4AM0vLCIiIu1rT53/2SPdp02zWFiW5QT+ArxtjHniIM/3Bf5ijBluWdbzxEaZ9xhjLvzCdr2BN1q22wrsTca5gBe42RjzWhtr75zTb4iIiIhIezrikdgvHUG2YsO7zwEl8eHYsqyilv5kiLVKrAEwxiz4wv6DjDEbWx5eCnzesl2/uG1+TSxgtzUci4iIiIicEG1psZgAzAVWW5a1qmXdvcA1lmWdSmwkdxvw1UPs/6hlWScRm+ZtO/C1Y6pYREREROQE6rQXCkEtFiIiIiLy5Y64xaLjXDJNRERERKQDUEAWEREREYmjgCwiIiIiEkcBWUREREQkjgKyiIiIiEgcBWQRERERkTgKyCIiIiIicRSQRURERETiKCCLiIiIiMRRQBYRERERiaOALCIiIiISRwFZRERERCSOArKIiIiISBwFZBERERGROArIIiIiIiJxFJBFREREROIoIIuIiIiIxFFAFhERERGJo4AsIiIiIhJHAVlEREREJI4CsoiIiIhIHAVkEREREZE4CsgiIiIiInEUkEVERERE4jgSXYCIiEhXUlZWxjPPPENRURFTp06lf//+iS5JRI6QArKIiMhx4PP5eOKJJ3jkkUdobm5uXd+jd18unD6N86dNY8qUKWRlZSWwShFpC8sYk+gajlanLVxERLqOaDTKyy+/zD333MPOnTtJO3k8OZMXEAyFCW7/lMD2VTRv+5Ro0Idls3HKiFOZccH5TJs2jfHjx+NyuRL9EUS6OuuId1BAFhHpXKLRKH6/H6/Xi9frxefzHbDc1nVer5dgMEhOTg7FxcUUFRVRXFy833JmZiaWdcTfL93C0qVLueOOO/joo49IKR5Eznk3YRUNO2A7EwkTKN1AaMcqfFtX4dv9OZgobk8SZ509kRkXnM/UqVMZNmyY/rcWOf4UkEVEOjpjDPX19ZSVlR30VlVVFQuvPh/Nzc14vXsDrhe/z08g4D+q97XsDmxONzaHG8sZu2F3gd1B1NtApLmGaMB7wH4ul5v8wiJ69iimZ4/iAwJ0dwzSW7Zs4e677+YPf/gDnoxcsibOwzlkEpbVtnPfo4Fm/DtWE975KU2bPyFUswuAnLwCzp82lennT+O8886jqKjoRH4Mke5CAVlEJFF8Ph/l5eWHDL5lZWXsKS2jvLyMYCBwwP6W3YEzNQsrKR0cbiyHG5vThd3piQVbVyzc2pz7bjhcLdu6MHYXUbsLqyUA25yx9XsfWzb7l36GaNBHpKmGSHMtprkavHVEm2oINlYTaqwh3Fhz6CDt9pBfUEjPHsX06tnjgAC9d7kzB+n6+noeeughnnrqKaKWjYzTryR17OXg9BzT64YbKghsW0Vox6c0bvmEqK8BgIEnDWXG9KlMmzaNc845h5SUlOPxMUS6GwVkEZHjKRKJUFlZedjQW1paRmlZGY0N9Qd9DWdKJvaUTEjOwpmahSstG2daFvbkLKJJmZCciT0lC5sntdMEx9Yg3VSD8daCt3ZfkG6oJtxUe9ggfeppo7hxwXyuuuqqTnHSWjgc5he/+AULFy6kurqa9FPOI+uc6zDJOcf9vYyJEqrYSnD7KvzbVuHdsQYTCWF3OBk77gwuamnHGD16NHb7l//oEREFZBGRAxhj8Hq91NbWUlNTQ01NzUGX995Xt6yvqak9ZOi1u5NxpGZhtYTbWOjNxpGSBcmZRD0Z2FOysCdnYNm774RBBwvSkcZqGjctJ1i1E4fTyfkXzOCmBfO58MILO9wJa8YY3nrrLe68805KSkpI7TuC3HO/gsnt1241REMBArtLCO9YRfOWTwiUbwYgNT2TKVMmc8H505g6dSoDBgxot5pEOhkFZBHp2mpra6mqqjps0N27XFVdQ21tbDkUDB7yNS2bHUdSGrakVCx3GpYnBUdSGs6kNOxJaThSM7ElZxH1ZGClZGFPzsTmOrZD6t2dMYZg+WYCJYtpWPsPIs11pGZkcvXs2dxw/XzOOOOMhI+mr1mzhjvvvJN33nmH5NweZE+5EVvfsQmvK+Ktx79tVax/ecsnhBsqARg64jT+97lfMGbMmITWJ9IBKSCLSNdSW1vLkiVLeO+993jvvff4/PPPD7mt3Z2M3ZOKLSkV3KnYPWk4ktNwJqVjT0rFlpSG5U7BuFLAnYbNkxpra3AlJTz0dGcmGsG/dSX+kn/QuH4ZJhygR59+3Hj9PObNndvuI6Pl5eUsXLiQX/7ylzg8KWRMuIakkRdg2Z3tWkdbGGMI1+4hsHUFdf/6A9Hmem746i389LFHSEtLS3R5Ih2FArKIdG4+n4+lS5f+f/buOzyu6sD7+PdOH81Imhk1q7jJNs2mBTeK6S2UAFkghoQSE0JCSAMSSCEbnP7y5k12IWVJQkKS3Sxrks2CTQ1gsmBqTLMk94qKbaw6vdzz/jGyGLnLyCr27/M888x4dO/MGVP01dW55/YF8T/+8Q9s28bp8eEbO43AhKNxBcvBG8T2FOHwFePwF+PwBg7pqQwHCzsVJ75yCYnG54ivfxswHDd9FjfdcD1XXnklkUjkgL13Mpnkpz/9Kd///veJxROUfOhCQifNxfhGR2jayShdf/893W88Tqiiit/828/56GWXDfewREYCBbKIjC7ZbJZ//OMffUH84osvkkqlsJxO/LVH4B9/HEUTj8WqnDIij+DJgZPt3kqi6XmiDc+R3roBp8vNOeedz43zrufCCy/E6/UOyvsYY3jooYe488472bBhA8WHzabszHmY0ppBef2hlmpuouOpn5Hasp4zzruQ3//6l9TV1Q33sD6wTZs2EYlEtJKH7A8FsoiMbMYYmpqa+oL4ucWL6e7KnwjnH1OPb/yxBCceB2OOxOEtGubRykhgjCGzZS2JxufoaXieXKyDQEkpH7vySuZdfx0nnXTSfk+Reemll7j11lt5+eWXCVRPpuysG7Bqjx7kTzD0TC5L9+t/peuFP+F2OfnOd7/LbV/6wqhc9eL1119n/vz5PProo5SEItx++2186Quf1xQSGQgFsoiMPJs2bfQTgHIAACAASURBVOoL4r898wxtra0A+CLVeMYdQ8mkD0H11PxSaCJ7YOwcyfVvkmxaTM+KJZhMipqx45l33bVce+01TJkyZZ9eZ/369dx555089NBD+ErLCc25Bs+Rp+/TWtGjSaazjc6nf0F87T+YMvVY/vTgbzjhhBOGe1j75NVXX+Xuu+/msccewxMoIXjch0m1rSG25nUCJSFuv+1Wbv3SFykpKRnuocrIp0AWkeHX3t7Oc8891xfFK1euBMATDOEZewwlk47HUXc0ztIxwzxSGc3sVJz4qpdINi4mtu5NwHDM8dO5cd51zJ07l/Ly8p326e7u5gc/+AE/+clPyBmL0pkfJTjzMnD7h/4DDBFjDPHl/0vHM7/Cjndx48238OMffo9gMDjcQ9ull156ibvvvpsnn3wST6CEkhmXETj+QvDkf6OUallB9OWHiK56FX+whNtu/TK3fflLhEL6AVt2S4EsIkMvHo/zwgsv9AXx0qVLMcbg8vrx1k0jOOl4POOOwYqM2+dL8YoMRLbnPRJNzxNreI7UlvU4nC7OPvc8bpx3PRdddBEul4vf/OY33HXXXWzdupXSo88ifNo1mMDOEX2wspNROv/+e3reeIxwZTUP/NsvuPTSS4Z7WH1eeOEF7r77bv72t7/hDYYonnkZgWM/3BfGO0q1rsqH8sqX8QeK+eIXv8hXb791VFx4RoacAllEhoYxhv/8z//k/vvvZ8mSJaTTaRxOF77aIyiacBz+CdtPrNPKEjK00lvWkmxcTHfDYnLRdoqCJVSPqWTN6tUEx0+j7KwboeLQvahG8t0mOp/6Gamt6znrwxfz4K9+QW1t7bCN5/nnn2f+/Pk8++yzeIvDlMz8KP5jz8fax6P66c1r6HnpIaIrluArCvL5L3yeO26/jbKywb/KoYxaCmQROfCam5v5zGc+w8KFC/FXjMNXP51g/fH5E+t0AQ0ZIYydI7nhbVJNi0lua6b8pMtx1s/Smtf0nsT32n/T9eKfcLvdfPe73+XWL35+yE7iM8awePFi7r77bp5//nm8JZF8GB9zPpZ7//4fkt6ylp6X/4to0wt4/UV87pZb+NpXv7LLqTZyyFEgi8iBY4zhgQce4NZbbyWeTBM+7Vr8x1140J3YJHKoyJ/E93Pia5dy2LTjeOgPv+W44447YO9njOGZZ57h7rvv5oUXXsBXWkbJrMvxTTsXyz04y/alt64n+vJD9DS+gMfn57M3f5av3/FVKisrB+X1ZVRSIIvIgbFhwwZuvPFGnn76aYITjqX8gi9giquGe1gi8gEZY4g3/Z2OZ3+Fnejh0zffwv/9wXcH9SQ+YwxPPfUU8+fPZ8mSJfhCFZTOuhzvtHOwXJ5Be59C6fc25kO54e+4vT5uuukmvvn1O6mqOnj/v5XL5ejq6qKzs3Ofb+l0ekjHWF1Tw3e/8x2mTp06lG+rQBaRwWXbNr/85S+54447SGVtImfMw3v0uTrZTuQgk0tG6X7+d3S/+QSRqhoe+LdfcMklH/lAr2mM4fHHH2f+/Pm88sor+MKVlM6+Au9RZ2O5hubCP5ltm+h5+b/oaXget8fDDZ+6kW9942tUV1cPyfsPRC6Xo7u7e5/CtqOjo/e+k47ODjo7u4hFe/b8BpaFyxfA4Q3m15n3FA3ZP4ftUq2rMOkEN37mZu75wXeHapk+BbKIDJ7Vq1dzww038Pe//53gpBOo+PAt2IGK4R6WiBxAyXcb6XjyPtLvbeScCy/hd/f/nJqagV1V0BjDwoULmT9/Pq+//jr+yBhKZ1+B58gzhzzItsu0NxN9ZQHd7zyLy+Xikzd8in/+5teH5QTFdDrNypUraWhooKGhgWXLlrGsoYE1q1dj2/budywMXF8ReAI4fEFcvgAufxCXL4jDtz1+A9ieIizv9u0DWB7/sB/cyMW76P7fP9D95pMUh8v46f/7v3zyumsP9LkBCmQR+eByuRz/+q//yje+8Q1ylpPImTfiOepMndwkcogwuQzdr/43XUv+E7fbzQ9+8H2+eMvn9noSnzGGRx55hPnz57N06VL8ZdWUnnglniNOHzGXis90tPaG8jM4HQ6uvX4ed3/rG4wdO3bQ3yubzbJ69WqWLVv2fgw3NLBq5Uqy2SwAluXAW1aLo2wsRRXjcAVCIzpwB0uqdRWdz/ySZPMKpn1oJn/4zb8dyPnvCmQR+WCampqYN28eL7/8MsWHzaL8vM9hF0WGe1giMgwyHS35K/Gte4PDjz6eh/7wW4499tidtrNtm7/+9a/Mnz+ft956C39ZDaGTPob78NNG7FKPmc42oq88TPfbT+NwWFxz7Se5+1vfYPz48QN+rVwux9q1a/siuKGhgXeWLWPFihVkts/xtSy84WqcZWPxV07AVzkBE6rFFak7YPOwRzpjbGLv/I3O5x/ETvRwzSc/xU/u+QGRyKB/z1Egi8j+yWaz3HPPPXz729/G8vgpO/szuA47RUeNRQ5x+ZP4ns9fiS8Z5TOf+wL3/OA7BAIBbNvmz3/+M9/5znd455138JfX9YbxqaNmdZts1xairzxM11tP4XDAVR+/lu9++y4mTJiw07a2bbNhw4Z+UyMaGhpobGoilUz2becNVeEsG4e/cjy+ygkQrsMRqcOxn0vYHexyySjdL/w73UsXESgp5Z4f/ZCbbvwUDsegHS1XIIvIwL311lvMmzePpUuXUnLUHCJn34Tx67KtIvK+XKKHrr//jp43n6RsTC1f+fIX+P2DD9LY2Ii/Yizhk+fimnLKqAnjHWW7txJ99c90v/kEFnDlVVdz1RX/1G+ucENjI/FYrG8fT2kFrrKxeCsm4K+agBWuwxGuy0+RkAFLb1lH599+SWJTA4dPO44Hf/1LZs2aNRgvrUAWkX2XTqf5/ve/z/e+9z1c/mIi596Me/KJwz0sERnBku820PHkz0i/t5GiqvGETpqLa/JJozaMd5TteS8fym88gcllAPAUR3CWjcNXOR5/5QSsSB2O8FgcvsFbCk/ytv/GovO5B8hG27ny49dx30/uoaLiA50grkAWkX3z+uuvM2/ePN555x1Kjj6TyJk3YnzFwz0sERkFTC5DZtsm3BUTDpqTxnaUi3aQ6WzFXVaH0z8kS5FJATsVp3vJf9L1+v/g8wf4/ve+w+c/dzMu137NaVcgi8ieJZNJvv3tb3PPPffgKY5Qfv4tOCdMH+5hiYiI7CTz3iY6n/k34uvfZOLhR/Hgr37JnDlzBvoyCmQR2b0lS5Ywb948VqxYQelx5xM645PgCQz3sERERHbLGEN85RI6n/012e6tfOTyj/HLf/3JQC72okAWkZ3FYjG++c1v8i//8i/4wlWUf/jzOOp2XqpJRERkpLLTSXpeWUDXK3/G7fHy7X/+Z26/9Uu43XtdY1uBLCL9LV68mBtuuIG1a9cSmn4RoTnXYTz+4R6WiIjIfsl0tND1zK+IrXmNuolT+O39P+fss8/e0y4KZBHJ6+np4Y477uAXv/gFReW1lF/wRazqo4Z7WCIiIoMivvpVOp+9n0xHG+dddCm/+vm/7u6KiApkEYEnn3yST3/602zatInQzEspOeXj4NIC9SIicnAx2TTdr/6FrpcW4HJafO1r3+Drd34Fr9dbuJkCWeRQ1tnZyW233cYDDzxAUeV4Ki74IlQdNtzDEhEROaCyXVvoeu7XRFcsoapuAr/55c+48MILtn9ZgSxyqOnq6uLJJ5/k0UcfZeGiRXR3dROafTnBEz+G5fIM9/BERESGTGLdUjqfuZ/0tnc5/dwLeOCX9zFx4kQFssihYM2aNfkgXriQ559/nmw2iydQird+OmUzL8WUTxzuIYqIiAwLk8vQ/fojdL34JxzY1N36l/L1P7xw20BeY78uRyIiQyuXy/HSSy/x6KOP8uijj9LU1ASAv3I8xTMuIzhlJlbVYVgOp35yFBGRQ5rldFM6658IHHUa3f/7B4DvAzcN5DUUyCIj1PapEwsXLmTRY4/Rvm0bDqcT/7ijGXPeTbgnzsBROma4hykiIjIiuYrLiVzwZYABXxFLgSwygqxdu7bvKPH2qRPuohJ89SdQd/psrLHH4fDqynciIiIHkgJZZBjlcjlefvnlvihubGwEwF85juIZlxKcMqtv6oSIiIgMDQWyyBDr7u7uW3WicOqEb+w0qs79NJ76GThK9/n68iIiIjLIFMgiQ2DdunX9pk5kMhncgRJ8E0+g7vQTscYeq6kTIiIiI4QCWWSQGGPYtm0bra2ttLS00NLSwvLly1m0aBENDQ0A+CvGETzhIwQPm4VVdbimToiIiIxAB30g27ZNMpn8wLdsNssRRxzBCSecwLRp03a8hKEcxIwxtLe309LS0i9+Cx83t7TS1tZKJp3ut6/ldFLUO3XCO3EGVkhTJ0REREa6URvIH/nIR/riNZFIkkgmSCR6gzaVJJVMkUolyWYyH+yNLAuHywNY2JkkAC6Xm8OPmspJs2Ywffp0TjjhBI4++mg8Hl21bDTZHr67i97W1lbebW7ZZfgCuPxBnMEIjqIwrpJJlNTNxF1chjMQxvhDEMw/drj1w5SIiMhoMmqvpBcZd7iJ2w5wenC43DhcHhxuT/6+92b1/tlyeXA43eDygNMNLjc4PBinC+P0YDndWL3bWS43lvP9xzhcWJaFMYZs12Yybauxt64h2bqaROsq7GQUyEfzEVOnceLM6YrmESIej7N+/XrWrl3LunXrWLt2LZs2beo94ttCW1sb6VRqp/1c/iCuYAQrEMYVLMNTEsFdXK7wFRERGZ3+ff0PL/zEQHYYtYF86v95zmxsjw/rGPYazW4PRxw1VdF8gNi2TXNzc1/8Fobw6jVr2bK5rd/2To8fd2lFb/hG8JSU9Q/fQARnMIzD7RumTyQiIiIHgAJ5uO0YzYnWVSRbV/eL5iOPmsrs3miePn0606ZNUzTvRldX107xm7+tY/2G9f2mPliWA09pBY7SKtyhMfgi1bjDYzCBChylY3AUlWJZ1jB+GhERERkGgx/IlmX5gL8DXvJzlh82xvyzZVm/A04Duno3vd4Y8+YeXudfgXnGmOAOz/8T8DAwwxjz+r4OfKQG8q70RfPm1dhbVpNoXb3baJ4xY0bfiYDbo9kYQzqdJh6PE4/HSSQS/e5393hPz8V6n4/F4yTiCRKJOJlMFp/Ph7+oCL/fT6CoiKIiP8FAgKLe54qKinb7eG9f3/7Y6Xx/5YZ0Os3GjRv7BfD2+zVr1tLZ2dHv79JdVIIrVIWjpApfpBpvuBqrpBJTXIWrpALLOWqn1YuIiMiBMeBA3peaSAFnGmOilmW5gRcsy3q892tfMcY8vLcXsCxrOhDexfPFwBeBVwYw5lHHsizcoTG4Q2Pg8FMI0hvNnW35aN66hjWtq2n4w5/41a9+BeSjubi4OH/SYSLOfh3ptxw4PV4cbi+WK3/D7cFyesHlwekJ4vBFcBT7cHq8uCwndi5DNJ2kO5PCjqbIdcQwmXZMNgXZNCabws6kMJkUdnbnE9f2hdvjwefz4fF46Wjfhm3bfV9zuNx4QmOwSirxTjqJMZEanKVV2MHKfBhrrWARERE5wPYayCZfZtHeP7p7b/tca5ZlOYF7gKuBy3b48neAHwFf2dfX225zd3Kgu4wolmXhDlfjDlfDEXP6RXO6bTXpzavJpBO4XB5KXF6s7ZHr9uZPIHR7cbi8WG5PwfPe3ufzX99+guGBYoyNyaYxmVS/ezuTwmR7b70xvavnU9kMxYeFcYXG4ApV4Sodg7M4gmU5DtiYRURERPZmn34f3Ru5/wAmAz8zxrxiWdZnge9ZlvUt4BngTmPMzksCwC3AI8aY1sJYsyzrQ8BYY8wiy7IGHMjhIjfdyexAdxv5quryN04f7pHsAyd43YCO6oqIiMjIFE/nFg90nwGdpGdZVgj4b+DzwDagDfAA9wNrjDHzd9i+Bvgv4HRjTNayrKgxJmjlDxE+S37e8nrLshYDtw9kDjIDOIotIiIiIoesAf86fUC/yzbGdALPAecbY1pNXgr4LTATwLKsJy3LetOyrF8Dx5M/6rzasqz1QJFlWauBYmAasLj3+dnAI71zlUVEREREhs1ep1hYllUBZIwxnZZl+YFzgB9ZllXdO23CAi4FlgEYY87b4SXGFLxW1BgzufeP5QXPL2bgR5BFRERERAbdvsxBrgYe7J2H7AD+yxiz0LKsZ3vj2QLeBD5zAMcpIiIiIjIkRu2FQtAcZBERERHZuwM7B1lERERE5GCnQBYRERERKaBAFhEREREpoEAWERERESmgQBYRERERKaBAFhEREREpoEAWERERESmgQBYRERERKaBAFhEREREpoEAWERERESmgQBYRERERKaBAFhEREREpoEAWERERESmgQBYRERERKaBAFhEREREpoEAWERERESmgQBYRERERKaBAFhEREREpoEAWERERESmgQBYRERERKaBAFhEREREpoEAWERERESmgQBYRERERKaBAFhEREREpoEAWERERESmgQBYRERERKaBAFhEREREpoEAWERERESmgQBYRERERKaBAFhEREREpoEAWERERESmgQBYRERERKaBAFhEREREpoEAWERERESmgQBYRERERKaBAFhEREREpoEAWERERESmgQBYRERERKeAa7gGIiIxEsViMlpYWWltbGTt2LBMnThzuIYmIyBBRIIvIISUWi9Ha2kpLS0tfABc+bm7OP45Ge/rtVzN2POefew7nnnM2Z555JhUVFcP0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" /></div>
</div>
<div class="nb-cell nb-markdown-cell">
<p>Looks quite good already. but since most of our customers were in the age bracket 25-34 and we want to visualize the difference in their behavior rather than absolute numbers, let&#8217;s normalize the data.</p>
</div>
<div class="nb-cell nb-code-cell">
<div class="nb-input" data-prompt-number="11">
<pre class=" language-python"><code class=" language-python" data-language="python">df_norm <span class="token operator">=</span> <span class="token punctuation">(</span>pivot <span class="token operator">-</span> pivot<span class="token punctuation">.</span><span class="token builtin">min</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token operator">/</span> <span class="token punctuation">(</span>pivot<span class="token punctuation">.</span><span class="token builtin">max</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">-</span> pivot<span class="token punctuation">.</span><span class="token builtin">min</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span>
df_norm<span class="token punctuation">.</span>head<span class="token punctuation">(</span><span class="token punctuation">)</span></code></pre>
</div>
<div class="nb-output" data-prompt-number="11">
<div class="nb-html-output">
<div>
<style scoped="">
    .dataframe tbody tr th:only-of-type {<br />        vertical-align: middle;<br />    }</p>
<p>    .dataframe tbody tr th {<br />        vertical-align: top;<br />    }</p>
<p>    .dataframe thead th {<br />        text-align: right;<br />    }<br /></style>
<table class="dataframe" border="1">
<thead>
<tr style="text-align: right;">
<th>Age</th>
<th>18-24</th>
<th>25-34</th>
<th>35-44</th>
<th>45-54</th>
<th>55-64</th>
<th>65+</th>
</tr>
<tr>
<th>Hour</th>
<th></th>
<th></th>
<th></th>
<th></th>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<th>0</th>
<td>0.356061</td>
<td>0.313531</td>
<td>0.096429</td>
<td>0.130</td>
<td>0.206349</td>
<td>0.0</td>
</tr>
<tr>
<th>1</th>
<td>0.280303</td>
<td>0.103960</td>
<td>0.114286</td>
<td>0.080</td>
<td>0.333333</td>
<td>0.0</td>
</tr>
<tr>
<th>2</th>
<td>0.159091</td>
<td>0.018152</td>
<td>0.000000</td>
<td>0.055</td>
<td>0.039683</td>
<td>0.0</td>
</tr>
<tr>
<th>3</th>
<td>0.000000</td>
<td>0.018152</td>
<td>0.021429</td>
<td>0.000</td>
<td>0.039683</td>
<td>0.0</td>
</tr>
<tr>
<th>4</th>
<td>0.037879</td>
<td>0.000000</td>
<td>0.000000</td>
<td>0.000</td>
<td>0.000000</td>
<td>0.0</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
<div class="nb-cell nb-markdown-cell">
<p>Now that the data is normalized, let&#8217;s see how a joy plot would look like.</p>
</div>
<div class="nb-cell nb-code-cell">
<div class="nb-input" data-prompt-number="12">
<pre class=" language-python"><code class=" language-python" data-language="python">fig<span class="token punctuation">,</span> axes <span class="token operator">=</span> joypy<span class="token punctuation">.</span>joyplot<span class="token punctuation">(</span>df_norm<span class="token punctuation">,</span> kind<span class="token operator">=</span><span class="token string">"values"</span><span class="token punctuation">,</span> x_range<span class="token operator">=</span>x_range<span class="token punctuation">,</span> ylim<span class="token operator">=</span><span class="token string">'own'</span><span class="token punctuation">,</span> overlap<span class="token operator">=</span><span class="token number">1.5</span><span class="token punctuation">,</span> figsize<span class="token operator">=</span><span class="token punctuation">(</span><span class="token number">10</span><span class="token punctuation">,</span><span class="token number">8</span><span class="token punctuation">)</span><span class="token punctuation">)</span>
axes<span class="token punctuation">[</span><span class="token operator">-</span><span class="token number">1</span><span class="token punctuation">]</span><span class="token punctuation">.</span>set_xticks<span class="token punctuation">(</span>x_range<span class="token punctuation">)</span><span class="token punctuation">;</span></code></pre>
</div>
<div class="nb-output" data-prompt-number="12"><img decoding="async" class="nb-image-output" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAsgAAAI1CAYAAADLpwyxAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvnQurowAAIABJREFUeJzs3Xd0VNXax/HvtEwmZdIrEEoITTqE3iH0DoIURVDAcrGhKCJFRQSxYkHpUlSU0KSJIAgKhCaI9N7SQ0gvU877B8qr96JSkjkzyfNZ667rYubs/ctKMvNkz3P21iiKghBCCCGEEOIGrdoBhBBCCCGEcCZSIAshhBBCCPEnUiALIYQQQgjxJ1IgCyGEEEII8SdSIAshhBBCCPEnUiALIYQQQgjxJ3q1A9wD2Z9OCCGEEEL8G82dXiAryEIIIYQQQvyJFMhCCCGEEEL8iRTIQgghhBBC/IkUyEIIIYQQQvyJFMhCCPEPDh06RHx8vNoxhHAq2dnZrFu3DrvdrnYUcRcUReHcuXOsWLGCixcvqh3HKWkUxWU3g3DZ4EII15CXl0dwcDB6kzeHD+wlolxZtSMJobqMjAy6dOnC7t27GTxyDMvmzFI7kvgXGRkZ7Nu3j7i4OPbs2cOeuDhSU1IAMHn7sm3rFhpHN1A5ZbG6410spEAWQoi/sXr1avr06QMaLSEVqnL6cBze3t5qxxJCNenp6XTu3Jn9Bw7iHlGL3PO/MGn6e7z64jNqRxO/s9lsHD169GYxHBcXx7Fjx/ij3nMPLIchrApe5aqDdwgpG2ehseazbesWmjdppHL6YiMFshBCFJWhQ4fyzep1+HQaQ8qqadRq2oZfdmxGp9OpHU0Ih0tLSyMmJoZfj/xGaN+X0ZWvT0rs6+RdOMiyr1cyuF8vtSOWSgkJCcTFxd0siPft309OdjYABg8zhrAqeJathjG8KgRHoXP3+sv1luuJJH/1MhTm8v13G2nTsoUaX0ZxkwJZCCGKQkFBAcHBwSgVG+Pf+WmyDq7n2vez6Tl4BGuWzVc7nhAOlZycTIcOHTh+4iSh/Seii6gHgL0gl6QvX8KWnsCOnTto1qihyklLtry8PH755ZebK8O79+zh8qVLAGh0OtxDInH7fXVYE1wZrW84Gs2/14bWzGSSv3wZJS+T9RvW07Fdm+L9QhxPCmQhhCgKGzZsoFu3bpQb9BraiPoAXPthHln7VvP85GnMnDJe5YRCOEZiYiLt27fn1JlzhPWfhLZc7b88bs1KJWnJWAw6LccPH6B8RDmVkpYsiqJw5syZv7RKHDp0CKvVCoDRNxh9WFW8ylbDEF4VTUBFtAbjXc9nzUol+asJ2LOvsebbtXTr2KGovhRnIAWyEEIUhREjRrD0q28Ie3IJGp0BAEWxk7L6TfJO7WHu4i959MGBKqcUonhdvXqVdu3acf7iZcIGTEETft8tn1eYfI6kZS8SEFaOM7/uw2w2OzhpybBjxw62b99+oyiOi+NaWhoAOqMJY2gU7mWq4lGmGkpwFHov/yKf35adTvLyCVgzkli5cjW9uncu8jlUIgWyEELcK4vFQkhoKNbwOvh3G/uXx+yWfJK/fBlL6kW2bN1G25ZNVUopRPG6dOkS7dq143J8IqEDXkUTWu0fn5937gDJK16lRnRLDv+8Bb1e76CkJcPKlSvp168faDSYgiLQh1XBq2x1tKFR6Pwj0Ggdc++DLec6yctfwZJ+la++XsGAPj0dMm8xkwJZCCHu1ZYtW4iJiaHcgEloK/7vXd22nHQSlzyPzm7h14P7qFK5kgophSg+58+fp127dsQnpxI28HUIjrqt67IObeLadx/RZcBDrP9q0W31v4ob7RT169fn1NU0Aoa8jdboqWoeW14mKcsnUph6icXLvmTowH6q5ikCd/yDKAeFCCHEf1mxYgV6ownK1rnl4zpPP4L7T8FiKaRJ6w6kp6c7OKEQxefMmTO0bt2ahJRrhA+adtvFMYB33c6YG/dj49eLeW7i1GJMWbJs2rSJQ4cO4dOkv+rFMYDOZCbogTdwC67IQ4MHsmDJl2pHcjgpkIUQ4k9sNhurVq3CvVLDf7zhxRBYjqDeL5OeeJlG7bpSWFjowJRCFI8TJ07QqlUrktOzCBv8JkrgnX864tt6GB5VW/D+G5P4dNGyYkhZ8kybNg13v2AMVVupHeUmnbsXwQNfxy0sikceHsrsBYvVjuRQUiALIcSf/PzzzyQnJ+N7X8t/fa57+doEdBnDmUN76NRvKC7csiYER48epU2bNqTnFBA2eBqKf/m7Gkej0RLQ7VmMZarxxMgRfL99ZxEnLVl27tzJTz/9hLlR35s3BDsLrdGT4Ptfw71MDZ54dDgffDpP7UgOIwWyEEL8yYoVK9AZjGjK1but53vVbI9P80FsX/cNo8dOKOZ0QhSPw4cP06ZNGzLybYQOfhPFL+KextMajAT1nYjOy5/uPXpy/NTpIkpa8kybNg2jty/u9znntmpaowdB/afgHlGLZ54YxcxZs9WO5BBSIAshxO/sdjsrV67EvWJ9tG6m277Op/lgPO9ry9z33uSdT0rPCosoGQ4cOEDbtm3JsWkJG/Imik+ZIhlX5+FDcP8pWK1WmraJIe33LcvE/zt48CCbNm3Cu2EvNAZ3teP8La2bO0H9JmGqUJdxTz/BG+/MUjtSsZMCWQghfrd3716uXr16W+0Vf6bRaAjo/BTGcjV54aknWLtpSzElFKJoxcXF0b59e/I1RkIHT8fuHVak4xsCyhLU9xUyk68S3bYLBQUFRTq+q3vzzTdxM3nhWaer2lH+1R+fCpgio3nl+aeZNO1ttSMVKymQhRDid7GxsWh1erTlG9zxtRq9gaC+r6D3DaFf374cPnKsGBIKUXR+/vlnYmJisOg9bxTHXsHFMo97uZoEdH2G80f2EdNnsPTq/+7EiRPExsbiVb8bOMHOFbdDo3cjqM/LeFRpyusTXuDFKdPUjlRspEAWQghu7EO6YsUKTBXr3fU2Szp3L4L6T0HRaGnRviNJSclFnFKIovHjjz/SqVMnbO6+hAyejt0zsFjn86zRBp+WQ9m5cSWPPP1isc7lKmbMmIHOYMS7gWsdxKHRGQjs+SIeVVvw1qsTeGb8ZLUjFQspkIUQAvjll1+4cOECPtVb3NM4Bt9QgvpNIic9hQatY8jLyyuihEUvNzeX1157jbJlyzH80dGkpqaqHUk4wNatW+nSpQt4BREy6E3sHkV/ZPGt+DQdiGfNDiz8cCYzZn3qkDmd1cWLF1m6dCledTqByUftOHdMo9MT2PMFPGu04YPpr/HE2PEl7pMBKZCFEIIb7RUarQ5dpeh7HssYXpWA7mO5evIIrbr2w263F0HCoqMoCl9//TXVq1dn8uTJXNOaWbRgHuUqRvL2u+9hsVjUjiiKyaZNm+jevTtanzCCHngDu8nXYXPf6NV/EvfydRj/3BhWrv/OYXM7m5kzZ2IHfBr3UTvKXdNodQR0exbPmh2Y/e50Hh3zfIkqkuWoaSFEqacoCtWqVeOqxZPAAa8X2biZe1eSvm0BAx95kq/mfVRk496LX375haeffpqdO3fiGVaZwJhREFaDwpSLZGybR+75XyhbMYp5sz+kU6dOascVRejbb7+lf//+GAIjCB7wOnajtyo57PnZJC4bh5KdRtye3dSvU0uVHGpJTEykQoUKuFdrjW/np9SOc88Uxc617z4m+/B3DB35HxZ/NssZjxiXo6aFEOJOHT16lFOnTmG+x/aK/+Yd3Qevel1ZPv9jJs14v0jHvlPJycmMGjWKBg0asPeXI4R2HUPA0HcgrAYAbkHlCbz/NYL6TiTpejadO3embceunDlzRtXcomisXLmSvn374hZckaABU1UrjgG07l4E95+ConOjVftOxCckqpZFDe+//z6FFgt+ze5XO0qR0Gi0+Hd6Eu/63Vg69yMGDn+sRKwkS4EshCj1YmNjQaPBENmoSMfVaDT4dxiNqVJDXh8/lmUr1hTp+LejsLCQd999l6ioKOYvWIhPdC9CR36GsVYnNFrd/+T1iGpM2IhP8G3zMD/+uJ2q1aoz5tmxZGZmOjy7KBrLly9nwIABuIdXIfD+11GMXmpHQu8TTFC/SeRmXqNhqxhyc3PVjuQQ6enpfPLJJ3hVa4FiLtot9dSk0Wjx6/AY3g178c3nc+gzZITTtZbdKSmQhRCl3ooVK/CMqInGw6/Ix9ZodQT2HIdbcAWGDRnErr37i3yOv7Nx40Zq167N2LFjsQdXIWLkx/i0fRTc/nmXDo3egE/j/pQZOQfP+9ry0fvvUrZCJHPmzXf5N73SZunSpQwePBhT2RoE9n8Vxc1D7Ug3GcOiCOzxAglnjtKiSx9sNpvakYrdxx9/TFZWFv7NB6gdpchpNBr82j2KuXF/1ny5iO4Dhrr091R6kIUQpdqpU6eoWrUqIZ0ew71u92Kbx5qVStKSsRh0Wo4e2k/F8vd2lO8/OXnyJM899xwbNmzAI6gcAe0fvau9nf9QkHCKjB/mknflOFH31WbhZ5/QvHnzIkwsisPChQt55JFH8KxQm8A+k1AMRrUj3VLm/jWkb51Lv2GjWbGo5O5ukZOTQ/ny5SnwjySg7yS14xQbRVHI+OkLMnZ9SYee/dm08it0Ot2/X1i8pAdZCCHuRGxsLABukU2KdR69dyBB/SdTkJtN49YxxdKycP36dcaOHUvNmjXZsu1Hgjo8SuCwWfdUHAMYw6oQNPgtAns8z/lLV2nRogU9+w3gypUrRZRcFLU5c+YwYsQIvCrVJ6DvRKctjgHMDXvh3aAHsZ9/xoSpJfd0trlz55KWloZ/s4FqRylWGo0G35ZD8Gk5lC1rV9Cuez+X3BlHVpCFEKVagwYNOJGcR9CQmQ6ZL+/cAZJXvEqN6BYc/nkrer3+nse02WwsWLCACRMmkJqairluJ/xaPohSDPur2gvzyYpbQcbeleh1Wl4Y9yKvjH8Rk8lU5HOJu/PRRx8xZswYvKs0wr/nS6BzUzvSv1LsNlJWvUHe2f0s+uJrhj3QT+1IRaqgoIDIyEgyDAEEDCy5p8/9t4y4FVzfvoim7buyfcMq3NxU+1mUFWQhhLhd58+f5+DBg3hVa+awOU2VGuDf8QmO7d1Bj8Ej7vlu7x07dtCwYUNGjRpFnkcI5R+ZhW/H/xRLcQygdXPHp+VQwh+djbFSQ6a9/ioRlaL4avnyEnHnuqt79913GTNmDOZqzfDvNd4limP4vVe/xzjcQioxYthQduzeq3akIrVkyRKuXr2KX/OSvXr833wa98ev3Uh2b91A85juFBQUqB3ptkmBLIQotVauXAmAe5TjCmQA77qdMTfux6ZvlvDsK3e37/LFixcZOHAgrVu35uTFeMr0HY//wDdRAioWcdpb0/uEENDzJUIGvUmWYmTQAw9Qv3FzDh065JD5xf+aPn06Y8eOxVyjJX7dx4HWoHakO6J1cyeo3yS07t506tKVcxcuqh2pSFitVqZPn45nmSpoytRWO47DmaN74R/zOPt3fE+Ttp3Jz89XO9JtkQJZCFFqrVixAo/wKDTmEIfP7dt6GB5VW/DBtMnMXrjstq/Lzc1l8uTJVKtWjZWr1xLQaihBIz5BH9Vclc353SNqEfLQe/h3+g9Hjh6lXv36DBn2CCkpKQ7PUlopisKrr77K+PHj8anZFt9uz4Pu3lt31KD38ieo/2QK8/No1KoDGRkZake6ZytWrODs2bP4NhvgjAdoOIR3/W74dx7Dod0/0qhNJ5fYDUd6kIUQpdKVK1coV64cgW2G4dlYnQ377ZYCkpdPoDDpHJs2b6Fj25Z/+1xFUVi+fDkvvPACV65cwXxfa/zbDkfxDHRg4n9mz88mY9eXZB5Yh7vJgymTJ/Hs00+p2XdY4imKwtixY3nvvffwqRODT8f//M/+1q4o78Ihkr+ZTNV6TTmy+wcMBtdaDf+D3W6nbt26nE3KJPDhD9FoSve6ZNbB9Vz7fjYvTH2PtyY848ippQdZCCFux6pVqwDwqOrY9oo/0xqMBPWdiM7Lnx49e3L81OlbPu/AgQO0bNmSQYMGkW53p/ywmfh1f8GpimO4cUKaX7uRhA//CG1IFV4a9wIVq9Rgw4aNakcrkWw2GyNHjuS9997DL7oXPp3GlIjiGMBUoS4BnZ7k5IGf6DbwYZftb1+/fj1HjhzBt+n9pb44BvCq1xVjmeq89+arJKWmqR3nH8l3SwhRKq1YsQJTSAU0vmVUzaHz8CG4/xSsVitN28SQlvb/bxpJSUk8+uijREdHc+DXY4R2e4aAIe9AaHUVE/87Q2A5AvtPIaj/ZFKz8unWrSst23fi1KlTakcrMQoLCxk0aBDz588noMUgvNs+WuIKMK/aHTE3HcD3q75gzPgpase5Y4qi8MYbb2DyD0UfVbTH2LsqjUaDX4fRWHMyGDh6rNpx/lHJ+m0SQojbkJSUxM6dO/Goot7q8Z8ZAsoS1PcVMpOvEt22C1lZWbz99ttERUWx6PPP8W3cl9BHPsNYs4PLrBBqNBo8IqMJHfERfm1HsOvnn6heowaPj3mmRPSVqik3N5fevXvzzTffENThUbyaDymxva2+LYfiUb01H894jY/mLVY7zh3Zvn07cXFxmBv3Q+OiPeHFwRhaGa+6nfhx1RK27zmgdpy/JT3IQohS57PPPuOxxx4j4tGP0QSUVzvOTTnHtpP67du4e3iSn5uDd5XGBLZ7BLtPuNrR7pktJ53MnUvJPLwZL18/5s2Zw8D7S9Zet46QkZFBjx49+OmnnwjuOgb3mh3VjlTsFKuFpOUTKEw8zfqNm+nSoY3akW5LTEwMO/ceJGTkPDR66cP/M1tuBvFzRxNaqRpXftvriD/wpAdZCCH+TWxsLKbAsuBffMc93w3PGm3wa/sIik8Zyg16Hf8+E0tEcQyg8/TDr/MYQoe9h9UjkEEPDCR23Sa1Y7mU1NRU2rVrx8+7dhPWe1ypKI4BNHoDQX1fQe8dRK/evTl6/KTakf7V3r172bJlC+bo3lIc34LOwwfflkOJP7af6bM/VzvOLckKshCiVElLSyMkJASfxv3wbvmQ2nFKJXtBDknLxmHPSmXPnl00qFP69oa9U1evXiUmJobTZ88R2vdldPd4fLgrsqTHk7TkeTzNPpw5cpCgIOe6SfXP+vTpw4bvfyBs1Dxw81A7jlNS7DYSFj2N1pJL8qWzmL29inM6WUEWQoh/snbtWmw2G17VmqsdpdTSGj0J6j8ZRedG6/aduBqfoHYkp3b27FlatGjB2QuXCB/4WqksjgEMfuEE9p1IVmoiDdt0ctoDJ44ePcrq1avxqt9diuN/oNHq8O8wmoLryTz09AS14/wPKZCFEKVKbGws7v6hEFhJ7Silmt4cTFD/yeRmphPduiO5ublqR3JKv/32Gy1btiQhJZ2wQdPQhN+ndiRVuZetTkC357h07CDteg50ygMnpk+fjt5owrt+D7WjOD33iFp4VG/F2sWz+eWoc7XOSIEshCg1MjIy2Lx5M+5RzUrsXf+uxBhamcCe40g4e4zmnXtjs9nUjuRU9u3bR+vWrUnPtRA2dDoERaodySl4Vm+Jb+th7P5+LQ8/+bzacf7i3LlzfPnll3jX7QLu3mrHcQl+bUaAVsuAEU+oHeUvpEAWQpQa69atw2KxYK4u7RXOwqNyY/zaj+TQzu8ZMOJJteM4je3bt9OuXTvyNUbChsxA8S2ndiSnYm7cH686nVjy6Xu88d7Hase5aebMmaDR4hPdW+0oLkNvDsSn6UDO7P2BOV+uVjvOTVIgCyFKjdjYWIw+QRAcpXYU8SfmBj3wbtCTlYs/4+WpM9WOo7p169bRuXNnFM9AQgbPwO4donYkp6PRaPCPeRz3CvV45fmn+WbNBrUjER8fz4IFC/Cq1QHF01/tOC7FHN0HvW8Yzz3zNIWFhWrHAaRAFkKUEtnZ2WzcuBH3qKYl7sSxksCv3SOYoprw5qSXWPRVrNpxVPPVV1/Rp08fDEEVCB40DbuHFFp/R6PTE9R7PG4B5Rj0wAD2Hjykap53330Xi9WKX9P+quZwRRq9Ab/2I8lJvsSol6aqHQeQAlkIUUps3LiR/Px8fKS9wilptDoCuz+PMSSSRx4ayo+74tSO5HBz5sxh8ODBmMpWJ2jAVOxGs9qRnJ7W6EFQ/8mgN9K2Q2cuX7mqSo60tDQ+/fRTvGu0RpEV/7viUbkRpkoNWfLxO5y9eEXtOFIgCyFKh9jYWNy8/SC0mtpRxN/QurkT1G8SWg8znbp04+z5C2pHcpiZM2cyevRovCpH499vCnaDSe1ILkNvDiK4/2TysjOIbt2R7Oxsh2f48MMPycnJwb/p/Q6fuyTxaz8Su7WQ/o+MUTuKFMhCiJIvLy+PdevW4V65CRqtTu044h/ovPwI6jcZS0E+jVvHcP36dbUjFStFUXjllVcYN24cPve1xr/XeNAb1Y7lctxCIgns9SJJ50/QvFMvh+6IkpWVxaxZs/Cu0hTFyU7ndDUG/zKYo3tzaOtqVmz8QdUsUiALIUq8zZs3k5OTg0+NFmpHEbfBLag8gb3Hk3b1PI3bd8disagdqVjY7Xaeeuop3njjDXzrdcan63OgM6gdy2V5REbj32EUv+76gX7DRjts3s8++4z09HT8mw9w2JwlmU+zgei8/Bn1+JOqbv0oBbIQosSLjY3F4OGNJqx0H7LgSkwV6hLQeQynDv5M14HDUBRF7UhFymq1Mnz4cD766CP8m/TFHPOkfLpRBLzrd8c7ujdrls1n3JTpxT5ffn4+77zzDl6V6snuOEVE62bCt81w0i+eYNy0WerlUG1mIYRwgMLCQtasXXujvUKnVzuOuANetTrg03QgW1Z9yZPjJqkdp8gUFBQwYMAAFi9eTGDrB/FqNVwOrilCfm1HYKrSlJmvvsz8pV8X61yLFi0iMTER/+YDi3We0sazRhuMZWswa8arJKakqZJBCmQhRIm2detWMjMy8JX2Cpfk03IoHjVaM/vtqXwwZ5Hace5ZTk4OPXr0YNWqVQR3HI1nk4FSHBcxjUZLYPexGMOiGDXiIbbt3F0s81itVmbMmIFnueogn04VKY1Gg3+Hx7DmZjFg1LOqZJACWQhRosXGxmJw90RTprbaUcRd0Gg0BHZ5BmPZ+3j2yVGs36zujTv34vr168TExLBl61ZCezyHqV4PtSOVWFqDO0H9JqL18KVLt+6cOnOuyOf46quvuHDhAv7NBsgfOcXALaQSXnU6sXPNMn7Ytd/h82tcuK/LZYMLIRzDarUSEhqKJbQ2/t3Hqh1H3ANbXhZJS5+H/CwO7oujZg3X2q4vOTmZjh078tvRY4T2fhF9ZBO1I5UKltTLJC57AZ+AYM4e2Y+fn1+RjGu326lVqxYXruUR+NAHcvhQMbHlZRI/ZzQhFatw9ei+e/lD5I4vlO+oEKLE+vHHH7mWlobPfXI4iKvTmbwJ6j8FO9C8XUeSk1PUjnTbLl26RMuWLTl6/CTh90+W4tiBDIHlCOr9MukJl2jUrmuRHWO8du1ajh07hm/TAVIcFyOdyYxvqwdJOH6AaR8vdOjc8l0VQpRYsbGx6N3c0ZStq3YUUQQMfmEE9Z1IVmoi0W06kZ+fr3akf3Xq1ClatGjBhSvxhA+aijZCfhYdzb18bQI6j+HMoT107j/0nndEURSFN954A1NAOPrKzYoopfg7XnU6YQiuyOuvjCczy3GHwEiBLIQokWw2G6tWrcI9siFag7vacUQRMZapTkD3sVw6/gttew7AbrerHelv/frrr7Rs2ZKU69mED34TjZziqBqvWu3xaT6Ibd9+w2NjJ9zTWFu2bGH//v34NOkvW/M5gEarw7/DaAoykhn61MsOm1cKZCFEibRr1y4SExPxrdFS7SiiiHlWa4Fvm4fZ8/23PPTEc2rHuaXdu3fTunVrsiwQOmQ6SkBFtSOVej7NB+N5X1vmvPcm73wy/67HmTZtGu6+QbhVa1uE6cQ/cS9XE48arVm35FMO/nbCIXNKgSyEKJFiY2PRGdzQlKundhRRDMyN+uFVpzPLPvuA19/+UO04wI2P3rdt28bgwYNp06YNhXpPQofMQPEpo3Y0wY0dUQI6P4WxXE1eeOpx1m7acsdj7Nq1i+3bt+Md3QeNXk49dCS/NsNBq2PAiCccMp/sYiGEKHHsdjsR5cuT4VGWgD6vqB1HFBPFbiN5xWvkX/yFr1asYWCf7qrkSE5O5vPPP2fu3LmcPn0aNw9vTDXa4t9sAHaTryqZxN+z5WeTtPR5lNwMDuzdQ+2aNW772h49evD99p2EjJqPRlq3HC5jzzdc//FzPl26ktFD+tzJpXe8i4UUyEKIEicuLo4mTZpQpvfz6Ku2UTuOKEb2glySvngRW0YSP//8E40bOOYTA7vdzrZt25gzZw6rVq3CYrHgWb4mPvU6o6vUFK3B6JAc4u5YrieStGQsJk8vzhw5SEhI8L9ec/jwYerWrUtg6wfxbCIn56lBsVqIX/AERoOBtEunMBpv+/dMtnkTQojY2Fi0Oj3a8g3VjiKKmdboQVC/yWAw0S6mC5cuXynW+RITE5k+fTpRUVF06NCB1es34VmvG+VHf0rgA9MxVG0jxbELMPiGEtRvEjnpKTRsHUNeXt6/XjN9+nQM7p541uvmgITiVjR6A37tR5GTfIlRL00t3rlkBVkIUZIoikLlypVJ0vgT2H+K2nGEgxQmnSPpixcJKlOB04fj8Pb2LrKx7XY733//PXPnzmXNmjVYrVY8K9TGt25ndJFN0Ojdimwu4Vg5J38mdfV0GrbtTNyWdWi1t143PH36NNWqVcOncT/MrYY5OKX4b8krXqXg8lFOnDhOVMWI27lEVpCFEKXboUOHOHfuHD41WqgdRTiQW0glAnuOI+nCSZp36oXNZrvnMePj43njjTeIjIykc+fOfPvdVrwb9qL86DkEDpyGvmorKY5dnGfV5vi1Hc7+bRsZMurpv33eW2+9hUZnwBzdy4HpxN/xaz8SxVbI/Y8+VWxzSIEshChRYmNj0Wh16CpGqx1FOJgpMhr/mMc4snsbfR4ceVcHQthsNjZu3EifPn2IiIjglVdeIUXjS5l+LxE6eiHm1sNMsDGEAAAgAElEQVTBN7wY0gu1eEf3wateV76a/xGTZ7z/P49fuXKFzz//HK/aMSA3XToFg1843tG9OfzDGr7ZsLVY5tAXy6hCCKECRVFYsWIFHhG10Jp81I4jVOBdryvW9AS+/XIhL0RV5u1Xb+9ggStXrrBgwQLmz5/PpUuXMHr7YW7UF3OdjuATVsyphZo0Gg3+HUZjy0jmtZfHUrVyRQb3+/+V4nfeeQebXcGvST/p7XQiPk0HknN0G6Mef5I+Z39Dry/aklZ6kIUQJcbRo0epWbMmoV2fxFiri9pxhEoUxU7q6unkntrN3MVf8uiDt95xwGq1snHjRubOncv69eux2+14RdbHt15ntBWi0ehkn9vSxF6QS9KXL2FLT2DHzh00a9SQlJQUypcvjyGqOX5dnlE7ovgvOcd+JPXbmTz76ju8O+kfDw2SHmQhROkVGxsLGg2GSk3UjiJUpNFoCeg+FmN4FUY/Mowfduz6y+OXLl1i8uTJVKhQgZ49e7L5x134Nrmf8o/PI6D/a+gim0lxXArd2BFlEhqjBx06deXipct88MEH5Ofn49/0frXjiVvwqN4KY9n7+HDGayQkpxbp2LKCLIQoMerUqcOZ6zaCBs1QO4pwArac6yQuHYvWVsgve/dw+uRx5syZw8aNGwHwjGyIb71OaMs3RKOTjkNxQ2HyOZKWvYh/aFksGcnYw2vh3/MltWOJv1GYfI6ERc/QoucQdq5e/HdPk4NChBCl0+nTp6lSpQohHUfjXq+H2nGEk7CkXSZx6QvYC3JAUTD6BOJZKwbv2h3BO0jteMJJ5Z07QPKKV0GxU+GRD1ECK6odSfyDtM2zyT60kS0799C++S1v0L7jAln+ZBZClAixsbEAGCtLe4X4f4aAcgT1m0Te4Y341GiFpnx9NFqd2rGEkzNVakBgz3EoGQlSHLsA35ZDyD2+g6GPPk78sX1oNHdcD/8PWUEWQpQI0dHRHEvIImjoO2pHEUII4WBZv2zg2uZPeO2DuUx86tH/flhaLIQQpc/FixepUKECwe1HYGrYV+04QgghHEyx20j4/Fm0BdkkXTqDj/kvp2nKLhZCiNLnj/YK96hmKicRQgihBo1Wh3/MaAoykhn61Ph7Hk8KZCGEy4uNjcUjLBKNT6jaUYQQQqjEvex9eNZow/qlczhw5Pg9jSUFshDCpV29epVdu3bhUaW52lGEEEKozLfNcNDqGDDiiXsaRwpkIYRLW7VqFQAeVaW9QgghSju9dwA+zR7g3P7tzF4ae9fjSIEshHBpsbGxmILLo/Erq3YUIYQQTsDcsBd6v3Cef+5Z8vML7moMKZCFEC4rOTmZHTt24FFFVo+FEELcoNEb8G8/ityUy4x68fW7GkMKZCGEy1q9ejV2ux3Pai3UjiKEEMKJmCIbYoqMZtmn71LhpfXmO71eCmQhhMuKjY3FFFgG/CPUjiL+gaLYseVlYbl2lfwrx8g9HYc1K03tWEKIEs6v/Uh+P+/jhTu9Vo6aFkK4pGvXrvHDDz/gHd2nSI4VFbdHURSUwjxseZnY8zKx52be/G9bXib23Izf//9P/5aXBYr9L+PoPP0Ifegd9OZglb4SIURJZ/ALp8zjCwDu+LxwKZCFEC5p7dq1WK1WvKvJ9m73ypabgS07DdsfRW1uxo3iNy/z///tT8UwNsutB9Jo0XqY0Zl80HqYMQRGYDSZ0ZnMaD3MaE1mdB4+YLeT8u1Mkr95ldChb6E1ejr2CxZClBo60x13VwBSIAshXFRsbCzufiEQFKl2FJel2G1k7P6ajJ+//J8VXgCtu9fNolZvDkYbUhndH4WuyYzWw+dm8aszmdEYPW97NT+o93iSv5lMyurpBPefjEYnb0dCCOchr0hCCJeTmZnJ5s2b8ajbVdor7pItJ53Ub98h/+IhPKq3wqNqc3QePv9f/Jq80Wh1xTa/qUJdAjr9h7SNH3Bt8yf4dx4j30shhNOQAlkI4XLWrVtHYWEhIdWlveJu5F/8ldRvZ2IvyMG/8xi8andUpTj1qh2D9XoiGbuXo/cNxafpAIdnEEKIW5ECWQjhcmJjYzGaA9CEVFU7iktR7DYydi0nY9dX6P3CCR34Om5BFVTN5NNyKJaMRK7vWIzeJwTPGq1VzSNEaZJ7ahd63zDcgu/4HrYSTwpkIYRLycnJYePGjbjXaI9GIztV3i5bdjqp62aSf/FXPO9ri3/HJ9C6mdSOhUajIbDLMyRlppK64X105iDcy9ZQO5YQJV7u2X2krJqGziuA8Ec/kZtl/4u8uwghXMrGjRvJy8vDXF0OB7ldeRcOEb9oDAVXTxLQ5SkCuj3nFMXxHzR6A0F9J6A3B5GyciqW9Hi1IwlRolkzU0hb9y56vzBsOemkb1uodiSnIwWyEMKlxMbG4ubliyasutpRnJ5it3F95zKSl09Ea/Qi9KF3VOs3/jc6k5ng+6cAkPzNlBvbyQkhipxis5K6ZgaK3Upw/ymYo3uTfXgT+Rd/VTuaU3HZAvnQoUN/nI4ihCgl8vPzWbduHe6VmxTrDgslgTX7GknLJ5Kx60s8a7YjbNj7qvcb/xuDXzhBfSdizUwhZeVUFGuh2pGEKHGu71hMQfwJAjqPweBfBp8Wg9H7hZG2aRZ2S77a8ZyGyxbI9erVo3LVGkyfPp0rV66oHUcIUcw2b95M06ZNyc7OxrdmK7XjOLW887+QsPApCuNPEtD1GQK7PYvWzV3tWLfFvWx1Ars9R8GVY6RueB/lFvszCyHuTu6ZvWTuXYlXva54Vr/xOqo1uBPQ+Sms1xO5vnOpygmdh8sWyJX7PE18robx48cTERFB0xatWbhwIZmZ8rGcECXJwYMHiYmJoVOnTpy8lEh4nxfRlKmtdiynpNhtXN+xhOSvJ6EzmQl96F28anVQO9Yd86zeEt/WD5N7fIe8YQtRRKyZyaStfw+3kEj82z36l8fcI2rhVbcLWfvXUhB/UqWEzsVlC+SwJr0IGTqT8FFz8WsxmAPHzjBixAgCg4Lp038A69atw2L5m+NQhRBO79y5cwwePJgGDRqwc88+gjuOImj4bAxVWqodzSlZs9JI+moCGbuX41mrPaEPvYtbUHm1Y901c+N+eNXpRObur8n+dbPacYRwaYrNSsrvfceBvV5Eo3f7n+f4tRmOziuAtA0foFilfnL5bd4MfmEYmg3Cq+kDFMafJP/EdtZu+I7Vsd/g4xfA4EGDeHjYg0RHRzvljSlCiL9KSUlh6tSpzJ49G0Wjw7/ZQMyN+qEYPdSO5rTyzh8kdd07KJZ8Aro+i1et9mpHumcajQb/mMexZiST9t3H6MzBmCrUVTuWEC7p+o+fUxh/ksCeL2LwC7/lc7RGDwI6PUHyilfJ2P01vi2HODilc9G46o1urd7aply6lnvLxxSbhbxzByk4vp2sU3tQbBbKVYzkkYcf4qEHH6RiRdkQWwhnk5OTw/vvv8+MGTPIzsnBXKcjfi0Go3j4q5rLbikAQGswqprjVhS7jes/fUHm7q8xBJYjsNdLuAVGqB2rSNkLcklcNg5rRjKhQ99y+hsNhXA2uafjSFn5Ol71uhHQ8fF/fX7qunfIOb7jxo29JecAkWUXpncbeicXlMgC+c/s+dnkntxF3vFt5F48AkD96CaMeuRh7r//fvz91X3zFaK0s1qtLFy4kMmTJ5OQkIB31aYEtB2G4lNW7WjknPiJtI2zwG7DvXxtTJUaYoqMRu8TrHY0rFmppK6dScGVo3jV7ohfh1FoDa5xI96dsmamkLhkLGh1hD74Dnoved0W4nZYM5JJWPQUep8QQofOvGVrxX+z5WUSP+8J9OZAQh98p6TsGCQF8j+xZiaTd+xHso/+QGHqZfQGAzGdujByxMN07doVo9H5VoiEKKkURWHNmjWMHz+eEydO4BlRg8B2IyCkmtrRUKyFXPthPtm/rMctvCrGsCrknd2P9XoCAIaACEyRN4plY5nqaHSO7VbLO3fgRkuFtRD/Tk/idV9bh86vhoLEMyR98RKGgLKEDJruMrtyCKEWxWYhcdlLWNIuE/bwBxj8wm772pwTP5G6Zjq+bR7Gp3H/YkzpMFIg3w5FUShMOkv+8e1kHf0RW046nmYfBg4YwPBhD9G8eXPpVxaiGO3atYtx48bx888/4xFUDv82D6Ot2Mgpfu8s6fGkrplBYdJZzI364tvqITQ6PYqiYL12lbxz+8k7u4/8y0fBbkVj9MRUod6NgrlSA3SefsWW7cbBH0vI3LMCQ2B5gnq/hCGgXLHN52xyz+4jJfZ1TJENCeozoaSsbAlRLK79MI+sfasJ7PUSntXu7ORRRVFIWfUG+ecPEjb8Qwz+ZYoppcNIgXynFLuN/AuHbhTLJ3ehWAoIKxvB8IceZNiwh6hSpUoRpBVCAJw4cYLx48ezevVq3M0B+LYYjNt9HZym0Mk5voO0TR+i0eoJ6PYsHpUb/e1z7QW55F88RN7Z/eSd248t+xoAbmFRN1sx3EIro9EUzWZB1sxUUr99i4Irx0p8S8U/yTq4jmvff4p3gx74dxitdhwhnFLu6T2krJyKd/3u+Mc8dldjWLOvkTDvcQxBFQgZ/GaRvZapRArke2EvzCP31G7yj28j5/xhUOzUrNuAkcMfYtCgQQQFBRXpfEKUFvHx8UyZMoX58+ejczPh07gvHg16oXGSAu9GS8U8sn/ZgLFMdQJ7jkNvvv3fd0VRsCSfu1Esn933+z6iCloPX0yVGtwomCvWQ+vudVf58s7uI3X9eyg2CwGdnsSzRpu7GqekuLZ1Lln71+DXfhTmhj3VjiOEU7FmJJGw8Cn0vqGEDn0bjd5w12Nl//o9aRs/wD/mcbzrdyvClA4nBXJRsWalkXf8R3KObacg6RxanZ7hj4zkrTenyo19QtymzMxM3nrrLd59910KLBbM9bri2+wBFHez2tFusly7SsqaGViSz2Fu3A/flg/ec0+xLTeDvPMHyTu3n/xzB7HnZ4FGi7Fsjd9bMaIxBEb8a0uJYrPeaKmIi8UQVIGgXjd6cEs7xW4jZc108k7tIajvBDyimqgdSQincKPv+EUsaVfuuO/4luMpCslfT6Ig/gThIz52ihuU75IUyMWhMOUCOb+sJ/PQd3h4m5k2dSpPPj4avd7lt5EWolgUFhby6aef8vrrr5Oamor5vjb4t34QxTtE7Wh/kXPsR9K++wiNzkBgt2cxRUYX+RyK3UZB/MmbvcuW5PMAN/b1/f1GP/eIWv/TLmHNTCF17VsUXD2OV93O+LUb6ZRbzanFbskn6cvxWFIvETJoOsawKLUjCaG6Pz5dCew9Hs+qzYtkTGtGEvHzn8RY9j6C75/iFPeK3AUpkItTYfJ5rv8wl7yLv1IhqjrzZn9I+/auvyG/EEXFbrezfPlyJkyYwPnz5/GqVJfAtiNQAiupHe0v7JYC0rfOJfvwJoxlahDY84U7aqm4F9as1Jt9y/kXDqFY8tHo3TBG1LrZu2xJvUTa+vdQ7FYCOv0HzxqtHZLN1dhy0klY8jyKtYCwB9915dUtIe5Z7qndpKx6o1j68zMPfEv6ls8I6PYsXjVdsu6RArm4KYpC7qldZGxfgOV6Eh269GDOxx/I4SOi1Nu6dSsvvvgiBw4cwDMsEv+2w9GUreN0qw2WtCukrJmOJeUC5ib98W0x1OHbtP1BsVrIv/zbzdVla3r8zccMwRVvtFS4/t3jxaow9RKJS19A7x1A6NCZaI2eakcSwuEs1xNJXPQ0er9wQoe8dU99x7eiKHaSlr2EJe0S4Y/MRudVfLv1FBMpkB3Fbikga99qMvZ8jRaFMU8/w+uTJ+LldXc34Qjhqg4dOsRLL73Ed999h8kvBN9WD2Ko2sop73jOObadtO8+/r2l4jlMkQ3VjvQXlt+3kVOsFswNe97Wpv4C8i4eJvnrSbiXq3XjI2CV/uARQg03+o7HYbkWf6Pv2De0WOaxpF0mfuFTeERGE9Tn5WKZoxjdcYHsfO9gLkJrMOLTbCDhIz/Do2oL3n/7LcpWiGThos+x2+1qxxOiWNlsNjZt2kSfPn2oX78+237aTVCHRwkaMRu3am2crji2WwpI2ziL1G/fxi24ImEPz3K64hjA4F8Gc8Ne+DTpL8XxHTCVr0NA56fIv3iItO8+xlUXfoS4G+nbFlKYcJrArk8XW3EMYAgoh2/zQeSe2kXOyZ+LbR5n4VzvYi5I7x2If7fnCB06kwKjLyOGP0zN+tHExcWpHU2IInf16lWmTp1KZGQkXbp0YcOW7fg1HUDYqLl4NOjtlEWdJe0yiUvGkv3rZsxNBxAy6E305kC1Y4ki5lWrPT7NHiDnyPdk7vlG7ThCOETuqV1kHViLd4OeeFRpVuzzmRv1xS0kkmvfz8aWl1Xs86lJCuQiYixTneChbxPQ9VlOnT1PkyZN6DtwMPHx8f9+sRBOzGazsX79enr16kX58uWZOHEiaTp/yvQbT+johXi3fBDcnLPvM/voNhI+fxZb9jWC738Vv1YPOc2hJKLo+bQYgmeNNlzfsZicYz+qHUeIYmW5nkjqhg9wC4vCr+1wh8yp0ekJ6PIU9txM0n+Y55A51SKNWkVIo9HiVas9HlWakrnna1bHfsO6tasZP/5lxo97Hnd35zgUQYjbcfnyZRYsWMD8+fO5fPkyRm8/zI37Yq7TCczF9zFeUbBb8knfMofsXzdjLFeTwB7Po/eWVeOSTqPRENDlaaxZqaRueA+ddwDu5WqqHUuIIqdYLaSumYEGCOz5Ihpd0d6U90/cQiIxN+lP5u6v8azeClOlBg6b25HkJr1iZElPIGP7AnJO7Sa4TASzZ71Pnz69ne6ufiH+YLVa2bBhA3PnzmXDhg0oioJnpfr41u+MtnxDh74I3y1L6uUbu1SkXsKn6QB8WgyWVeNSxpaXReLSF7DnZhD64NuyE4goca5t+YysA98S1GcCHlWaOnx+xVpI/MKnUKwFhI/4GK3Rw+EZ7pDcpOdMDH5hBPaZQPDAqWQUaujXry+NWrTht99+UzuaEH9x8eJFJk2aRPny5enVqxff79iNb9P7iXh8HgH9X0VXqalLFMfZv20lYfEz2HKvEzzgVXxbPSjFcSmkM3kT3H8yaDQkr5iCLTdD7UhCFJmckz+TdeBbvBv2UqU4BtDo3Qjo8jS2zFSu7/hclQzFTQpkBzBVqEvIw7Pwj3mMgwcPUrt2HR4e+RhpaWlqRxOlmMViYdWqVXTt2pWKFSvy+tSpZHqUoez9EwkZNR/vFg+Ck51893fshfmkrn+ftPXv4RYadWOXior11Y4lVGTwCyO430SsmamkrJyKYi1UO5IQ98xyPZG0DR/gFlYFvzYPq5rFvWx1vBt0J+vgevIvl7yFP2mxcDBbXiaZP39B5sENmDy9mfr6azz1nyfk2GrhMOfPn2fevHksWLCAxMRE3H2C8KgVg3ftGPB2zGlyRakw9RKpq6djSbuMT7OB+DQfJKvG4qacEz+RumY6pshoPGt1wC0gAr1fmOyVLFyOYrWQuOwFrOkJhA2fhd5H/QUMe2Ee8Qv+g0arI2z4h2gNRrUj/R05KMRVFKZcIOOHeeReOEREZFXmzf6QmJgYtWOJEspisbB27VrmzJnD5s2b0Wi1eEY2xK9+FzQR9V22oMw+soVr389GYzAR2ON5TBXqqh1JOKHMfatJ37YAlN/3qNfqMfiHYwgsjyGgHIbAiBv/8wtziVYiUTpd+/5Tsg6uI6jvK3hENVE7zk15Fw6RvPwVzI37q76q/Q/uuECWP6FV4hZUgcABr5N3Jo6EbfPo2LEjbTt2Ze4ns4iMjFQ7nighzpw5w7x581i4cCHJycm4+wYT0GooXrViwCtA7Xh3zV6Yz7XvZ5Pz21aMEbVv7FLh5a92LOGkzNG98arTGcu1K1hSL2JJvYwl7RKFiafJPfET8PtCkVaHwS/8RrEcEIEh8Pfi2a9MkR/dK8SdyDnxE1kH193oO3ai4hhutJF61oohc+9KPKq1wBhaWe1IRUJWkJ2AYrWQuX81GbuWo1FsPDnmad54dRLe3t5qRxMuqLCwkNWrVzNnzhy2bt2KRqvDs3Ij/Op3RlOursuuFv+hMOUCqWtmYEm7gk/zB/Bp9oDLf01CPXZLPtZrVylMvYQl9RKWtMtYUi9ivZ70/yvOGi16v3DcAiP+uuLsX8YpD8cRJYslPYGERU9jCChH6JDpTvkphz0/m/j5T6A1mQkb9p4zZpQWC1dmzUojc+diso5sxewfxOyPZjF40ANqxxIu4tdff2Xx4sUsXryYlJQU3P1C8arTEY+a7dF4uu5q8Z/lXzlO8vJX0BhNBHaXlgpRfOyWAqzpV7GkXqLw9xVnS+olrOkJ/1U4h90smt1+X3nW+5dx5l5M4UIUayGJS1/Aej2RsOEfovcJVjvS38o9vYeUlVPxaTEE3+aD1I7z36TFwpXpvQPw7/osnnW7cn3rHIYMHsTaTVtY9NlHcsiIuKWrV6/yxRdfsGTJEo4cOYJWp8ejciMiYp6GMrVK1MqqLT+b1G/fQuflR+iQmei8/NSOJEowrcGIW3Al3IIr8edzIhWrBUv6VSwpF39fbb5EYeol8s7s/Wvh7BuCR7VWmBt0R+cpP6vi7qRvm09h0lmC+k506uIYwCOqCR7VWpKxazkeVZvjFhihdqR7IivITkqxWbm+cwmZcbFUqFqTLetXS2+yACArK4vY2FiWLl3KDz/8gKIoeJStjrlWO9yimqEx+agdscgpikLq6jfJPRNH6JC3MIZXVTuSEH+h2CxYrsX/3qZxiYKEU+SfOwg6PV4122GO7oMhoKzaMYULyTm+k9S1MzBH98Gv3SNqx7kttpzrxM9/Ar1vGKFD33KmRRpZQS4pNDo9fm2GYyxTg0sb3qNG7bosXrSIgff3UzuaUIHVamXz5s0sXbqU1atXk5eXhykgHP8Wg/C8rw0an3C1Ixar7MObyD21C982w6U4Fk5JozPgFlQet6DyN//Ncu0qmftWkX1kK9mHN2OKaoy5UV/cy9ZQMalwBZb0eNI2zcItvCq+rYepHee26Tx98Ws/krR175B14FvM0b3VjnTXpEB2ch5RjXF7+ANS10zngQH9+W70f/jsw3cxGJyuAV4UMUVROHDgAEuWLOGrr74iOTkZN08zpurtCK7dDiW4Sqk4trww5QLpW+fiXqEe5kZ91I4jxG0z+JchoNN/8G0xlKyD68g6uJ6k03swhlfD3LgvpsqNnWmFTTgJxVpI6poZaLQ6gnq+6HJ7dnvWaEPu8R1c37EEU+XGGPzC1I50V6TFwkUoVgvp2+aTdXAdVWs34Pt1qyhXrpzasUQxuHDhAsuWLWPJkiWcPHkSncENU2Qj/Gq3QxNRzxnvDi42dks+iYufw5abSfjwD6XvWLg0e2E+2Ue+J2vfaqwZSej9wjFH98azZnu5qU/clLb5E7J/2UBQv4l4VG6sdpy7Ys1MIX7+E7iFRhHywBvOsJgjLRYllUZvwD/mMYxl7+P0pllUua82y79YSs/u3dSOJopAeno633zzDUuXLmXnzp0AeJavRVj3p9FXborW6KVyQnWk/zAfS+olgge8JsWxcHlaN3fMDXrgXa8ruad2kxkXy7XNn3D9p2V41++Od72u6DxK3j0E4vblHN9B9i8bMDfq67LFMYDeHIRf2xFc++5jsg9/h3fdzmpHumNSILsYz+otcQupRNqa6fTq2YP/PPsC7781DZ1OPqZzNQUFBWzcuJElS5awbt06CgsLMQVFENhmGB412qBxwWOfi1LOyZ/JPrQRc6O+mCrWVzuOEEVGo9XhWa0FHlWbU3D5NzL3riTjp2Vk7lmBV+0OeEf3weAbqnZM4WAFCadJ2/QhxvBq+LZ6SO0498yrTidyju8gfdsCTJUaojcHqh3pjkiLhYuyWwpI3/IZ2b9upnZ0c75bu4LQUHlBdXaKorBr1y6WLl3K8uXLSU9Px+jth6laK3xqt0MJqOQMH0WpzpqRTMLCMej9wwkd8lapaisRpVNhykUy960i5+h2UOx4VGmGuXFfjGFV1I4mHCD39B5Sv52J1sOX0MFvojc795Zut8uSHk/CgjG4l69NUL9Jar6/SYtFaaE1GAno8hTGsvdxZPMnVK5ek1UrviamfTu1o4lbOH36NEuWLGHZsmWcO3cOnZsRj6imlOvcDk3ZOjdv1JHSGBS7jdRv30ZR7AT2fFGKY1EquAWVJ7DrM/i2fJCsA9+SdWgjuSd/wliuJubG/TBVaoBGo1U7pigGmfvXkr51Lm5hlQnuN6lE7Ztt8AvHt+UQ0rctIPf4DjxrtFY70m2TFeQSoDDlAmlrplN4LZ4XJ0xi2qsT0WrlhfTPcnNzOXjwIAkJCQ6dNz4+ni+//JK4uDjQaPCsUBef2u3QVWyM1ujh0Cyu4vqOJWTsXk5gjxdc6sVUiKJkL8gl+/B3ZO5fiy0rBUNABOZGvfGs0RaNXv5oLAkUu430H+aTdWAtpqgmBPZ4Hq2h5B0KpthtN08DDH90tlp99nLUdGllL8jl2ncfkXN8B41atmPDqq8JCCgZxwvfKbvdzunTp4mLi2PPnj3ExcVx+PBhbDabKnk8wiLxrNEGU7WWaLxcqwfL0fIv/krSVxPwrNmewG7PqB1HCNUpNis5J3aSuXclluTz6Lz88W7QA++6XdC6l86bd0sCe2E+qeveJu/0Hrwb9sKv7YgSveVfYcoFEhY9g0fVZgT1HKdGBCmQSzNFUcg+tJH0rXMw+wfy7coVtGzRXO1Yxe7atWvExcX9f0G8dy/X09MB0Lt74BZWBVOZapjKVMPmGYgjGxm0bu7ofUIcNp8rs+VmkLBwDBo3D8KGvYfWzaR2JCGchqIo5F84RGZcLPkXD6FxM+FVuyPm6F4lpl+1tLBlp5Mc+xqFSWfxaz8Sc4MeakdyiOs/fUHGz18Q1HciHlEO36FDCmQBBYlnSFszHQCXr6wAACAASURBVGtmClOmTmPiSy+UmBu/LBYLv/76682V4d179nDm9GkANBot7sEVMIRF4VWuBpqQKHT+ZaVvzwUoikLKytfJO3+QsAffxS2kktqRhHBahUnnyNy7kpzjOwDwrN4Kc6O+8nvjAgpTL5H8zRTseRkE9hinRqGoGsVmIeHzZ7FlpWKO7oNXva7oTN6Oml4KZHGDPT+baxs/IOfUblrFdGPN10vx9fVVO9YdURSFy5cv/6VVYv+BAxTk5wPg5u2PIawqnmWr/R979x0eVZX/cfx9ZzKTyUx6T2ih966AgIAiiICAgAoiCAqiUiz8Fvuua1kVdBWsawN7pQgCFpDeQXoTKQklkF6nz5zfHwFWV9QkJLkp39fz5FnIzL33Y9jAJ+eeew7mxKZoMQ1l1LGKKnpI5S0iet9J6GWD9I4jRJXgzUsjb+vXFOz+HuV2YKnXhpAOA2WHvkrKkbyL9AX/whBgJmb4PwiMb6R3pArnyTxJ1oq3cB77Cc1kIbhNH0IvH1IRd1qlIIv/UkqRv3Uh2avnEhWXyLeLFnDZZR31jvWHCgoK2LZt24VCvGnzZs6ce6jOEGDGEt+IwMQm2Oq0gJhGGEJjqs3IeE3mPnuE1A+nEVS/AzFDH5c/UyFKyOcsoGDnMvJ/WoovPx1jSAwh7foR3LZvtVoRoSor2LuCzGWvYIpMJHb4EwSE1expMe60Y/+9C6IU1mbdCe00tDx/aJCCLH7PefIAmYuex+/IY8aLL/LAlEm6lxCv18uhQ4fYsmVLURnetIm9e/fi9/sBsETVIiC+CSF1mmNMaIIhqp4s91UN+d0OUt+/D+V2kDDuFdlFTIhLoPw+HL9sIf+nJTiTd4IhAGvTboR0GEBgrea6/71fEymlyF3/CbnrP8VSry0xQx6Whyt/xZuXTv62ReTv+vbCXZDQTsOw1O9Q1v9/lYIsLs5nzyVryb+xH93OtYOH89VHcwgOrphv0oyMDHbt2sXu3bsvfOzdtw+3ywVAQFAw5oQmWGs1JahWM1RMIylKNUTGkpcp3LuCuBHPYKnXRu84QlQbnsyT5O9YSsHeFShXIabY+oS0H4CtRS8M5uq3lFhlpHweMpfNpnDfSmytriGq3yQZ6PkDflch+Tu/JX/b1/gKsjDFJBHa6QZszXuU1ddMCrL4Y0r5ydv4JTnrPiauTn1++GYBrVu3LrPzu91uDh06dKEE79q1i127dnPmzH/XHjaHRBAQXR9LXH2C4utDTEOMEbXkQboaqHD/KjIWv0DYFTcT3mO03nGEqJb8bieF+1eR/9M3eNKPowXaCG7Vm5AOAzBF1tI7XrXlcxaQvuAZXCl7CLvyVsKuuFlG8ItB+TwU7l9dtKxhRgrG4ChCLhtMSLt+l7p3QNkXZE3T3gMGAmlKqVbnPtcOeBOwAF7gHqXUlosc+zFwGeABtgATlVKeX71+ObARGKGU+qokwaUgl54zeTcZi2eCx86rr77OXRNuL/E5zp49+7tR4f379+PxFP3xGgJMBEbXxRidRHBiA4zRSWiRdWU+nADAk51K6typmGPqE3fLs/JAkRDlTCmF69QB8n9agv3QevB7sSS1J6TDAIIaXi7fg2XIk3OGtC+fwJtzhqj+9xLc8iq9I1U5SimcR7eTu2U+rpTdaGYrIe36EXLZIAJCSrWfQLkU5B5AAfDBrwry98BLSqllmqb1B6YrpXpd5Nj+wLJzv/0EWKOUeuPca0bgB8AJvCcFuWJ5C7LIWjwTR8oebhgxmo/f+w9BQb9fAcLlcnHgwIHfjQqnp6ddeI85NJqAmCSC4upjiWsAkXUwRtRGM8pO5uL3lM/DmY+n4806TcK4V2r8wypCVDRfQTb5u7+jYOe3+PIzMIbGENLuOoLb9MVoq1qrHVU2rtOHSJv3FPi9xNzwKJa6ZXeXtqZypR4mb8v8oh/sNA1bi55FyxrGJJXkNCUuyH/ZYJRSazRN+98UCgg99+sw4PQfHLv0/K81TdsC1P7Vy1OAecDlxY8rykpAcCQxNz9NzrqPWfDZhzTdupUvPppDdnb2f8vw7t0cOngQr9cLFK0kERhTj4CEtsR3aEhAdD2IrCvzhUWJ5Kz5EHfqYWKGPCLlWAgdGIMjCO86grAuN+I4vJn8HUvIWfMBOes/wda0OyEdBmBObCZTAkrI/vNGMha/gNEWTuyNz2KKqqN3pGohMKExMYMfxJNzhvxtRcsaFu79EUv9joR2Hoqlbpty+f9qseYgnyvI3/xqBLk58B1FW5IZgK5KqeQ/Od4EbAbuVUqt1TStFkUjylcB7507d4lGkJs+tky5vP6SHCL+gOPINjK+eRG/M//C54yhMZhjkjDF1scck4Q5tj4BEYlyG05cEsfR7aR9+Q+C211H1LWT9I4jhDjHk3mi6KG+PStQbjvmuIYEtx+ArUUPDCZ5qO+v5G39muwf38Gc0ITYYY/LSHw58jnyyN+xlPzt3+C352COa0hop6FYm3X/s45SPg/pXaQgzwZWK6XmaZp2E3CnUuqaPzn+baBQKXXfud9/CbyolNqkadpcSlGQuz63QuU7vCU5RPwJV24amYe2YYpMxBSThDkoGIvJiEFGEEQZ8RRk8ct/7sEQFEr8mJcwmAL1jiSE+B9+t4PCfSvJ/2kJnoxkDBYbEW37Enn59QRGJuodr9JRfh+p3/+HrC2LCGpyBdEDp8kPFBVEed0U7P2RvK0L8GadwhQWR1SXG4hs3+93K7Xku7yjjz834KOSnL+0BTkXCFdKKa1oXDtXKRWqadp3QBywTSk1/tx7/wG0B4YqpfznPneMotFngGjATlHJXliC7FVz+Q0haiC/30+/fv1YuXoNtce9jAqXW49CVGZKKVwn9+HYuZS8g+vB7+PKq3rzt/vvpX///hiNcjexsLCQkSNHsnjxYiI630BIj7Fyl1UHSvlxHN5MwdYFOE7uxxoSxuRJ9/DAffcSF3dhh74Sj/aVtiAfAO5WSq3SNK03MEMp9bst2jRNGw/cDvRWSjn+4NxzKcUIMlKQhagyZs6cyfTp04m7bjKWNv30jiOEKAFvQRb23d+Rv+NbvAWZxCbW5t5J9zBhwnhiYmL0jqeLM2fOMHDgQH7asYOYvhMJajtA70iCoo3RCrfNp+DQJgJMJkaOupVHH5pO06ZNy74ga5r2KdCLopHes8A/gEPALIoe8nNStMzb9osc6wWSgfOTW+crpZ78n/fMRQqyENXWli1b6NatG9bGXQi//kF58EeIKkr5vNh/2Yx951Lsx3cBYAwIICgoCEuQFau16MNmtRJss2Gz/fdzF16z2X73ub/6sFgsGAyVZ638ffv20b9/f1LPphE35CGMSZfpHUn8D0/WKQq3LSRv93KU30u96YvrHH9uwMmSnKPKbhSCFGQhKr28vDzat29PanYhcbfNQgXKFqtCVAfujBQ8R7egeZz4PS78Hie+c//rd7vweVwojxO8LpTHhfK6zr3PBaXoHYGWIKxWK7Xr1qVtq1a0atWSFi1a0KJFC+rXr19hBXrFihUMGzYMNybihv8dFd2gQq4rSsdXmEPBT98QduWtc44/N6BEmz5IQRZClAulFKNGjeLzz7+g9ugZaPFN9Y4khNCZUgp8Hvye/xZnda5kK48LzetC87vB4wavE+V1n3vNic/twJWViisjBV9+5oVzBlqCaNS4CW1b/7Y4N2jQoEznSs+dO5cJEyYQGF2H2OH/wG8r1YYVQh9lvw6yEEKUxty5c/n000+J7jVGyrEQAqBoilWAGWOAGYJCSn0ev6sQT0YKvqwT+LNOcjw9hUPffM8nn3x84T0mc+BFi3PDhg0JCCh+/VFK8Y9//IOnnnqKkAbtiRr8MH7zJW17LKoAGUEWQpS5gwcP0rFjRwxxjYkc/qQ82S2EqBB+lx1P5olzxfkEzvQUXOnJeHP/u/trgMlMw0aNadu6Ja1atbpQnBs1aoTJZPrN+VwuF+PHj+ejjz4irF1fwq+5B2SX2KqofNZBrqSqbHAhqjOn00mXLl04eOQ4ieNewW+N1DuSEKKG87sdeDJP4stMwZ99Eld6Ms70FLy5Zy/MiQ4IMFG/YSPatG5J61ataN68Oa+//jqrV68mutcYrJ1ulIeMqy6ZYiGE0NeDDz7Irl27qH3zE1KOhRCVgsEcRGBCY0hoDMD5x4X9bieerJP4Mk+gsk+Qmp7C8RUbmDdvHiiFIcBEwpC/YW7aU7/wQhdSkIUQZWbx4sXMnj2biE6DZekjIUSlZzBbCIxvBPGNALCd+7zf48KbdQot0IopPF6/gEI3UpCFEGXi1KlTjBs3DltiI0J7jNU7jhBClJrBFIg5TpZwq8kqz8rbQogqy+fzMWrUKPIK7MQOng5G018fJIQQQlRSUpCFEJfsX//6V9GDLH3vxh+aqHccIYQQ4pJIQRZCXJJ169bxxBNPENbqKkzNr9I7jhBCCHHJpCALIUotOzubW265BUtkAhF975ElkIQQQlQLUpCFEKWSnZ3NkCFDOHU6lZhBf0OZgvSOJIQQQpQJKchCiBI7fvw43bp1Y/2GjcQNmgYxjfSOJESl4sk6hfK69Y4hhCglKchCiBLZvn07Xbp04WjySRJHPI25yZV6RxKiUnGe2Mvpt+8i9YMH8GSc0DuOEKIUpCALIYptyZIl9OjRgzyPRsLomRhqtdQ7khCVit/jInPZbIwhUfgKs0l9/z7yd32POredsRCiapCCLIQoljfffJNBgwahRdQi/tYXUOG19Y4kRKWTu+5jvNmniep/HwnjXiGwVjOyvp1NxuKZ+F2FescTQhSTFGQhxJ/y+/089NBD3H333dgaXkbMiGfxB4XrHUuISseV+jN5WxcS3KYvQUntCAiOJPamJwnvMQb7wXWkzpmK6/QhvWMKIYpBCrIQ4g+5XC5GjRrF888/T3jH/kQMeRQVYNE7lhCVjvJ5iqZW2MKJuPqOC5/XDEbCrriJuFueRyk/Zz6eTu7meSjl1zGtEOKvSEEWQlxUVlYWffv25bPPPiP66nGE9r4bzWDUO5YQlVLuxi/xpB8n8tpJGAJtv3vdUrs5CeNewdqoMzmr5pD25RP4CnN0SCqEKA4pyEKI3zl27NiFZdwShzyI7fJhsgmIEH/AnX6c3I1fYG3eE2ujzn/4PqMlmOghDxPZ9x6cKXtInTMFx/GdFZhUCFFcAXoHEEJULtu2bWPAgAHkFDioNfIZtMQWekcSZUh53XgLsvBd+MjE78jHHNcAS902GCzBekesUpTfR+ayWRgCrURec+dfvl/TNELa9yewdgsyvn6etM8fJ7TLcMK7j0Izyj/JQlQW8t0ohLhg8eLFjBgxAoLCSBwzExUmK1VUFcrvw1eY/avim4U3PxNfQeZvPud35P3xSTQDgQlNsNRvjyWpA4GJTWRazV/I2/o17tTDRF//N4zWsGIfZ45JIn7MS2SveIu8TV/iStlD9KC/ERAWV45phRDFpVXhtRmrbHAhKqPXX3+dKVOmEJTQiNhhj+MPitA7kgCU8uN35BcV3fysc6O/vy++vsIc+N8HvzQDRlsExpBIjMFRGIMjMQZHEhB87vchRZ8zmINwnT6E89gOHMd34E49DCg0sxVLUluCktpjSWqPKSJBl69BZeXJPk3qe5OxJLUnZuhjpZ6GVHhgDZnfvgqaRlS/KdiadS/jpELUeB8ff27ArSU5QAqyEDXc+WXcZs6cSUiTzkQNnI4yBeodq8ZRPi+u1MO4UnbjPnukaAT4XPnF7/3d+w3WsF8V3qhzhTfy3OfOlWFrWKlGgH2OfJzJu3Ae34Hj2E/48tIBCAiPx5LUnqD67Wv8dAyl/Jz99BHcacdIvON1AkKiLul8npwzZCyagTv1Z4Lb9SPi6gkY5PtQiLIiBVkIUXxOp5PbbruNL774gvCOAwi9+k65pV5BlN+H++xRnCm7cCbvwXVyH8rjBCAgsjYBIdG/K7wBwZFFo762CDSjqWJyKoU3+zSOYz/hPL4TZ8pulNtR46dj5O9YStb3rxPZbyohbfuWyTmVz0vO2g/J2zwPU3Q9ogdNxxxTr0zOLUQNJwVZCFE8mZmZDBkyhHXr1hHT+3aCOt4gK1WUI6X8eNKTcSbvxpmyG+eJvahzO6uZoupgqdeGwLptsNRpVaK5rBVN+by4Th88Nx1jJ+4zh0H5i6Zj1GtDUP0O1X46hjcvndPv3kNgQhNib366zL9vHEe3k7HkJZTbQUTvCQS3vVa+N4W4NFKQhRB/7ejRo/Tv359fjhwl7vppmJrInMeyppTCm3myqAyn7MaZsufCA3IBEQlY6ra58GEMrrrzvX87HWMHvrw04FfTMZLaY6lXfaZjKKVI++oJXCf2knD7a5jC48vlOr6CbDK+eRFn8k6sza4kqt/ki66vLIQoFinIQog/t3XrVgYOHEhuoZO4YY+jJTTXO1K1oJTCm3OmqAwn78aVshtfYTYAxpAYLPXaFH3UbUNAaIzOacvH+ekY58tydZyOUbD3RzKX/JuI3hMIvWxwuV5LKT95m+eTs+YDjKExxAyaTmBi03K9phDVVM0pyG+//baaMGGC3jGEqFIWLVrEiBEj0KzhxN74BCqslt6RqjRvXhrO5D0XSrEvv+hhNqMtomi6xPlCHB5fI2+RFz14eG51jGM7fjMdI6Tj9YRfeWuV+rr4CrM5/c49mCJrETfq+Qor+a5TB0hfNBNfQSbhV44mtPNQNE32+RKiBGpOQdY0TT3y1HM889iDekcRokp47bXXmDp1KtbExsQMfRx/ULjekaocX0H2f6dMJO/Gm5MKgCEoFEudVljqtS0qxFG1q1Txqyjnp2PYD67Ffmg9IR2vJ6L3nVXma5W+8Fnsv2wmcewrmKLrVOi1/c4CMr99FfuhdViS2hM98AGMtqo7NUeIClbiglxlNwqJbt2Dfz3+EICUZCH+hN/vZ/r06bz44ouENOlC1MC/4Zflo/6S8vvw5pzBffYIzhP7cKXsxpN5AqDogbS6rQjpMBBLvdaYYpJkRK8YjEEh2Jp1x9q0Gzmr5pC3ZT7K7yeyz8RK//WzH9qA/dB6wnuMqfByDGCwBBM9+EEKdrUje8VbnJ4zhegB0wiq377CswhRE1TZgtx05GPYXU9ISRbiTzidTsaMGcOXX35J+GXXE3rVeFQVnftZnvweJ570ZNxpx3CnHcVz9iju9OMXll3TTBYCa7fE1ro3lrptMcc1qLJzaCsDTdMI7zUONAN5m78C5SOy7z2VtiT7HPlk/vA6ptgGhHYaqlsOTdMIadePwFrNyFg0g7QvHie08/CiqSqyTbUQZarKfkcZjAFED5pOxqIZUpKFuIjMzEwGDx7M+vXriblmPEEdBleZW9nlyVeYgzvtaNHH2WN40o7iyTp1YRc6zWzFHNeA4DZ9MMc2wBzXAFN03Qpbd7im0DSN8J63gcFA3sYvwO8nst/kSlmSs398F789j7gb/1kpimjRNtX/JnvFO+Rt/grnuW2qy2tFDSFqIv2/0y+BJiVZiIs6cuQI1113HceOJ5M49BFMjbvqHanCKeXHm52K++zRC4XYk3asaGe6c4yhMZhjG2Bt2h1zXH1MsQ0ICIuTHyQqiKZphF85Gk0zkLvhM5RSRF03pVKVZMfR7RTuXU7oFTdhjmuod5wLDCYLUf0mY0lqR+a3r5A6ZyrRA6dhbdxZ72hCVAtVuiCDlGQh/tfmzZu5/vrrybO7SbzlX2jxzfSOVO7+aooEBmPRZhxJ7YpGhWMbYIqtjzEoRN/g4lxJvhU0A7nrPwHlJ+q6qZViCovfZSfzu1cJiKxNeNcRese5KFuz7gQmNCZ94bNkLJ5J4oT/XPK210KIalCQQUqyEOctXLiQW265Bc0aQeLoZ/CHJeodqcz57Lm4zx4p2RSJqLpoATJFojIL734LaBq56z4uKsn979O9JOeseR9fXgbxt85ACzDrmuXPBITFET34IU6/czc5q+cSPXCa3pGEqPKqRUEGKcmiZvN6vTz++OM899xzBNduRvSwx/FbKu92xaWhfB5y1nxI3pYFnN8nyBgaizmuAdZm3S+UYWNorEyRqKLCu41E0wzkrP0QpfxED3hAt5LsPLGX/J+WENJxEIG1Kv9mOqbweEI7DSVv4+cEt7sOS+0WekcSokqrNgUZpCSLmunkyZOMHDmSdevWEdauH+G9x6MCLHrHKlOezJNkLJ6J++wRgtv0xdayF6YYmSJRHYV1vRkMBnJWv0+GUkQPnFbhJdnvcZG5bDbGsDjCe4yu0GtfirAuN1K4dwXZy/9D/Jh/6z4CL0RVVq0KMkhJFjXL0qVLGTNmDHmFDhKGTMfctIfekcqUUoqC3d+TveItNKOZmBsexdrkCr1jiXIW1uVG0AzkrJpDht9P9PX/V6GrR+Su/wRv9mlib34agzmowq57qQxmCxFX3U7GohkU7P6BkHb99I4kRJVVeR4VLkPnS7K1SVf+9fhDPPr083pHEqJMeTweHnzwQQYMGIDTHEbtcS9Xu3Lsc+STsfBZsr59hcDEZiTc/qqU4xokrPMwIq66A/uhdWQsmoHyeSvkuq7Uw+RtWUBwm74EJbWrkGuWJWuzKwms04qcNR/gcxboHUeIKqtaFmSQkiyqrxMnTtCrVy9mzJhBeIf+RN8yE39o9XoYz5m8m9T3JmP/ZQvhvcYRe/NT8mR+DRTa6QYirp6A/ecNpH/9HMrnKdfrKZ+HzGWzMNrCibjq9nK9VnnRNI3Ia+7E7ywoeuBRCFEq1bYgg5RkUf188803tGvXjq0/7STxhgcJ63MPBFSfbaOVz0P2qrmc/exRNLOF+NEvENZ5WKVaF1dUrNDLBxNxzUQchzeRvvA5lLf8SnLupq/wpB8nsu8kDJbgcrtOeTPHNiC43XXk/7QEd/pxveMIUSVV+391pCSL6sDj8TB9+nSuv/56XIER1B43C1OTK/WOVaY8Wac489F08jZ/RXDbviTcNovA+EZ6xxKVQGjH64nsczeOXzaTvvBf5VKS3enJ5G74HGvzHtVis43wK0dhCLSRtfw/KKX0jiNElVPtCzJISRZVW0pKCj179mTmzJmEdxxA1KiZ+EMT9I5VZs4/iJc69168OanEDHmEqH5TMJir10oc4tKEdBhA5LWTcBzZStqCp1Fed5mdW/l9ZC6bjSHQSuQ1E8vsvHoyBoUS3mM0rpQ92A+t1ztOmXCnH8fvsusdQ9QQNaIgg5RkUTUtXryYdu3asW3nbhKHPkzYNXejGSvvhgUl5XMWkPH1c2Qum405oQkJ417F2rTmbYstiiek3XVEXjsZ59HtpM1/Gr/HVSbnzd+2CHfqISKvmYjRWn3WDw9uey2m2Ppk//gu/vO7SlZRzhN7SZ0zlbSv/ony+/SOI2qAGlOQQUqyqDrcbjfTpk1j0KBBuIOiqD12FqbG3fSOVaacKXtIfW8K9sObCO85lribnyIgNFrvWKKSC2nXj6jrpuI8toP0+U9fcvHzZJ8mZ+1HBDXqhLV59VoJRjMYibxmIr78dPI2zdM7Tqn57LlkLJqBwRKM6+Q+ctd9onckUQPUqIIMUpJF5ZecnEyPHj3497//Tfhl1xN1ywz8ofF6xyozyucle80HnP30EbQAE/G3ziSsy3DZ1EAUW3CbvkT1vw/n8Z2kz3uy1CVZKT+Z374CBiORfe+pljswWuq0wtq8J7mbv8KTc0bvOCWmlJ+MJf/G58gn7uansbXuQ+7GL3Ac36l3NFHN1biCDFKSReX19ddf065dO3bs3kfisEcI6z2xWk2p8GSf5szH08nb+AW21teQMHYWgQlN9I4lqqDg1r2JGnA/zpS9pH31T/zukpfkgl3f4UrZQ8TVdxAQUn3vXkT0GodmMJC98l29o5RY3paFOI9uJ/Lq8ZjjGhB5zURMUXXI+OYFfAXZescT1ViNLMggJVlULm63m/vvv58hQ4bgscWSOG4WpkbVZy6uUoqCPSuKHsTLOkX04IeI7n9vldqlTFQ+wa2uJnrgA7hO7CPtqyfwux3FPtabl072yvew1GtDcJu+5ZhSfwGh0YRdcTOOnzfiOLZD7zjF5jp1kJw172Nt0pXg9v2Bot0Cowc/iHI5yPjmBZmPLMpNjS3IICVZVA7Hjh2je/fuvPzyy0RcPojokc+jQuL0jlVm/M4CMhbNIHPpS5jjGpJw+6vYmnXXO5aoJmwtehE9cBquk/tJ+/IfxVrlQClF1nevgfIT2W9qtZxa8b9CLx9CQHgC2SveqrBdCS+Fz1lA+qIZGEOiibrut39G5ph6RFwzEWfyLvI2faVjSlGd1eiCDFKShb4WLFhA+/bt2bXvALWGP0bo1XeC0aR3rDLjPLGX03OmYD+0nvAeY4gb8QwBoTF6xxLVjK1FT6IHTcd16mCxSnLh/lU4jm4j/MoxmMKrz/z+P6MFmInoPR5P5gnyf1qid5w/pZQic9ksfAVZxAyaftFNW4Lb9MHaoic56z7GeWKvDilFdVfjCzJISRYVz+12c9999zF06FB8IfEkjp1FQMMuescqM8rvI2ftR0UP4hkCih7Eu+ImeRBPlBtbs+5ED34QV+rPnP3icfyuwou+z1eYQ/bytwhMbEZIx4EVnFJfQQ07YanfkZx1H+MrzNE7zh/K/+kbHD9vJKLXWAITm170PZqmEdV3EgHh8WQsmoHPnlvBKUV1JwX5HCnJoqIcPXqUbt26MWvWLCI6DSFqxHPVakqFJ+cMZz6eTu6Gz7C1vKroQbw/+EdOiLJka9qNmMEP4j7zC2c/fxy/s+B378la/h/8HgdR191b435g0zSNyN4TUF432avf1zvORbnO/EL2yncJang5IZcN/tP3GgKtxAx+CJ8jn4wl/0YpfwWlFDWBFORfkZIsytu8efNo3749u/cfotaNjxN61fhqNaWiYN9KUudMwZN5kuhB04kecD+GQKvesUQNYm3SlZghj+A+e5Sz5p1wHgAAIABJREFUnz+O71cl2f7zRuwH1xLedSSm6Do6ptSPKao2oZcNonDPD7hOH9I7zm/4XXYyvn4eozWcqAH3F2tuuDmuAZFXj8d5dDt5WxZWQEpRU0hB/h9SkkV5cLlcTJkyheHDh+MPTaTWuNkENOisd6wy43cVkr54JpnfvIg5tj6J417BVs02XRBVh7VxZ2JueAR3+jHSPnsUnyMfn7OArO9fxxTbgNDOw/SOqKuwriMw2iLIWv5WpRl1VUqR+e0reHPPEj3obxiDQot9bHD7/libdCVnzfu4Th0sx5SiJpGCfBFSkkVZOnLkCN26dePVV18lovMQokY8iz+4+jyo5jx5gNNzpmI/sJawK28lbuSzBITF6h1L1HDWRp2IveFR3BkpnP3sUbK+ew2fPZfo/veiGQP0jqcrQ6CV8F5jcaceonDvSr3jAEVrUtsPriX8ylux1G5ZomM1TSPquqkYQ6JJXzTjN3cNhCgtKch/QEqyKAtfffUVHTp0YO/Bw9S66R+E9qpeUyryd33P2U8eRAPiRz1PeNcRNW5ep6i8ghpeTuzQx/BknsB+cC2hnYdhjmuod6xKwdbyKsyJTclePadYS+OVJ3f6cbJXvIUlqT2hXYaX6hwGSzAxg6bjK8gkc+nLKKXKOKWoaaQg/4n/Lclduvdi3rx5eDwevaOJSkgpxdGjR5k7dy7jxo2jQcOG3HjjjfjDEkkcN4uA+pfrHbFM+QpzyP7xbQLrtCJh3CsE1mqudyQhfieoQUfibvwnwe2uI7zbSL3jVBqaZiDymrvwF+aSu/5T3XL43Q7SFz6HIdBG9MAH0LTS15LAxKZE9ByL4/Am8n/6pgxTipqoZt9nKobzJTlv6wK271jK8OHDiYiO466J47nnrruoXbu23hGFTpRSHDp0iNWrV7NmzRpWr1nDqZMnATDZwjDXakHCdddhbnkN/mo0anxezvpPUF43UX3vkQfxRKVmqdcGS702eseodAITGhPcpg952xcR3LYvpqiKf3Ax64c38WadInbE0xhtEZd8vpDLh+BM2U32yncJrNWcwPhGZZBS1ERaVb0N0WPGSpWSVbG3hZTfh+Podhy7llHwyzY0g0afa/vzwL2T6dOnDwaDDMhXZ36/n7179xaV4dWrWb1mDelpaQCYQyIx125JSFIbAmq1RIusfUkjIZWdJ+MEp9+bREj7/kT2uUvvOEKIUvIV5nDq7YkEJjQh9qYnK3RXwYI9K8hc+hJh3UYS3n1UmZ3X58gjdc5UNKOJhLGz5Ad4AfDx8ecG3FqSA2QEuQQ0gxFro05YG3UiLPcs9t3fsWLN93y/7BsS6tRj6qS7GX/HHURHR+sdVZQBr9fLzp07LxTiNWvXkpOdDUBgeCzm2i1J7DQSQ2ILDOGJNWK72vOyV72HZg4iTG5ZC1GlGW3hhHe/hewVb+P4ZQvWxhWzuo4n8wRZP7xOYN3WhHUdUabnNgaFEj3ob5z95GEyv32F6EHTa9Tfz6JsyAjyJVI+D/ZDG7DvWoY9ZS9Gk4khNwzj/qmT6dq1q3xTViFut5tt27ZdKMTr1q+nID8fAEtULUy1WxCa1BYtoTnGsOqzsUdJOY7vJO3zxwjvNY6wGr5clhDVgfJ5SZ0zFeVzk3jH62gB5nK9nt/j4syH0/AVZJEw7hUCQqLK5Tq5G78gZ80HRF47mZB2/crlGqLKkBHkiqYZTdha9MTWoifu9GQcu79lwdeLmPfFZzRs2oL7p9zD6NGjCQ0t/pqOomI4HA42b958oRBv3LgRh8MBQFBsPcyNrqR2/TYQ3wxjiNwVgKJpRtk/voMxLI7QjtfrHUcIUQY0YwAR19xJ2uePkbdlAWFdby7X62X/+Dae9OPE3vjPcivHAKFdhuNM2UP2ircITGyKObZ+uV1LVD8yglwO/G4nhQdWY9+5DOeZXwgMsnHLLbdw75RJtG3bVu94NVZBQQEbNmy4UIi3bNmC2+0GTSMorgGBdVoSXK8NJDTHaA3TO26lVLD7ezKXzSZ60HTZCESIaiZ9wb9wHNtO4vg3CQgtn7XaCw+sIWPRDEI7Dyei19hyucav+Qqzi+YjB9pIuO0lDOagcr9mVaL8PvD7KvaiBqMey4GWeARZCnI5UkrhTv0Zx65l5O1fg/K6adPxcqZNncxNN92ExWLRO2K1VlhYyIYNG1i5ciWrVq1i69ateL1eNIORoIRGBNZpha1e66IRYkuw3nErPb/bwem3J2IMjSH+1hdk+pAQ1Yw39yyn37mboMZdiBk0vczP78k+TercezFH1yPulucqbMMWR/Iu0j57DFurq4kecH+FXLOyUcqPNzcNT0YynowUPOnJuDOS8WSeBF/FLl0bEJFI/OgXMQaFVORlZYpFZaJpGoGJTQlMbEpIrzuw713BwZ3LuO2225g05V5uv30ck++5m8aNG+sdtVqw2+1s3LjxQiHesmULHo+nqBAnNiGs0zCC6rVGi2siTzWXQt6W+fgKsoge/LCUYyGqoYCwOEI7DyN3/ac42/fHUqdVmZ1beT1kfP08msFI9ODpFbqbYVC9toR1HUHuhk+x1G1DcOveFXbtiqaUwleQiSc9GU9GMu6MlHOl+ATK47zwPmNIDKaYugQltcdQgUVVed3kbvicnDXvE3Xt5Aq7bmlIQa4gxqAQQi4fQvBlg3Gm7MaxaxmzZ89m9ssv0a3nVTwwdTKDBg0iIED+SIrL6XT+phBv3rwZt9t9YYQ45PIh2Oq1gbimUogvkTc/k7wt87E27Y6ltmwIIkR1Fdp5GAV7lpP1w5skjJ1VZrfCs1e9h/vsEWKGPk5AaMVvRR/WbQTOk3uLVs5IbKLLms9lzVeYgycjpWgkOD35wq+Vq/DCewy2cMzR9Qhu0xdTdF3MMfUwRdfFEGjTLbff7SB/60KCW/Wu1BtMyRQLHXkLsrDv/o78nd/hzc8gMiaee+66k7sm3kmtWrX0jlfpuFwuNm3axKpVq1i5ciWbNm3C5XKhaQYsCY2w1G1NcFIbiG8uhbiMZSx9mcL9q0gc/yam8Hi94wghylHhofVkLHyWyD53E9JhwCWfz/7zRtIXPEPIZYOJ7D2hDBKWjjc/k9Q5UzAGRxI/+kUMpkDdspSEz1nw+6kRGSn47bkX3mOwBGOKrocpph7m6LpFv46uWymfp/G7HZx+524MlmASbnu5ou4mlP0cZE3T6gAfAHGAAt5SSs3SNO0JYAKQfu6tjyilll7k+KeAwYAfSAPGKqVO/+r1y4GNwAil1FfFDV4dCvJ5yu/DcWQr9l3fUnhkOwaDgb7XDaDP1T0r9FZ2QEAAMTExxMXFERsbS2xsLJGRkRiNFT6ZHigqxFu2bLlQiDdu3IjT6Sx6qC6+YdGtsqSih+r0/Gm4unOfPUrq3HsJvXwIEVffoXccIUQ5U0qR9vmjuM8eJfHOtzAGlX4VJm9uGqlzphTNO711BprOu4o6jm4n7ct/ENy2H1H9KtctfqUU7rNH8KQdLZoacW6ahK8g68J7NHMQpqjzI8FFJdgUUw+jLaJKTX07/0NTxFW3E9ppaEVcslzmIHuBaUqpnzRNCwG2a5r2w7nXXlJKvfAXx89USj0OoGnaVODvwF3nfm8Enge+L0no6kYzGLE27oK1cRfCcs5g37WMH1b+wLdLFukdDYPBQHhkFLExsSQkxBH/q/IcGxv7mzIdGxuLzVb6oup2u9m6deuFQrxhw4aiZdc0DWt8Qyxt+hGT1LaoEMtDdRVCKUX2yncxWIIJLeeln4QQlYOmaUT0vpPUOVPJWfsRUX3vKdV5lM9L+qLnUUoVbdahczkGCGrQkdDOw8nb/BWWuq2xteipdySUz0vhwbXkbZmPJ+0YAFqAGVNUHSz12mI6V4bN0fUwhsZUqSL8R4IadyGoUSdy1n2CtVl3Xabd/JW/LMhKqVQg9dyv8zVNOwAU+/6/UirvV7+1UTQKfd4UYB5weXHPV92ZwuMJ6zmO0CvH/GZCfUVQPi8+ey5+ew448sCRg9+ei7cwh5OFORw7lIp/x0F89hz8rouP3luCrERHxxAXH0dCXBxxcX9cpsPCwtixY8eFQrxu/Xoc9qLzBsU3ILBVX6IbtEXFNa/op13FOY6j23Am7yKi952y0ocQNYg5JomQDgPI/2kJIW37YY5rUOJz5Kz9EPfpQ0QPehBTREI5pCyd8CtvxXViL5nfvYo5oTGmiERdcvjdDgp2f0/e1oX48tIxRdUh8trJWOq2JiA8Xo+l0CqMpmlEXnMXp9+9m6zlbxE79DG9I/1OiSZ+aJqWBLQHNgPdgMmapo0BtlE0ypz9B8c9A4wBcoGrzn2uFnDDud+XuCCfzavY8ljRNIMRTYdpA0Xzler+5fv8Hhd+Ry6+wqJC7bPn4ivMwWfPIdueS0Z6DruT9+G3r8dnz/3LdRZNMUlYmvcmpm5rAuu0uqRbeqJsKL+PnJXvERBZi5D2/fWOI4SoYGHdR1G4fzVZy/9TtCxbCUYuHUe2krd5HsHtrsPW/MpyTFlymjGA6EHTSZ07lYyvny9atjKg4ka3fYU55G9fTP6OJfidBQTWbklkn7sJangZmmaosBx6CwiLJazbSHJWzcV+eHOFbXNeXMUuyJqmBVM02nufUipP07Q3gKcoGhF+CngRuP1ixyqlHgUe1TTtYWAy8A/gZeBBpZS/NLcLwq0m8hwVu3af+BVTEFiDIOqPH9hSCnx+hcfnw+cs/E2R9ttz8TnyMEXXxVKnFQHWMAJNBqr+jaPqI3v7MjyZJ4gZ+liFLskkhKgcjJZgwnveRta3r+A+tJbw1r2KdZwnL4PMJS9hikki4urx5RuylALCYonqfx/p858md/V7JPS7u9yv6c46Rdam+eTuWo7yeQlq0oWwTkMr9UoO5S30siEU7v2RrOVvEt6wHcbA8tnIxeHxrynpMcVaxULTNBPwDfCdUurfF3k9CfhGKdVK07Q5FI0yn1ZK9f+f99UFlp573zG40IeiATtwp1JqYTGzV83lN4SoAvLy8mjUqBEOWwKRNz1TLea8CSFKTvl9nPlwGthzOJNyhIiwP7+75/V6ufrqq9m0ZRu1b5+FP1Sf6QvFlbXibfK3fc1rcz7hnrEjy+UamzdvZubMmcyfPx9DgIngllcT0WUoKqxyf20qivPkPs5+/CB9R0zgu0/fKq/LlPgfsb8cy9eK/mV8Fzjw63KsadqvJxTdAOwFUEqNU0q1O1+ONU379S4Yg4GD595XXymVpJRKAr4C7ilBORZClKNnn32W9PR0onuPl3IsRA2mGYxE9J6IOy+DUZMf+sv3P/nkk6xdu5bofpMqfTkGiOg1FnN8Y6befSeHDh8ts/P6/X6WLFlCz5496dKlC4uXfU/EFTdR+653Cb92spTjX7HUbklwm758//m7/Lhhq95xLijOMm/dgbXAHoqWagN4BBgJtKNoJPc4MPHcA33/e/w8oOm5Y5OBu5RSp/7nPXMpGoEu9jJvyAiyEOUiOTmZpk2bEtikOxH9a+a2rEKI38r45kXsB9ey+addXN6mxUXfs2LFCvr06UNom2sI73dvBScsPU92Kmfev5fYug1J2bcdk6n085HdbjeffvopM2fOZN++fVgiYgm9bAiWVtegmWV9/j/ic+Rx+u27iKqVxJlDOzAYynwudolHeqrsRiFIQRaiXIwaNYovvpxH7YlvoWxRescRQlQC3oIsTr89kaTWnTi6bdXvXj979ixt27YlHwsxo14Ek6XiQ16CwgNryVj0PEPG3MWC998o8fF5eXm89dZbvPzyy5w6dQprfH3COw8noHE3eYajmAr2rCBz6Us88OSLvPj4A2V9einIQojS27JlC507dyay282EdB+tdxwhRCWSu3keOavm8OoHXzJp9PALn/f5fPTr149Va9ZSe+xLqIi/XgmpMsr87jUKdi7jnU++4o6Rw4p1zOnTp5k9ezZvvPEGeXl5BNdvR2SXYVCnnUxPKyGlFGc/fRhvRjJHD/9M3VplumurFGQhROkopejRowfbdu8n7o43QW4HCiF+Rfk8nH5vMmajgcyUw1gsRVs1P/PMMzz22GPEDZiKpVVfnVOWnt/j4syH01CFWRzYu5tG9ev94XsPHDjACy+8wIcffojX5yO4WfeiYhzTsAITVz+ejBOcnjOF9lcN4KflZfpYWtk/pCeEqBnmz5/PunXrCO8+SsqxEOJ3NKOJyKsnYE8/wZ0PPgXA2rVr+fvf/05oq14Etuyjc8JLYzAFEjP4QXweN1cNGIrX6/3de9avX8/gwYNp0aIFH3z0CdY2fal719tEXj9dynEZMEXXIbTzUHas+JoP5y/VNYuMIAshcLvdtGjRgtQCH9FjZlXrHZyEEJcm7at/4jqxlw0b1jNs8PVkuyB2zMsoU/msYVvRCvb+SOaSfzNi4n18+uZL+P1+Fi1axMyZM9mwYQOBwWHY2g8gpMNAsMimVmXN73GS+u4kAi2BZBz/+cKdiktU4hFkmTkuhOC1117jyJEj1Bn5lJRjIcSfiug9gdR376F7164ov486Y/9dbcoxQHCrq3Gm7Oaz/8wiympi+dJFHDp0iKDIeOKuvZvAFr3RzFXrIcSqxGCyENnnLtK++idj73+Mz96YqUsOGUEWoobLysqiUaNGeCIbEDX8n3rHEUJUAdmr3ydv05fE9ruboLYD9I5T5vxuJ2c+uB9P5glsiY0J7zIMY8MrZAChAqUvfBbHka1s/WknHVtf8m6D8pCeEKJk7r//fmbNnk298a+gIv74oRQhhDhP+X24Uw9jTmxabVdr8BZk4c89iymxWbX9b6zMvPkZpL5zN7Wbt+f4jnWX+mcgD+kJIYrvl19+4bXXXiO0TV8px0KIYtMMRgJrVe/iGBAciblW82r931iZBYREE3blaFJ2beC51+dW+PVlBFmIGmzYsGEsXrKMWhPfQgVF6B1HCCGEuED5fZz54AGUPYfTx38hOjK8tKeSEWQhRPGsXbuW+fPnE9plmJRjIYQQlY5mMBJ57SQ8+VkMH1+x25dLQRaiBvL7/UybNg1LeAy2y4boHUcIIYS4qMCEJoR06M/qhR+x5Mf1FXZdKchC1ECfffYZW7duJaLHGLQAWa5ICCFE5RXeYwxGaxijbx9/0Q1cyoMUZCFqGIfDwcMPP4wtsTGmZj31jlPpefMz8HtcescQQogayxBoI+Lq8WQnH2Tq35+vmGtWyFWEEJXGrFmzSElJIar3eDRN/gq4GL/HScHeHznz6cOcen0sZz+ejs+Rr3csIYSosazNe2BJas9/XvwXh4+llPv1ZBULIWqQtLQ0GjVqBIktiRzymN5xKhWlFO7ThyjY8wOFB9ag3A4CwhMIatSJ/B1LMEfXI3bEMxgtwXpHFUKIGsmTdYrU9ybT/Ire7Fu7rCSHylbTQog/9sQTT1Bod1Dvqtvx6x2mkvAVZlOwdyWFe37Ak3kCzRSItWl3gtv0IbB2SzRNIyipHWkLniHts0elJAshhE5MkbUIveIm9q/7mP98PJ+Jo4aW27VkBFmIGuLAgQO0bt2akPb9Ces9Ue84ulI+L46j2yjY/QOOI1tB+Qms1Rxb6z7YmnXHEGj93TGOI1tJW/AM5pgkYm9+WkqyEKJKU34fWd+/TmCt5gS3vkbvOMWmvB5Oz5mMSVOkJR8m2Pb7v68vQraaFkJc3MCBA/lh5WoSJ7yFsoTqHUcX7vRkCvcsp2DfSvz2HIy2CGytehPcujemqDp/ebz9yFbSpSQLIaqB7JXvkbdlPpopkMQJbxEQEqV3pGJzJO8i7bNHGTxuCgvfm12cQ6QgCyF+b/ny5fTp04eY3rdjvaz8bklVRn5XIYUH1lCweznu1ENgMGJt1Blb62sIatARzWAs0fn+W5LrE3vzU1KShRBVTuGBNWQsmoG1aXfsv2zC1rwX0QPu0ztWiWR88yKFB9aybss2unVs+1dvl4IshPgtn89Hhw4dOHwyjZhxr6MFmPWOVO6U8uNM2UPhnuXYD21AeV2YousR3KYPtpZXYbSGXdL57b9sIX3hvzDH1Cfu5qcwSEkWQlQR7vTjnPlwGubYhsSNfIacNR+St2UB8be9RGB8I73jFZuvMJvT79xFXP3mnNq3BU370w4sW00LIX7r/fffZ/fu3UT2Glvty7E3N42c9Z9y6j8TSPvsUey/bMHWujfxY14i4fZXCb18yCWXYwBro07EDHkEd9oxzn7+OH5nQRmkF0KI8uV3FpC+4BkMZivRQx5CM5oI63ozBmso2T++Q1UaNDXaIgjvOZbUA9t4/IU3yvz8MoIsRDVWUFBAkyZNyAsIJ2rkjL/6CbtK8ntcOA5vomD3DziTdwFgqdeW4DZ9CGrcBYMpsNyubf9lC+kL/oU5VkaShRCVm1J+0uc9hePYT8SNfBZL7RYXXsvfsZSs718nZsgjWJt21TFlySjl58xHf8Ofe5bkIz+TGBfzR2+VEWQhxH+98MILpKamEt17fLUqx0opXKmHyfz+DU69NoaMxTPx5KQS1v0Wat31LnEjnsbWome5lmM4N5J8w8NFI8lfyEiyEKLyyl3/GY4jW4nsPeE35RgguO21mKLrkr3qPZTXo1PCktM0A1HXTsJrz2PouMlle24ZQRaiejp9+jSNGzcmoF5HIgY9qHecMqGUn/yfllCw6zs86cfRAsxYm3TF1qYPlrqtddsZ0P7LZtIXPIs5rj5xN8lI8p9Rfh+uk/swBkdhiqyldxwhagT7L1tIn/cktla9iep/30UHTBzHfiLti78T3ut2wjpXrYe5s358h/ytC/lyyXKG9+99sbfIQ3pCiCK33347H3z4EXXufBMVEqd3nDJRsG8lmd+8iDmhMcFt+mJrdmWlKaP2w5tJX/gs5rgGxN30ZKXJVRkopfCkHaVg30rsB9bgK8jCYAsnYczLBIRG6x1PiGrNk3WK1A8ewBQeT9yoGX96Zy3tyydwntxPrYlvl8nzGhXF73Zw+p27sYWEkX5sP2bz7563kSkWQgjYuXMnc+fOJfSyQdWmHAMU7v0RY1gc8aNfJKTddZWqhFobdyZmyMO4zx7l7Bd/x+8q1DuS7ry5Z8nd+AWp704ide695G//BnNCEyKvnYTyuEhf+AzK69Y7phDVlt/tIH3BM2gGIzE3PPqX084irroD5XGSs+7jCkpYNgzmICKvmUje6SNMfOipMjmnjCALUc0opejTpw/rNm8jfsJbYLbpHalMeAuyOPX6WMK63Eh4j9F6x/lD9sObSF/4XNFI8s1PYQisHl//4vI58rEfWkfhvpW4Tu4HILB2S2wte2Ft2h1jUAhw7us0/+k/veUrhCg9pRQZi2ZgP7Se2JueJCipXbGOy/rhTfJ3LCVh3CuYY+qVc8qyo5Qiff5TuJJ3s2vPXlo1bfjrl2UEWYiabunSpaxYsYKwbiOrTTkGsO9fDcqPreVVekf5U9bGXYgZ8lDRSPLnj9eIkWTldVN4cB1p85/m5KujyfruNfyOfMJ7jKHWXe8SP+p5Qtpdd6EcQ9HXKazbLRTuXUH+9sU6pheiesrfugD7wbWE9xxT7HIMENb9FgzmILJXvluO6cqepmlEXnMXCsUNoydc8vmMTzzxxKWn0scTegcQorLxer0MHToUuxZEaN+paIbq8zNw1g9vYgyNJuyKm/SO8pdMUbUxxyaRv30RzuO7sDXrXu3WoFbKjytlDzkbPiNz6Szs+1ei3HZC2vQlsu/dhF15K5Y6rf50GkxgnZa4046Rv30xltotCQivPtOBhNCTI3kXmUtewtrkCiJ631miOzQGUyCa0UTBjiUEJjTBFJlYjknLlsFiA4OR0xsWEl6nCV06tD7/0j9Lei6ZYiFENfLGG29wzz33UPumv2Os30nvOGXGnZ5M6nuTiOh9J6GXDdI7TrEVTbd4FnNcI+JufrJaTLdwpx2jcN9KCvevxleQiWYOwtqkG7aWvYpWEinh1t1+l50zH/4fPnsOCbe9RECYlGQhLoU3L43UufdhtIYTP/oFDIHWEp9D+TycfncSmsFIwrhX0IwB5ZC0fCifl9S5UzF4nZw5fpjwsFCQKRZC1FwbNmzg0UcfJTipDYaky/WOU6YK968EzYCteQ+9o5SItXEXYgY/hPvsL1X6wT1vXjq5m77i9LuTSJ0zhbxtX2OOb0j0oOnUnvwh0QPuIyipXYnLMYAh0ErM0EdRfh9p85/G73GWw3+BEDWD8rpJX/Asyucl5oZHSlWOATSjiYirbseTeYKCXd+WccrypRkDiLx2Eq6cNG6+6/9KfR4pyEJUA++99x69evXCZbQS039qtXrgSSk/hftWE1S/A0ZbuN5xSsza5IqiknzmfEm26x2pWPzOAvJ3fceZTx7i1BvjyFk9F0Oglcg+d1N70gfEDvs7tuY9MJgsl3wtU2QtYgZNx5N2nMxls6vUdrdCVBZKKTK/fx33mcNED5yGKar2JZ0vqFFnAuu2IWfdJ/iq2CZIltotCW7Tl+8/f5cfN2wt1TlkioUQVZjX62XatGnMnj2bkIYdiLp+Oiqw8ix9VhacKbs5++kjRF//N2wteuodp9TsP28g/evnMcc3KtpMpJQjO+VJeT04jmylcP8q7Ee2gM9LQGRtbC17YWvRC1N4fLleP3fTV+Ssnkt4r7GEdR5ertcSoro5v110WNcRhF95a5mc0332KKlz7yXk8sFEXj2+TM5ZUXyOPE6/fRdRtZJIO7yrxKNGVWdSiRDiN7Kysrj55ptZvnw5EZ1vIKTHWFQpbnFXdgV7V6KZgwhq3FnvKJfE2qQrMYMfJP3r5zn7xeOVpiQrnxfXqf0U7l+N/eA6/K5CDLZwQtoPwNaiF+b4RhV2RyK08zDcZ4+Qs+p9zDH1CWrQsUKuK0RV5zp1gKzlb2Fp0LFoBaMyYo5rQHCbPuRv/4aQdtdVqd0vjUGhRFx1B+lLXyLpoSUDjj83YElJjpeCLES3msyFAAAgAElEQVQVtG/fPgYPHszx5BTir7+fwBYX3VqzyvN7XNgPrcfapFuZ3MrXm7VJV2IGPUj6oudJ++LvxN70ZIWXZKX8eNKP4zy+C2fyLpwn96HcDjSTBWuTK7C16IWllPOJL5WmaURddy+erJNkLJpB/G0vYYqoOk/QC6EHX0E26QufJSA0mujr/1bm37vhV46m8OBaslfNIXboY2V67vJma3U1fkcewAhACrIQ1dnixYu55ZZb8BoDqX3r8xDXRO9I5cbxyxaU246tZS+9o5QZa9OKL8menDM4j+8sKsQpu/HbcwEIiKyFreVVBNVrh6V+Bwxm/X8IMZgtxA59jNT37yd93tOlfgpfiJpA+bykf/0sfmch8aP/ibEcdhc1BkcQ1uVGctZ8gDN5N5Z6bcr8GuVF0zRCO90ApVjFQuYgC1FFKKV49tlneeyxx7AmNub/2bvv8KjKtI/j3zN9JlMy6QUChF4SepNOKKKAoKIUETuC3VXX7q4F2666rq8FxUYQlCaIqHSVIk06CNICpPdkMpnJlPP+EWBREAhkcibJ87muXHGTOef8siQz99znKZHXPo1sClM6VkDlzH+eiqxDxE/5WJGOZiCV7V9H3qJX0ce1JGrMP6u1CPSVFeJK24krbQflaTvwFWcDoDaHYWjUHkOjDhgatUdjjai2a1a38qPbyfnqWYzNuhE5+kkkScwpF4Q/K1jxAaVbvwn4HA2/x03GR3ejMliInfRmbXw+nnX0laurNDBbdJAFoRZwOp3cdtttfPnll1jb9cc+9D5kjV7pWAHlcxZTfngr1i7X1MYn4wsKadkLrvk7eYteJWfuc5dVJPvdTlzHd1d2iNN24Mk9CoCkD8GQkISh6yiMjTqgCW9Qa1Y4MTbugH3A7RSu+pDi9V8SWo3jKgWhLnDsWU3p1m+wdLkm4BOYVVo99n63kPfN65TtXok5eUhArxcMRIEsCEHu+PHjjBo1im3bthEx8FZMXa6FWlLkXA7nbz+D30dIu4FKRwmYSy2SZa8Hd8ZvlQXx0e24Mw+A7EfS6NDHtyak3yQMjdqji25aq99cWLqMpCLnEMVrZ6GLSsRUyydqCkJ1qcg+RMH3/0XfsB32/rfWyDVNrfui3/oNRT/NxNSyd50f+iSGWAhCEFu3bh3XXnsthaVlRI98FHXjLkpHqjGZn/8N2esm7rZ3lI4ScGW/rSVv8Wt/OdxC9vuoyDmCK207rqM7cJ/Yi+x1g6RCF9McQ+P2lUMn4lvXuS2t/R432V88jqfgBLET30Ab0VDpSIKgKF95CZmfPQQ+L7G3/KdG14d3Z+wna+bfsPa8EXvfiTV23WoghlgIQl0xY8YMpkyZgtYWRfykfyPbLm/R99rEU5BOReZ+QvvfpnSUGhHSqjcAeYtfI2fuP4ga84+T44grO8SuY7vwu0oB0IYnYG4/pLIgbtgOVQAm5QQTlVZP5OgnyfzsIXIWvEDszW/U+Z9ZEP6K7PeRt/h1fI58Ysa/WuObJ+njWmJq04/SzQuxdBiKxhpVo9evSaJAFoQg4/V6efjhh/nvf/9bZzf/uJCyPWsAiZA2tWtr6ctxZpF84p2JlR1iQG2JxNise2WXOCEZjSVcyZiK0FgjiRz9BNmznyTvm38Red0zQT10xJ11kOL1c1AbregbtEXfsC0aW3StGf8tBK+in1NxHd1G2NB70ce1VCSDvd8kyg9soHDNZ0SOfFSRDDVBFMiCEETy8/O58cYbWblyZZ3e/ON8ZFmmbO9qDI2S0ViCd5WFQAhp1RtJo8O5fy36uFaVK03Y40RhReXWsWGDJlOw7F2K1s7C3vdmpSOdxe92UvTzTEp//bayyy37cexcBlSuIKJv0BZDw7boG7RFG9lIrMwhVIlz/3pKfpmLuf1QLB2uVCyHxhqFtetoijd8ibvzCPTxrRTLEkiiQBaEILFnzx5GjhxJ2rHjdXrzjwtxp/+GtygL2xX1c9UCU7NumJp1UzpGUDJ3GEZF9iFKNnyFLirxdNddabIs49y/jsKV0/E5CrF0uorQvjcj6Yx48o7hPrEX1/E9uI/vrpx8CqgMZvTxrdE3bIuhQdvKHQvVWoV/EiFYefKOk7f0TXSxLQgbdLfScbD2uB7HruUUrPqQmJv+VSffxIsCWRCCwOLFi5kwYQJeVd3f/ONCyvauRtLoMbXoqXQUIchIkkTYoLvx5B0jf+mbaMPi0UU1UTSTtzibgmXvUX54C9qoRCJHP/WHW9+6yMboIhtj6XgVsizjLc7GfWIP7uN7cJ3YS/mhzQBIGj26uBYYGlR2mPXxrVDpjEr9WEIQ8bud5Cx8CUmjI3LUk0ga5d9IqXRGQvtMJP+7/+Dc91PAl5lTgiiQBUFBsiwzbdo0nnnmGUxxzYmpB5t/nI/s8+Dc9zPG5j3q/BJCwqWRNFoiRj1B1mcPkrvgRWImvYnaaK3xHLLPS8nmryleNxskCfvAO7B0HnHesdGSJKENjUEbGoO5XeUdIl9ZUWWH+cQe3Cf2ULzhK5D9lSuURDdF36DN6WEZapOtpn48IUjIsp+8b9/AW5hB9NiXgmpzn5CkFEp/XULhmk8rn7O1dWttflEgC4JC6uPmHxdSfngrflcp5jq0tbRQ/TTmMCJHP0XWF38nb9FrRN3wzxqdtOc6sZeCH97Bk3cMY/MehA2ajMYaeUnnUoeEYmp5BaaWVwCV3UJ3xm+VQzJO7KF021JKtywCQBve8PSkP0ODtmhsdXcFAaFSyS/zKP/9F+wD78SQkKR0nD+QJBX2gXeQPfsJSjd/je2KG5WOVK1EgSwICjh27BijRo1i+/bt9Wrzjwsp270KlcmGoUknpaMIQU4f15LwIfeQ/91/KFzzCWED7wj4NX3lpRSt+QTHzmWorZFEXvtMtW9eotKbMDbphPHk34Ds9eDO+v30sIyy337GseN7oHKFE33DNqeHZWgjGoqJf3VI+eGtlZtytO6HpctIpeOckyEhCWOLnhT/MpeQ5MFozHXnDqgokAWhhp3a/KOo1En8Df9A3biz0pGCgt/lwHloE5YOw4J6CS8heJiTB1ORc5jSzV+ji26Kue2AgFxHlmXK9qymcPUM/OWlWLtdi63XuBoZIyxptBgatMHQoA30GIPs9+HJSzvZYd6L+9gunHt/BEBticDcLoWQpEFo7bEBzyYEjqcoi7xvXkcb2YjwK+8L6klw9v63knFwM0U/zSTiqgeUjlNtRIEsCDXozM0/4ib9q15t/nEhZfvXgc9LSNu6u7W0UP3sA26nIvcoBd//t3IIQkyzaj2/J/8E+cvexX1sJ7q4loTf+AK6qMRqvUZVSCo1uqjEygydR1RO/CvKwn18N2X711L8y1yKN3yJvmE7zMmDMbXohUpnUCyvUHV+j4vchS+BLBM5+qmg//fT2uOwdh5ByeavsXYeji66qdKRqoXYaloQasAfN//oTPiIR+vd5h8XkvXF4/jKioi7472g7pYIwcfnLCbzswdBhthJb1bL7mKyt4LiDXMp3jgXlUZPaP9bMLcfGvRDGLwleZTtWYVj13K8hZlIOiMhrfpgTh6MLq6V+NsKcrIsk7/k35Tt/ZGo65/D2LSL0pEuit/lIH36XWgjGxE9dlow/p6JraYFIdiIzT8uzFucg/v4bkL7TAzGJ1YhyKlNNqKufZqs1MfI/fplose+hKS+9Je38qPbKVj2Lt7CDExt+hE28A7UIfZqTBw4GmsEtp43YO0xBveJPTh2rqBs3084di5DE9YAc/IgzG1TUJtrx89T35Ru/YayvWuw9bmp1hTHULmud2jvCRQsf4/y33+pE8t0ig6yIATQmZt/RA67D30bMXzgXIo3fEXRT58Tf/cMNLZopeMItVTZ3h/J++Z1zB2vJnzIlCof7ysrpHDVDMr2rkFjjyVs8FSMTToGIGnN8rudOPevxbFzBe70vSCpMDbtgjlpMMamXS/rzYRQPWRZxrHjBwqWv4cxsQuR1z4V9Hcr/kz2+8j8+D5kv4e4298Nto1vRAdZEJRWVFTE6tWrWbZsGampqWLzjwuQZRnH7lXoG7QVxbFwWULa9KvcaW/TAnTRiVjaD72o42TZj2PHDxSt+RS/143tinHYeo5B0ugCnLhmqPQmzMlDMCcPwZN/AsfuFZTtXkXuwU2oTDZC2g7AnDQYXWQjpaPWS353Gfnfv4Pzt58xNO5IxPCHa11xDJXj4+0Dbydn7nOUbl2CtdtopSNdFlEgC8Jl8nq9bNq0iWXLlrFs2TI2btyI3+9HozdhaNKR2MGT8dfjzT8upCL7EN6CE1i7jlI6ilAHhPabREXOEQqWv4cuIgF9fOvzPr4i5wgFP/wf7ozf0CckET5kKtrwhjWUtuZpwxtg73cLoX0mUn7kV8p2Lqd065LKlUBiW2BOGkRI676oDGKORE1wZ/5O3uJX8RbnENpvEtbu19XK4vgUY2JnDE06U7R+DiHtBtbqzW3EEIu/UFZWRk5OzukPh8PBsGHDCA29/MkfQu136NCh0wXxylWrKC0pQZJUGONbYGzcEVNiJ6So5uLW5UUoWPkhpdu+pcG9qajFi7JQDXzlpWR9/jCy103MzW+isYSf9Rh/hYvidV9QsvlrVAYz9oG3E9J2YL0cA+9zFlO2Zw2OXcvx5B5F0ugwtbiCkOTBGBKSanXBFqxkWaZ0yyIK13yK2mwnYsRjGBqc/81cbVGRd4zMj+/F0nEYYYOrPtQpQMQQi7/idrvJzc0lJyfn9OczP3Jzc8nOySE7O5vc3Fxc5eVnnSPEGsqzzzzNA/fdi15fv3c8q2+KiopYtWoVy5cv54dlyzhy+DAABns0usQraNCsM8S1Q220KJy0dpH9Psr2/YipaTdRHAvVRm20EHntU2TNfITchdOIGf8KkuZ/4yGdBzdSsPx9fCW5mJOHENr/FkW2qw4WapMNa9drsHQZSUXWQRy7VuDcu4ayvWtQ26Ixt0vBnDRI7NxXTXzlJeQvfYvyg5swNu9B+LAH6tRrhy4iAXOHYZRu+w5zx6vRRSQoHemS1NoOss/nk/Pz888qcv9c+Gbn5JCTk0tpSfE5z6NSa9GYQ1EZbUgmG9qQUDQhNrRme+WtAaMNWW/F76ugdP1snEe2ExnbgDdee4Xx48ehUol31nXR+YZN6BOSsTTrhDahPZItrl52nKpL+eGt5Mx9jsjRT9WJWc9CcHHuX0/u19MISRpM+LD78ZXmU7DyA8oPbEAbkUDY0HswNGirdMyg5Pe4Kf/9Fxy7VuA6uh0AQ6NkzMmDMTbviUormkSXwnViD3mLX8fnLMI+4HYsnYbXydcQn7OY9Ol3oY9vRfSYfyodBy6hg1xrC2SVSiWfM7ukQhtiQ2WyIRltaEJs6Mx2NCE21KZQJJMVWV9ZDKtNNiSdqUq/nOVHfqX4x09xZx+meZtk3nv7DVJSUqrxJxOUIoZN1Lzcb17HdXgrDe6Z+YcOnyBUl6KfUylePwdT636UH9oEfj+2XmOxdh0VbLPsg5a3OAfH7pU4dq3AV5yNpA8hpHVfzMlD0Mc2VzperSD7fZT8Mo+itbPQhEYTMfLv1b6pTbAp2bSAwtUfEzXmnxgTFd8xtv4UyE2GTJLL1SFoTKHIBiuysbLgVRnMAd+mVpb9lO1ZQ/HPM/GW5NJ7wCDe/c8bJCUlBfS6QvU6NWxi2bJlLFu+/I/DJhp1wNqsixg2EUB+t5MT70wkpN1Awofeo3QcoY6SZT+581+g/NBmDImdCRs8BW1ojNKxaiVZ9uM+thvHruU4969D9lZgaNwRW6/xdWb8bCD4HIXkLfkXrrQdmFr3I3zoPaj0JqVjBZzs9ZAxYyqSWkvsbf8NeG12AfWnQO772mr5WIFT0Qyyt4LSrUso/uUr/O4yxoydwL9fnUbDhnV3BnRtJoZNBBfH7pXkf/sm0RNew9CgjdJxhDpM9lZQkXMEXWwL8bddTfzuMhw7fqB44wL8ziJRKP+F8iPbyFvyb+SKcuyDJmNOHlyvfgedB9aTu3AaYUOmYul4lZJRRIGsBF95KaW/fEXJ1m9Qq9VMvfc+/vnMU2LFiyAgyzKbNm0iNTWVL7/8ktzc3D8Nm+iIFNVCDJtQQPaXz+AtzCBu8kf16gVDEOoSf4ULx/alFG+cj99ZjKFxR0J7j7/g8np1nez3UfRzKiW/zEMb3pCIa/5eL9eZlmWZ7NlP4Mk7Rvxd05VcPlAUyEryFmdTsjaV0t2rMVlCee6Zp3ngfrHihRJ+//13Zs2axaxZszh48CBqrQ5Ts27Y2vaFuCQxbEJh3tJ80t+7FVvPGwjtU6XnLEEQgpC/wkXptqWUbBKFsrckh7zFr+NO34c5eQj2QXeh0hqUjqWYiuxDZH76INZuo7EPuE2pGKJADgYV2Yco/vFTnEe2iRUvalBOTg5ffvkls2bNYuPGjSBJhDRujy1pAJrEHkj6EKUjCiedmrwRd+cHaMPilY4jCEI1OatQbtKJ0F7j6k2h7Px9I/lL30T2+wgfei8hbfopHSko5C19i7I9a4i74z209lglIogCOZiIFS8Cr6ysjEWLFpGamsqyZcvw+XyYYpoS0rY/xpZ9kCwRSkcUziHjk/sqJ27c/IbSUQRBCIDKQvlbSjbOx19ecrJQHo8+vpXS0QJC9nooXPMJpVsXo4tuSsQ1f0drj1M6VtDwOgrImH4XxiadiBz9pBIRxEYhwcTYpBOGxh0o27OGIz/PZNCgQWLFi2rg9XpZuXIlqampLFy4kLKyMgyhUVi7X4u17QAIq52LktcXFblH8eQcwT5ostJRBEEIEJXOgK37dVg6XlXZUd44n6zURzA06Xyyo1x3CmVPYQZ5i16lIvsQls4jsfe/VSxb+ScacxjWHtdT/HMqrmO7MCQEfw0kOsg1RKx4cXlkWWbr1q2kpqYyZ84csrOz0ZosGFv0IjR5IMS0Etuh1hKFaz6hZPPXNLjn88rNeARBqPP8FeUnO8oLTnaUO1eOUY5rqXS0y1K290fyf3gHSaUm/KoHMTXvoXSkoOX3uMn48G7UJisxE/9d05PjxRCLYOcrL6V041xKtiwWK15chMOHDzNr1ixSU1M5cOAAKo0WU9OuhLYfiKphZ/EuvZaRZT/p796KLjqRqOufUzqOIAg1zF9RTumv31Ky6WShnNi5cuhFLSuU/R4XhSum49i5DH18ayJGPorGKrbivpCy39aSt+gVrD1vxN53Yk1euvoLZEmSDMBPgJ7KIRnzZFl+TpKkT4F+wKk9nG+RZXn7ec7zNnCbLMvmP339OmAe0FWW5S0XG7y2FsinKLHihcvlIjMzk4yMjD98pKenk5GRQXFJKbEx0cTHxxMXF3f686mPiIiIGplomJeXx1dffUVqaiobNmwAIKRREtakgWia9USlV2yZGOEylaftIGfOU0SMfIyQ1n2VjiMIgkJqc6FckZtG3uJX8eQdx9rjekJ7TxBLhVZB3rdvUbZ7JdHjXsKQkFxTlw1IgSwBIbIsOyRJ0gJrgQeAu4ElsizPu+BFJKnLyWNGn1kgS5JkAb4FdMC99alAPqU6Vrzwer1kZ2f/odj9YwGcwYn0dIoKC846VqXWorGGowoJQ9Ia8JUV4SsrwFdWdNZj1RoNkVExNIiPp2GDeOLj4/5QQJ8qqG02W5XXtXU6nXzzzTekpqby/fff4/V6MUY3xtx2AMZWfZAs4p15XZC39C2c+9fR4N5UVFqx/KEg1Hd+t7Ny6MWmhfjLSzAmdsHWa1xQFsqyLOPYuZzCFR8g6YxEDH8YY5NOSseqdfwV5WR++gCyx03sbf9FbbTWxGUDO8RCkiQTlQXylJMfFyyQJUlSAyuA8cDvfyqQ3wKWA48Cj9THAvmUc614MWDAAPLy8s4qeM8shE+kZ5Cbk82f/x0llRqt2Y7KHIYqJAydNRydNQKNJRxMdmSTHbU5DJXBcs5iVvZ58JUV4istwF9WgOQsxFdWgLc0H3dJHt7SAvyOAnwux1nH6g1GomPOLKT/2Ik+9WEwGFi9ejWpqanMnz8fh8OB3haJqXVfrO0GQnj9W1S9LvN7XJx4ZyKmlr2IuOpBpeMIghBEThfKGxfgd5UGXaHsdzvJ/+H/cO77EUOj9kQMfwS12a50rFrLnXWQrJmPYGzahcjRT9XEZlGBKZBPFrlbgWbA/8my/PeTQyx6Am5gJfC4LMvucxz7AKCSZflNSZIcpwpkSZI6AU/JsnydJElrqGKB3PLp72S313+xD68VZNlP2Z41FP00E19pLpJKjez3nfU4lcmG2hyGxhyO2hyG2hyOxhKG6tR/m8NRmaw1su+53+PC5yjE58jH5yjAV1r52eso+N/XHPnInrN+NZDUWmSfB5XehKllb0La9EffsK3S+7ULAVK27yfyFr9G9NhpGBrV2G01QRBqEb/bSemvSyo7yq5SjE27VhbKsS0Uy+TOOkje4lfxFmUT2nsC1h7Xi9epalC8cQFFaz6uqW2oA7PMmyzLPqCDJEmhwEJJktoBTwBZVA6PmA78HXj+zOMkSYoDxgD9//R1FfAGcEtVwp7JYtDgL/dc6uFBSo2ufQq2tn0o/PV7fKX5qC3h/yuELWGoQ+xIai2SBBpVEGzPqzaCwQgR517vUZbB4/MjVzjxlRbgPV00F+BzFqGPa4WpWTc0Oj3B8OMIgePcuxq1JQJ9QjulowiCEKRUehO2njdg6TT8dKGc9fnDmJp2JazPeAxxNVcoy7JM8ZZvyFs1A7XRRvS4aRgaiuev6mLtNgrX0W0UrvqIkIS26KMaB+xaHp/8a1WPqfIqFpIkPQs4ZVn+1xlf609lB3i4JEk/ANHAFmAhMANwnXxoAnAY6AwcAk7dn48BCoCRVegi187lNwShHsrNzSU2NhZrt2ux9p2kdBxBEGoJv9uJ49clFG9agN/lQKvVQQ01U2RZxuvxYGnRnYhhD+A31MhY2XrF5ygk85N7sdgjyPh9F0ajMVCXqvJvzQU7yJIkRQIeWZaLJEkyAoOBVyVJipVlOfPkJL5RwG4AWZaH/ukUMWecyyHLcrOT/zPijK+voYpDLARBqD3mzJmDz+fD2m6A0lEEQahFVHoT1p43YO40nLJdy1G5ii98UDXSRzRE3bI//sCPka2X1GY74Vc9SM68fzLy5iksn/up0pFOu5ghFrHAZyfHIauAr2RZXiJJ0qqTxbMEbKdyVQtBEISzpKamYoptKnY5FAThkqj0JixdrlE6hhAAxqZdsXQeyYp5n/HBzKuYPPEGpSMBtXijEMQQC0GoFfbv30+rVq2IGnQHxs6jlI4jCIIgBBnZ6yFz5sPIjnz2791NYqNq32W4yrcAxN68giAE1KxZs5BUKgwt+ygdRRAEQQhCkkZL5IjH8FW4GThiDH6/8quUiQJZEISAkWW5cnhF4w5I5nCl4wiCIAhBShvREHvKnaTt2sjkR59VOo4okAVBCJz169dz5MgRbMkDlY4iCIIgBDlz+6GYWlzBR2+9wverf1Y0iyiQBUEImJkzZ6LRGVA36a50FEEQBCHISZJE2LD70ZjDuP6GcRQXlyiWRRTIgiAEhNvt5quvvsLYvAcqXcDWthQEQRDqELXBTPjwv1GWn8ngMTcrlkMUyIIgBMTSpUspLCwkNDlF6SiCIAhCLWJo2A5bzxvZvHwR096erkgGUSALghAQqamp6C1hSA2SlY4iCIIg1DK2XmPRx7fhmcceYte+AzV+fVEgC4JQ7QoLC1myZAnG1n2RVGql4wiCIAi1jKRSEzHiEUBi0Ihr8Xg8NXp9USALglDt5s6dS0VFBbYksbW0IAiCcGk0tijCht5LzqE9jJv8UI1eWxTIgiBUu5kzZ2KMSkAOT1Q6iiAIglCLhbTuQ0jSYOZ/8i6zFy6tseuKraYFQahWR44cITExkYj+kwjpPkbpOIIgCEIt569wkfXZA6i8bo4c2ENsdFRVTyG2mhYEQVmzZs0CwNSmv7JBBEEQhDpBpTMQPuJR3I4iBl4zlppo7ooCWRCEanNqa+mQRklIlkil4wiCEED+CpfSEYR6RB/TDHu/Sfy2cTWPPv96wK8nCmRBEKrNli1b2L9/P9YksbW0INRVfo+bvG/f4PjbY3FnHVQ6jlCPWLpeg6FJJ9548RnWbdoW0GuJAlkQ6gi/38/f/vY3Xn75ZdLT0xXJkJqailqrQ9OspyLXFwQhsLzFOWTPeoyy3auQJDXFa2cpHUmoRyRJRcTVD6HSmbh69PU4nc6AXUsUyIJQR0yfPp033niDJ598koYJCQwcfCXz5s3D7XbXyPU9Hg+zZ8/G2LQbKr25Rq4pCELNKU/bQeZnD+IpzCTyumexXXEj5Yc2487Yr3Q0oR5Rh9gJv/ohijMOM2Li5IBdRxTIglAHZGdn8/jjj2Nu0p64Oz8gtMcYft64hTFjxhAZHcs9993Pjh07Apph+fLl5ObmYk8WwysEoS6RZZmSTQvI+fIZ1KZQYie9ialZNyydhqMyWila+4XSEYV6xpjYGUuXa1i1IJV3P50TkGuIZd4EoQ6YOHEis+fMoeEd/4dsiwdA9vtwHd2Oa/cKSg9sQPZ5adWuPfdMvoMJEyZgt9urNcO4ceNY8M1SYqZ8hqTWVuu5BUFQhr/CRf73b+Pc9xOmFlcQftWDqPSm098v3jiPojWfEj3hdQwNWiuYVKhvZK+HrNRH8Jfm8Nue3TRtnHC+h1d5mTdRIAtCLbdq1SpSUlII7z0Wc6+bzvkYX3kJzr0/UrZrOe7sw2i0OoaPvIYpd91BSkoKavXlbQddUlJCdHQ0+jYphA6eclnnEgQhOHiKsshd8CKe3DRC+07E2mMMkvTHOsNf4SL9g9vRRTYheuyLCiUV6itP/gkyP3uAhi2TObx9w/ley8Q6yIJQn7jdbqZMmYIxPO68m3KojVYsnUcQc8vbxN7yH8wdrmTxt98xdOhQYhsk8NTTz3D48OFLzrFgwQJcLtu9O+UAACAASURBVBc2MbxCEOqE8sNbyfrsQXyleUSN+Qe2njecVRxD5fq0tu7X40rbjuv4bgWSCvWZNrwB9pTJHNu9mTsfebZazy0KZEGoxV577TUOHDhAxJApSBr9RR2ji26KbeBdNLjncyJG/h1nSBzTXnqJpk2b0r1XX2bOnFnlmcGpqakYw+MgqsWl/BiCIAQJWZYp3vAVOXP/gdoSQcyktzAmdj7vMeaOw1CH2CkSK1oICjAnD8bUsjef/OcVlq78qdrOK4ZYCEItdfDgQdq1a4e+aXfsIx67rHN5S3Ip37OK0l0r8BRmYjCZGTtuLJPvuJ3u3bufs3N0yokTJ0hISCCs9zjMV4y/rByCICjH73aSv/QtnAfWY2rdl/Ar70elM1zUsSVbFlO4cjrRY6dhaJQc4KSC8Ed+l4PMT+5Dp9Vw4uA+7KG2Pz9EDLEQhPpAlmXuuece/CoN4Sl3XPb5NNZILD1vJPbO6USPfwV9sx589vlMevbsSWLzVrz++utkZ2ef89jZs2cjyzIhbftfdg5BEJThKUgna+YjOH//BfuA24kY8ehFF8cAlg5XojaHUbQ2tUa2ARaEM6kMZsJHPIqzIJvB199cPeeslrMIglCj5s6dy7Jly7D3uQm/KazazitJEoaG7Qgd9iAN7plJ+JX3k+3W8NhjjxEXF8+Qq4azaNEiPB7P6WNmzpyJqUFrJFtcteUQBKHmOA9uIvOzh/A5i4i68QWs3Uaf967RuUgaHbaeN+I+sRfX0e0BSioIf83QoA22K8aydeViXnzr/cs+nxhiIQi1THFxMa1bt6ZEZSZ8/L+QVJe3AsXF8OQfp3zPSkp2rsRXVogtLIJbJk2kV8+e3HDDDcRcORV9+6sCnkMQhOojy36K182heN0X6KKbEjn6KTS2qEs/n9dD+vS7UFvCiLnpX1UusgXhcsl+H9mzn8CTc4Stv26lQ9vTSw+KZd4Eoa67//77eeedd0i49U2IbFaj15b9PsoPb8W1ZwWlBzaC34ekVtPwns+RjGeN+RIEIUj53WXkLfk35Qc3EdJuIGFD7kGlvbiJvudTuv17Cn54h6jr/4GxaZdqSCoIVeMtySHzk/sJj0vgxL5t6HQ6EAWyINRtW7dupVu3blg7DsM2SNn1hn1lRZTv+xGNwYSh3WBFswiCcPE8ecfJWfgi3qIs7APvwNJpeLV1e2Wfh/QP70ZttBJz8xuiiywoouy3teQteoVRk6ay8NP/A1EgC0Ld5fP56NGjB7sPHCb69vdAF6J0JEEQahnn/vXkLX0TSaMnctTjGBq2q/ZrOHYuI/+7t4m87hlMzbpX+/kF4WLkf/c2jp3LmbVgMeNHDxerWAhCXfX++++zZcsWwlLurNfFcS1+Uy8IipH9Pgp/+pzcr6ehDW9I7KS3AlIcA4S0HYgmNJain2eJv1dBMfaUu9CGx3PrLbfQ+PFvtVU9XhTIglALZGZm8uSTT2JO7IimeW+l4yjGnf4b6e9OovzQFqWjCEKt4XM5yJn3PCUbvsKcPISY8a+isUYE7HqSWoOt11g8OYcp/31DwK4jCOej0hmIGPEYHmcpQJU3CxAFsiDUAg8//DBl5S4ih06t12P6in7+HJ+jgNzFr+HJO650HEEIehU5R8j67EFcaTsIG3oPYVfeh6SpcjOtykLa9EcTFk/R2i+QZX/ArycI56KLTiTurg8BWl/osX8mCmRBCHLLly9nzpw5hPa4Hr81Vuk4inEd340rbSeWrqOQNDpy5j+Pr7xU6ViCELTK9v1EVuojyN4KYsa/jKXDsBp7gy2p1IT2Gocn9yjO/etr5JqCcC4aS/glHScKZEEIYi6Xi6lTp2KKiCek2/VKx1FU8brZqEJCCe1zE5Gjn8JbmkveoleQfV6lowlCUJH9PgpXf0ze4tfQRSUSM+kt9PFVbqBdNlOrPmjDG1K89gtkv6/Gry8Il0MUyIIQxF555RUOHjxI+NCpSBqd0nEU4zqxB1faDmzdrkOlNWBo0JrwoffiSttB4aoPlY4nCEHD5ywm56tnKdm0AHPHq4keNw2Nufp226wKSaXG1ms8nvxjOH9bq0gGQbhUGqUDCIJwbgcOHODll1/G2rY/qgbtlY6jqOK1s1GZQjF3HHb6a+akQXhy0yjZvBBtZGMsHYad5wyCUPe5sw6Su3AavrJCwoc9gDlZ+fXJTa16oV3fiKJ1X2Bq1btGdv4UhOogOsiCEIRkWWbq1Kmg0RGWcrvScRRV2T3ejq37tai0hj98L7T/LRgSO1Ow/H1cx3YqlFAQlCX7fZRuW0r2rMdA9hMz4dWgKI4BJElFaO8JeAvSKdv7o9JxBOGiiQJZEILQnDlzWLlyJaF9JyIb7UrHUdTp7nGHq876nqRSEznyMTShseR+/QqeoiwFEgqCclxpO8n87EEKlr2LPr4VsZPeQh/bQulYf2Bs0QNtVCLF62aLschCrSEKZEEIMkVFRTz00EOExLfAkHSl0nEU5TqxF1fadqzdrkWlM5zzMSp9CFHXPQOyn9z5z+N3O2s4pSDUPE9hBjkLXiR7zpP4XWVEjHyMqBtfQh0SqnS0s5zuIhdlUrZ7ldJxBOGiiAJZEILMU089RU5uLpFX3lvvx+sVr5uNymTD0vHs7vGZtGHxRFzzOJ78E+Qt+ZfoUgl1lt/loHDVDDI+moorbQehfW8m7o73CGndN6jXSDc264YuphlF6+eIlWeEWkEUyIIQRDZt2sR7772HrfNw5IhEpeMoynViH66j27B2u+4vu8dnMjbugD3lTsoPbqLo55k1kFAQas6pccbp0++iZPPXmNsNJP7O6dh63oBKq1c63gVJkkRo7wn4irNx7FqhdBxBuCCxioUgBAmv18vdd9+N3hpGaO+JyEoHUljxui8uqnt8Jkun4ZUrW/wyD21EI8xtBwQwoSDUjPLDWylcPQNP3jH0CUmEDbwDXXRTpWNVmSGxC7rYlhRv+BJzu5Qa2dFPEC6V6CALQpB499132bZtG+EpdyHrjErHUZQ7/VT3+K/HHp+LJEmEDZ6MvmE78r97G3fG/gCmFITA8uQfJ2fuP8iZ+xyy10Pk6KeIHjutVhbHcLKL3GcCvpJcHLuWKx1HEM5LFMiCEATS09N5+umnsTTtjLrZFUrHUVzRutmojFYsHa+u8rGSWkvkqCdQm8PIXfgS3tK8ACQUhMDxlZdQsOIDMmbcg+vEXuwDbiPu9ncxtegZ1OOML4ahcUf08W0oXv8lsrdC6TiC8JdEgSwIQeChhx7C6XJX7phXy18AL5c7/TdcR37F2r1q3eMzqU02oq57Bn9FObkLXsLvcVdzSkGofrLPS8mWRWRMv4vSX7/F3OFK4id/iLXbtXVmOIIkSdj6TMDnyKd0xw9KxxGEvyQKZEFQ2HfffcfcuXOxX3EjsiVa6TiKu5zu8Zl0kY2JGP4IFVkHyf/uP8hyfR/VLQQrWZZxHtxExsf3ULjyQ3QxzYm99W3Ch0xFbbIpHa/aGRKS0TdsR8mGr8SbVyFoiQJZEBRUXl7OvffeiymyISFdrlU6juLcGftxHdl6cuzx5Y/DNjXvTmjfiTj3/UTJL3OrIaEgVK+K3KPkfPkMufOfByQir3+OqBueRxfZWOloAXN6RYuyQhzbv1M6jiCck1jFQhAUNG3aNA4fPkzCTS9DHbmFejmK1n1R2T3udHnd4zNZe4yhIi+Nop8+RxveEFOLntV27urmryineMOXeAsyiBjxCJJGp3QkIUB8ZUUUrU3FsWMZKr0J+6DJWDoMQ1LXj5dlQ0IShkbtKf5lHub2V17ycCpBCBTRQRYEhfz222+8+uqrWJMGIsUnKR1Hce6M/bgOb8XabXS1dI9PkSSJ8CvvRxfbnLwl/6Yi50i1nbu6yLJM2f51ZHw0hZJf5uE8sJ7CHz9TOpYQALLXQ/HG+aRPvwvHzuVYOg0n7q4PsXYeUW+K41NsvSfgdxZRuu1bpaMIwllEgSwICpBlmSlTpiBpDYQNuE3pOEGheN1sVAbLZY89PheVVk/k6KdR6U3kzH8Bn7O42q9xqTwF6eTMfY68r19GZTATPeE1LJ2GU7plEeWHtyodT6gmsizj3L+ejBlTKFrzCYaGbYm77f8IG3QXaqNF6XiKMDRog6FJJ0o2zhdbxAtBRxTIgqCA1NRU1qxZg73fJGRjqNJxFOfO2E/54S2V3WO9KSDX0FjCibz2afzOInIXTkP2eQJynYvl97gp+nkWGR/fgzt9H/aUO4m95T8YGrQhtP+taCMakbf0zaAq5oVL4846SPbsJ8j9ehqSRk/UDS8Qdf1zaMMbKB1NcaG9J+AvL6H01yVKRxGEPxAFsiDUsIKCAv72t78R0rAV+qQhSscJCsXr51R2jzsND+h19LEtCB92P+4TeyhY9p5iK1s4D20mc8ZUitfPxtSyF3F3foC1yzVIKjVQ2fGOGPkoflcZ+UvfEitw1FJeRwF5S98i67OH8OQdI2zIVGJvfRtjk45KRwsa+riWGJt2pWTTAtFFFoKKKJAFoYY9+eST5OXnEzn0XiRJ/Am6Mw9QfmhzQLvHZwpp0x9rzxtw7FxG6dZvAn69M3mLc8hZ8CK58/4Jai1RY18icsSjaMxhZz1WF9kYe/9bKD+0Gce2pTWaU7g8suyn+Je5ZEy/i7I9a7B2G0385A+xdLzq9Jsg4X9svSfgdzko2bJI6Sh/4M48gPPgRqVjCAqpXzMCBEFhGzZs4IMPPsDefRRyeGOl4wSF02OPA9w9PlNon5vw5B2jcNVHaMMbBryjJ3s9lGxeSPH6L0GC0H63YO16DZL6/CuXWDqPpPzwrxSunoE+IQldREJAcwqXT5ZlCpa/j2PbUozNe2AfcDtae6zSsYKaPqYZxuY9KNn8NdbOI1AZzIrm8TmLKfrxMxw7lwGVf4f2gbeLNzf1TK1tX02fPp19+/aJW49CreH1ern77rsxhEZiu2KC0nGCgjvz98rucddRNdI9PkWSVERc/TDa8IbkLXoFT0F6wK5VfnQ7GZ/cS9FPn2NM7EzcHe9h63H9BYvjypwSEVc9iKQzkvfN68heZcdNC+cnyzKFK6fj2LYUa/friBz9lCiOL1Jor/HI7jJKNivXRZZlP6Xbvyfjw7tx7FqBtetoLJ1HULp1MTnz/onfXaZYNqHm1doCefLkybRp0wZ7eCQjRl7DG2+8webNm/F6vUpHE4Rzevvtt9m5cydhKXchV+MyZrVZ8frZqAxmLJ1H1Pi1VXoTkdc9Ayo1OfOfx+9yVOv5vaV55C56lZwvnwa/n6jr/0Hk6CfRWKOqdB612U74sAfw5Byh8MdPqzWjUH1kWaZo9ceUbv0GS5drCO13S73fNr4qdNGJmFpcQcmWr/GVl9b49d1ZB8ma+SgFP7yDNiKB2Fvfxj7wdsIGTSZs6L240naQNfMRPIWZNZ5NUIZUWzuwXR79XE7bsxVvxl4cabvxFmUBYDCa6NajByn9+9G3b1+6d++O0SiKEUFZx48fp3Xr1qji2mAf/ax44eTkC9JnD2LrcxOhV4xVLIfr+G6y5zyFoVF7oq5/7rJvo8o+L6Vbv6Fo3RfIPi+2HmMqO8aXuelHwfL3KP31W6JueB5jk06XdS6hesmyTNFPn1Pyy1wsna7GPuhu8Td+CSpyj5L58X1Ye47B3vfmGrmm3+Wg6OeZlG77DpXRin3AbYS0HXDWv5/r2E5yF74MQOToJzAkJNdIPqHazDr6ytU3VeWAWlsg931ttXys4H8zXr2l+VSc2IMvcx+OtN1U5B4FWUat0dK+YydS+velb9++9OrVC7vdrlxwoV667rrrWLzkWxre+R5+c9U6iHVVzvzncZ/YS/zdM1DpQxTNUrr9ewp+eAdLl2sIS7nzks/jOr6bgmXv4clLw5jYBfugydV2i93vcZP12UP4XaXE3vYOapOtWs4rXL6itbMoXjcbc/srCRs6VUy+vQy5i16l/NBm4u+eEdDfcVmWKduzmsLVH+MvL8HScRihfSaed/yzpzCDnHnP4y3KJGzwFCwdrgxYPqHa1d8C+c98Lgfu9H34M/ZSdmw37ozfkf1eJEmieas2pwvmPn36EB8fX4PJhfpmyZIljBgxgogBkwjpNkbpOEHhdPe49wRCe41TOg4ABSs+oHTrN4QPux9zctWW3/OVFVK45hPKdq9CbY0kLOUujM17VHsXsSLnCJmfP4SxSScir31GdCmDQPH6Lyn6eSYhSYMIH3a/KI4vkyfvOBkzpmLtfi32/rcG5BoVuUcpWP4+7uO70cW2IGzIVPQxzS7qWL+7jNxFr+I68quYvFe7iAL5r/g9bioy9+PN2Ivr+B6cx/che1wAxDdsxIB+fenfvx99+vShefPm4oVHqBZOp5M2bdqQWw4RN791UROz6oOc+S/gPr6b+CkfK949PkX2+8j56jlcx3cTPe4lDA3aXtQxju3fUfjTTGSPG2u30dh63ohKZwhYzpLNiyhc9SFhQ6Zi6XhVwK4jXFjxxvkUrfmEkLYDCL/qQVEoVZO8b/6F8/cNxE/+CHVI9d3x9budFK+bTcmWRaj0IYT2m4S5/ZAqv6mR/T4KV82gdOtiDE06EXnN34PmeUz4S6JAvliy30dF9mG8GXtwn9hLWdpu/OUlANjDI+jbty8D+lV2mNu3b49aLZ74hKp74okneOWVV0iY+CpS3IULrvqgIvsQmZ8+EFTd41N85aVkzXwYv9tJ7M1vorH99XAYd8Z+Cpa9S0X2IQyNkgkbPAVteMOAZ5RlPzlz/4H7+G5iJ/0HbUTgrymc7dQbFVOrPkSMeEQUx9XIU5BOxkdTsHQZSdjAOy77fLIs4/xtLYWrPsLnyMecPITQfpMuewhH6fbvKVj+Hlp7HJHXPStWLAluokC+VLIs4y04QcWJPXgz9uFI24W3OAcAY4iZ7j160K51KxISEmjUqNHpz9HR0ahU4pZafef3+8nMzCQtLY1jx46RlpZGWloaH374IaY2/bEPe1DpiEEjZ8GLuI/tCqru8Zk8+cfJnPkIGlsUMRNeQ/WnFUd85SUU/fg5jh0/oDbbsQ+4HVPrvjV618nnKCTj43tQW8KJnfgGkkbcmahJpb8uoWD5+5haXEHEyMeQ1GJLgeqW9+2bOH/7mbjJH51zI52L5SlIp2D5+7iObkMblUj4kCno41tXW04xea/WEAVydfKW5OI+sQdfxj7KTuzDW5R91jqIWq2O2Ph4mjRuTJPGjf5QPCckJNCwYUMMhsDdbhVqRnl5OceOHTtd/J75+ejRNNLTT+Dx/HGNWo3RjC4qkahRjyMbrAolDy7B3D0+U/nhreTM+yem5j2IGPU4kqRClv04dq6g6MdP8bscWDqPILT3hBpdv/lMzoObyJ3/PJauo6qlyyZcnFMTOo3NuhM56nExbCpAPIWZZHw4GUunqwkbNLnKx/s9Loo3zKVk03wktY7QvhMDtpOhpzCD3Pkv4CnMEJP3gleVC2Txtvc8NNZING36Q5v+nCpv/O4yvCW5eItzkMry8JfkUlScwy+/Z7Ju6068jgL405uO8MgoEhISSGzcmMbnKKLtdrsY86wgWZYpKCg43fX9cxF8NO0Yebk5fzxIUqGzhqOyRKKxJmDr1hWtLQqVJRJ/SDgaa9Tpwql2vgUNjKJ1s5H0IVgVWPe4KoyJnbH3v5XC1TMoXvsFphZXULDsXdwZv6Fv0IawwVPQRTVRNKOpWTfMHa+mdPPXGJt0DvhugAI4dq2g4If/w5DYmchrRHEcSFp7LOakQZRu/x5rt+vQWCMu+ljn7xspWPEBvpIcQtoOwN7/NtTmwK1epbXHETPxX+Queo2CH97Bk3dMTN6rA0QHuZrJPg/e0nx8JTnIjjzk0ly8xbm4i7LxFOfiLclB9lb84RhjSAgNGjQksUljGjf6XwHdvn172rZtK4rnauD3+9m1axe7du360zCIyq6w0/nHOwMqrf50wauzRaG3R6O1RSKHRCJZIlCbw8Vt1SqqyD5M5qf3Y+s1ntDe45WOc0GyLJO/9D+U7V4BkgqV0YK9/22EtBsYNH+TlUu/PYjfXUbsrf8VS78FkGPPavKXvIGhcQeirnvmste1Fi7MW5xN+vS7MLe/kvAhUy74eE9RFoUrPqD80Ga04QmEDZmCISGpBpJWkv0+Cld/TOmWRWLyXvARHWSlSWot2tAYtKEx5/y+LMv4y0vwFufgK8lFKsvDV5JLVlE2adsP4vtpAz5n8enH2yMiGTQwhaFDBpGSkkLjxo1r6Cep3WRZ5vDhw6xcubLyY9Uq8vPyTn9fGxKK2haJyhyJIakV1tBo1JYI/CERqK2RqIzWoCmC6oqi9Se7x11GKh3lokiSRPjQe5C9btQmG7Y+N6E+zxqpSlBp9USMfJTMzx8m/7u3ibz2afF7GwBl+34m/9s30SckEXntU6I4riEaWzTm5ME4dvyArcd1f7kLpez1ULxxHiW/zAVJRWj/27B2GVnjTQxJpSYs5U604Q0pWP4emZ//jajrn0Vrj6vRHEL1EB3kIOT3uPAV51KR+Rue4ztxHN6Or6wQgAaNmnDlkEEMHjSIAQMGEBkZqXDa4JGdnc2qVatYuXIly1es4FhaGgB6WwS6hPZYEzsiRzVFbYlCpdUrnLZ+qcg5TOYn92PrNY7Q3hOUjlPnlGz+msJVH4ml3wLAuX89uYteQR/fmqgx/wzoEn7C2bwlOZVd5HaDCL/y3rO+X37kVwqWv4+3MANTy17YB95ZpeEYgfKHyXujnsDQSEzeU5iYpFcXybKMJ/84FWk7qDi2g7K0nfjdlT97yzZJXDV0EIMHD6ZPnz6YzcHV4QqkkpISfvzxx9Nd4t27dwOgNZrRNUzG2rQj6oZJqELjRVdNYbkLp1F+dDvxUz4Oui5sXSDLfnK+eg73ib3ETnpLLP1WTZwHN5K7cBr6mOZE3fC8YhMy67uC5e9Ruv174u784PTdWW9JHoWrPsS5fx0aexxhg+8Oui3YPYWZ5M5/XkzeCw6iQK4PZL+PiqyDeI7toDxtB+XH9yD7vKjVGjp17cZVQweTkpJC9+7d0enqzq1At9vNhg0bThfEmzZtwufzodbq0Tdog7lJB/SN2iNFNBGTI4JIRc4RMj+5D9sV4wjtI7rHgeJ1FJD58b2oLRHETvy3WPrtMpUf2kLOwhfRRTUh+sYXxVhSBXlL80j/4E5C2vQnfOg9lGxZRPG62SD7sfa8AVu364L2971y573XcB3ZKnbeU5YokOsjv8eNO30f3uM7cR7Zjivrd5BlDEYTvXr3YdjJgjk5OblWrdns8/nYvn07K1euZMWKFaxdu5by8nIklRpjXAsMjZIJadIBKbqlGBMYxET3uOY4f99I7oIXsHYdjX3g7UrHqbXKj2wjZ/7z6CISiBr7kvi9DQIFK6ZT+usStGHxePKPY2zWDXvKXX853yeYiMl7QSFwk/QkSVIDW4B0WZaHS5L0KdAPODWj7BZZlref47jzPk6SpK7ABmCsLMvzqhJeqKTS6jE27gCNO2DpczM+lwP3sZ14T+zip1+3sXL5DwDY7GEMHDCAK4cOISUlhcTExKAaeiDLMgcOHDjdIV61ejVFhZVjr41RjdG3HUxEYkeIayOeXGqJipwjOA+sx3bFWFFk1ABT8+6YO15FyeaFGBI7Vz4vCFXiSttJ7oIX0IbFE3XjC+L3NkjYeozBsWs5fm8Fkdc9g6lZd6UjXTQxea92uugOsiRJDwNdAOsZBfKSCxW153vcyaJ7OeACPq5KgSw6yBfPW5qHO20HnuO7cBzZhq80H4CY+IYMHTyIIYMHMXDgQGJiav6deEZGxumCeMXKlaSfOAGAPjQaXUIy1qadkOLaBXQNSyFwcr9+mfIj24i/ewZqo0XpOPWC3+Mi67OHxNJvl8B1fDc5c59DY40mevzL4v+7IONzFKIyhNTqO4Zi8p5iAtNBliSpAXA18BLw8CUE+yv3AfOBrlU9MLvEVY0x6jaNJQJNuxRol4JNlvEWpONK20FJ2nZmzv6Kzz79BACDPRp1DY7j8ns9lBdmA6AyWjEkJBE+9Br0jdqjCY0Nqu62UHUVuUdx7l+HreeNojiuQSqtgYgRj5I582Hyv/8vkaOfEn9LF8Gdvo+cef9EbYkkeuxLojgOQnWhUWJISCbm5jfInf882V89IybvBbGLHWLxFvAY8OdXuZckSXoWWAk8Lsuy+y+OP+txkiTFA6OBAVxCgWzSqfH6/FU9TJAkNBENMEQ0gM5X4/P5cGcfxpW2g4rcI3/eBDCgVJJEaPurMTZujzaqCSpJhUq8jtcZJevnIOmMWLqOUjpKvaOLTsTedxKFq2dQtuN7bB2HKR0pqLkyD5D91XOoQ0Iri+M6UIgJwUtrj/3DznvevGOEp4jJe4Hkk9lf1WMuOMRCkqThwFWyLE+VJKk/8MjJIRaxQBagA6YDh2RZfv4cx5/zcZIkzQX+LcvyLxc7XONPaufsQkGoB3bv3k1SUhJhvW7E0nui0nHqpdNLv6XvZePGzXTtWHM7itUm27ZtY+DAgVSojUSPfwW/KVzpSEI9cebkvU5X9GfV0q+x2cSdiwCpcvvtYpY06AWMlCTpKDAHGChJUqosy5lyJTfwCdANQJKkHyRJ2i5J0kcAf/U4Ksczzzl53uuBdyVJEq0mQagDXnjhBbSGECxdxJ+0UiRJRfhVDyJp9AwbNQaXSwxL+7OdO3cyaNAg3JKe6HHTRHEs1KhTk/fCrryPX3/5mRZJnfj999+VjiWcVKVl3v7cQZZlOVOqHNz2JuCSZfnxcxxzwceJDrIg1B27d+8mOTkZe88bsPQR3WOlnVr6bcRNk1k8832l4wSNPXv20L9/f8q8EjHjX8FviVY6klCPuY7tJPfrl1HLPhIbN6rRa8fFxdGlcyc6dOhAx44dadGiBWp1nRvuUeUO8uVsVD5LkqTIkxfdDtx9mY8Tn6VKYAAAIABJREFUBKEOeOGFF9DoxdjjYGFq3h1zh2F8k/oBqaOGc9N1w5WOpLj9+/eTkpJCmQdixk8TxbGgOENCMjET38Dxy5ekV9Tk3R6ZI3uPsubHn5B9HgD0BgNt2ibRtXNHOnas/EhKSsJkql87SdbajUIQHWRBCDp79uwhKSlJdI+DTOXSbw+i8rg4+vteYqIilY6kmIMHD9KvXz8KHOXEjHsFOTRe6UiCoDjZ58WTfxxPzmH8eUcpzzqEO/swfpcDAJVKRZOmzenSuSOdO/2v2xwREaFw8otW5Q6yKJAFQag2Y8eOZcGib4ibPAMMYmm3YFKRfYjMz/9Gm+792L1ueb1c+u3IkSP07duXvCIHMeOnIdsTlI4kCEFLlmV8JTlUZB9CzjuKK/sQrqzDeEtyTz8mKiaWzp060blTZae5Q4cONGnSJBifX0SBLAiCMvbu3Uu7du2w9xyDpc/NSscRzqFk0wIKV3/M4y/+m5efqs4l7YPfsWPH6Nu3L1l5RcSOn4YcVrPjPAWhrvCVl1CRXdlp9uQcwpl5GE/+cZArl94NMVtIbt+ebl0606FDBzp06ECbNm3Q6RTd4EUUyIIgKGPcuHHMW7iI+LtngMGqdBzhHGTZT86Xz+LO2MfGTZvp2qHuL/0myzKbNm1i/PjxpGflEjvuJeSIRKVjCUKd4ve48eSl4cs5jC/vKM7Mg7hzjiB7KrfH0Gi0tGjVmm5dOtGvXz9uuukmNJrLmQZXZaJAFgSh5u3bt4+2bdsS2vN6rH0mKR1HOA9vaT6Zn9yHPSqO9P9n777Do6q2Po5/90wmM5PeSYBAIIReEmpApQtICQQVFQUFsfeCcrFcG4oNO2IDFbCLV0JREEGBSxOIdAhJ6IQ0SJ2UmTnvH0Rer6ISyOTMJOvzPDyGZM5Zv4PJzMqeffbem4rZbNY7kktkZWUxb9485syZw65du/D28SfqqqchooXe0YSoFzSnA/vJY2fmNZdlpVOWlY6jtIDmrdoxd/a79OrVq7biSIMshKh9Y8eO5asF/6Hhre+DRRa6d3elaevJWfAMSeNu4duP687SbxUVFSxevJg5c+awZMkSHA4HvtFtCeg4EFPcRSizr94RhajXNE2jdO9aTv34HvaiPK4YO463X5tRGzf7SYMshKhde/bsoW3btgQlXkFAbxk99hR5379Jcep3zF+Qwthkz176bdu2bcyZM4d58+aRm5uLOSAUn3b9Ceg4EGSVCiHcjrPCRuF/P6Vg07dYfXx5fvp07rjtFgyGc9m/7rxIgyyEqF3XXnstX3y9oGrusYweewpnRdXSb3bPXPotLy+PTz75hA8//JAtW7ZgMHrh0zKR4E6XoqLjUYY6t9GBEHVORc5BTv0wC9uh7bTqkMD8Oe/RpUsXV5SSBlkIUXv+f/T4cgJ636B3HFFNvy391i6xL9vXLHPHpZn+h91uZ9myZcyZM4eFCxdSUVGBT1QL/DsOxNy6N0puDhXC42iaRsmuVZxaORtH6SnGT7iJV1+aTnBwcE2WkQZZCFE7fv75Z2699VbSMjJl9NiDFWxYwKlVs/H1DyQ+/v+XZkpISKB169aYTCa9I7J3717mzJnD3LlzOXbsGN5+Qfi06UNgp0shNEbveEKIGuAsK6ZgzXwKtyzGLyCIV15+iRsn3lBTv7hLgyyEcK2srCwmT57MvHnzsIZEEjr4ToxN4vWOJc6Tpjkp2bkKZ9YeSo/vpyL7AJq9AgCTt5nWbdrSrUsCnat2z+rUqRN+fn4uz1VYWMjnn3/OnDlzWLduHcpgxDe2C0HxgzA07YIy6t+4CyFqXsWJdE4uf5uyo3vo0KUH8+e8R4cOF7wkpTTIQgjXcDgcvP322zzyyCMUl5YS1P1y/HteCV4WvaOJGqQ5HVTmH8WenYEzNxNbVgZlWek4bYUAKKVoEtOcbl070znh/3fPioyMvODaTqeTVatWMWfOHL7++mtsNhvWiCb4dbgUS5u+GHxr9C1XIYSb0jQnxdt+oOCnD3GWlzDp1tt5efo0/P3Pe4dWaZCFEDVv/fr13H777WzduhW/5gmED74NZ0BDvWOJWqJpGo6iPCqyM9ByMyk/kYEtaz/2UyfOPCY0PIKEhAS6del8ZopGbGzsOd2VnpmZyUcffcRHH33EgQMHMFn98GnTm6BOA9HC49x+brQ70JwOUAqlXLYKgBC1zmErpPDnjylM/Z7A0AjefH0G115zzfk8J0iDLISoOXl5eUyZMoX3338fS2AYoQNuwtiilzQsAjg9Z7AiOxNnbiaV2RmUHk+nIvcQOB0AWH18ad+xI906//8Ujfbt22M2myktLeXrr79mzpw5rFy5EpTCt1kCQfGXYojpjsFUNzcwcQXNYSf7y8dBGWlw1dN6xxGixpUf28vJ5TMpz0qna6/ezJv9Lq1atarOKaRBFkJcOKfTyezZs3n44Yc5daqAwG4jCex1DZq3Ve9ows1p9koq8w5RmZ2OM/cAtuPplJ/IwFlhA8Do5UVsi5YcO3qY4qIirKEN8W0/AJ92/VH+nrXUnLvI/+EdijanAIrGd3yM0U+mooi6R3M6KE5dyqmf54K9nDvvvY9nn/w3vr7ntAGQNMhCiAuzdetWbr/9dtavX49f0/aED74DZ3C03rGEB9M0J/ZTJ6jMTkfLPUDZiQywBBISfylEtZF3JC5A8c6V5C16GWtsN2zpmwgZfCf+8UP0jiWEyzhKTlLw04cUbV9BSIOGvDvzDUYnJ//T84g0yEKI83Pq1Ckee+wxZs6cibdvIMH9bsTUuo80L0K4qYrsDLLmTsY7Ko4GVz3DsfdvxRTSmIgrn9A7mhAuV3Z4B6eWz6I85wAX9buUj9+fRfPmzf/q4dV+IZPZ/ELUc5qmMXfuXFq3bs1bM2cS0HkoDSbNwrtNX2mOhXBTDlsROQumYbD4Ej7yYZTRC2tcIraDqTjLS/WOJ4TLWaLb0+D6VwnuN5H/rl1Dy9ZtmPLI45SVldXI+aVBFqIe27FjB3379mX8+PEUm4JpOuE1AgfcCt7nNKdLCKEDzekgN+Ul7EV5hI+airFq+TufuERw2LFlbtE5oRC1Qxm9COg+moaT3sbaogfPP/s0TVu0ZvHiJRd8bmmQhaiHiouLmTx5MgkJCWzYnErk0LsJHfsCWlgzvaMJIf5BwdpPKcvcTMjAmzE3an3m8+ZGbTBYAyhNW6djOiFqn5d/GKFJDxNx1TOcstkZPnwYA4cmcejQofM+pzTIQtQjmqbx5Zdf0rp1a1566SV82w8katIszB0GyfqpQniA0rQNFPz3M3w7DMQv/rL/+ZoyGLG26IEt/Rc0R6VOCYXQjzUmnsgJbxLUezw/Ll9Gi5atePLpZ8/rXPKKKEQ9sW/fPgYPHsyYMWM4pVlpOmEGQYPvRLME6B1NCHEOKvOPkrvoZbwjWxBy6W1nvUfAp2UiWnkJZYd26JBQCP0pLxOBPcfQcNJMvJvG88TjjxAzZfGA6p7HyxXhhBDuo7S0lGeffZYXX3wRjCYiBt+GpeMQMBj1jiaEOEfOChs530xDGb0IHzX1LzdSsTSNR5nMlKatx9osoZZTCuE+vAIbEJb8KL6n5+RPAFZU63iXpBJCuIWUlBTuvvtuDhw4QECH/oT0m4BmlU0EhPAkmqaRt/R1KvOOEDHmKbwCI/7ysQaTGWuzLtjS1qNdeotMnRL1nrVZ5/M6Tn5yhKiDMjMzSUpKIikpiWybRpPxzxM89H5pjoXwQEWbvqF0z2qCeo/HGhP/j4+3xiXiKM6jImt/LaQTom6SEWQh6pDy8nJefPFFpk2bhkNThA+4EWvCCJRRftSF8ERlB7dxctWH+LTsRUCPy8/pGGtsN1AGStPWY45q6eKEQtRN8qr5D5xOJ3PmzOH119/g5VdeZWD/vnpHEgI4/bbrkSNHSE1NZevWraSmprJu/Xqyjh8noO0lhPS/Cc03RO+YQojzZC/MIWfh83gFNyR06L3nvHGP0eqPObo9tn3rCe493sUphaibpEH+G6mpqdx+++2sW7cOZTQx4vIxHNy3i4jwML2jiXrGbrezd+9eUlNTzzTEW7emkp+fd/oBSmEJbYQxvAVN+t2Bio6XvdiF8GCavYKc/zyLZq8gYvQjGMw+1TreJy6RkyvepTL/KKaQRi5KKUTdJQ3yWRQUFPDYY4/x1ltv4e0bSFTSA2hBjcma9yADR1/Hrz8vlS14hcuUlJSwffv2M6PCW7duZdv27ZRXbZ9p8PLGHN4UU5OuRPWIxRDeDENI02q/gAoh3Ff+D+9QcTyN8OSpmEKjq338bw1yadp6As9xaoYQ4v9Jg/w7mqYxf/58HnzwQbJzcgjsPJTAS8ad2XY36JJxbP/pQ/790ps8NfkundOKuiA7O/t/R4VTU0nbtw+n0wmAl9UPU0RzfDpdRlhULITEYAxpLHOKhajDilK/o/jX7wlIvBKflr3O6xxegRF4N4jFJg2yEOdFXmWr7Ny5kzvuuIOffvoJ38ataTrh0T9tuxvQYzS2zC1Me/Qhki8bQEL7tjqlFZ7G6XSSmZn5P6PCW7emcvz4sTOPMQdFYAxvTsjF12CJjEULicEYEC7vVghRj5Qf20v+D7OwxCQQdMl1F3Qua1wiBWs+wVF8EqOfrGAjRHXU+wa5uLiYp556ildeeQWD2YfIoXfh3f5StLOsHamUgbBh93N8zp0MHnklR/ekYjKZdEgtPMGxY8d48cUX2bx5M1tTUykuKgJObwdrCYvGGN6KyPbD8IpoBqHNMFr9dU4shNCTo+QUOf95DqNvCGFJk1EXuJmPT1wiBWvmU7p/A/7xQ2oopRD1Q71tkDVN4+uvv+a+++7jyJEjBMYPJrjP9f+47a5XQBghQ+4i5z/Pcc2t9/PVB2/UUmLhSQ4fPky/fv04cPAQ3pEt8G7Zm4ZRLVBhzTCERP/lLlhCiPpJczrIWfgCTlshDa59AaP1wreAN4XH4BXYAFvaemmQhaimetkgp6Wlceedd7Js2TJ8o1rQ9IYZ0KDlOd/179vqIso6DuLr2W/x5ajhXDlisEvzCs9y8OBB+vXrx9GsHBpf9zw0kHVIhRB/79RPH1F+aBuhQ+/DHNmiRs6plMIal0jR1sU4y0vlRl4hqqFe7aRns9l47LHHaN++PatWryVi0C2EXvfyeTUwwQNuwhQcxfjx48jJzXNBWuGJMjMz6dOnD8dO5BJ1zTPSHAsh/lHJ7tUUblyAX8Iw/DoMqNFz+7TsCQ47tswtNXpeIeq6etMgp6Sk0LZtW5555hksLS+i4U2zTu8wdp5zvAzeVkJHPEhZYT4DR1+Hpsmqs/Vdeno6ffr0ISv35OnmOLxmRoGEEHVXRc5B8pa+hrlha0IGTKrx85sbtcFgDaA0bV2Nn1uIuqzON8gHDhxg5MiRJCUlkWPTaDLueYKHPYBmvfA7es1RLQm65Dq2rf6OJ19+qwbSCk+VlpZGnz59yD5ZSNQ1z6KFxeodSQjh5pzlJeR8Mw3lbSFs1L9Qxpq/6VsZjFhbdMeW/guao7LGzy9EXVVnG+Ty8nKmTZtG27ZtWfr9csIHTCR03Kuohu1qtE5A99GYo9vz9COTSd25u0bPLTzD3r176dOnD7kFJaeb49AYvSMJIdycpjnJXTQDe8EJwkdOwcs/1GW1fOJ6opWXUHZoh8tqCFHX1MkGefny5XTs2JFHH30UU0wXGt08C5+uo13223nY8AfA4MXgpCuprJTf0OuTXbt20adPH06WlBE19lm0kKZ6RxJCeICCdV9g27+B4P6TsES3d2ktS0w8ymSmNG29S+sIUZfUqQb56NGjXHXVVQwaNIgj+SVEj32G4KQpaD6u+80cwCsgnJDBd5KdsZOxtz3g0lrCfezYsYN+/fpRUGYncuxzaMFN9I4khPAAtvRfKFg9H9+2ffHvPNzl9QwmM5ZmnbGlrUfTnC6vJ0RdUCca5MrKSl5++WVat27Ngv98S2if6wi7/g0M0fG1lsG39cX4dhjIVx+8yVeLltVaXaGPbdu20a9fPwrLnUSNfQ4tsLHekYQQHqDyVBa5KS9iioghZMidtbZTpk9cIo7iPCqy9tdKPSE8ncc3yD///DMJCQk8+OCDqKi2NJ40E7/Eq1Fe3rWeJWTgLXgFRzFunCz9Vpdt3bqVfv36UWJXRF37HM6AhnpHEkJ4AGdlGTnfTAMgPPkRDCZLrdW2xnYDZZBpFkKcI49tkE+cOMH48ePp06cPGcfzaDzmcYKTH0Pzb6BbJoO3lbARD1JWmMell4+Tpd/qoM2bNzNgwABsmonIsdNx+kfpHUkI4QE0TSP/uzepzD5A2IjJmIIia7W+0RqAObo9NmmQhTgnHtsgt2rVik8+/ZSQXlcRMeFNjM2619pbVX/HHNWSoIuv5defl/LUjLf1jiNq0MaNGxkwYABlykzk2Odw6vjLmBDCsxRtWUTJrlUEXjwWa2xXXTL4xCVSmXuIyvyjutQXwpN4bINsjoojetJM/C8ZB1619zbVuQjocTnm6PY8NfVBWfqtjli/fj2XXnoplV4+p5tjvwi9IwkhPETZ4R2c/PF9rC26E9jrKt1y+MQlAlCatkG3DEJ4Co9tkFve8DxaoHvO/fz/pd+MDB45RpZ+83Br165l0KBB2L39aTB2Ok7fcL0jCSE8hL0oj5xvp+MV2ICw4Q+glH4vu16BEXg3iJVpFkKcA49tkN1hOsXfObP0W/oOrr19st5xxHn6+eefGTx4MA5LIA2ueQ6ni5cMFELUHZqjktxvp6NVlBGePBWD2VfvSFjjEik/uhtHyUm9owjh1jy2QfYEvq0vxrf9QL784A2+Wrxc7ziimlatWsVll10GvqE0uGY6Tp8QvSMJITzIyR/fp/zobkIvuwfv8Bi94wC/TbPQKN2/Ue8oQrg1aZBdLGTgzXgFNmDcuHHk5uXrHUecoxUrVjB06FCUfwQRVz+L0xqkdyQhhAcp3r6Coi2LCeiWjG+bS/SOc4YpPAavwAYyzUKIfyANsosZzD6nl347lcOlV8jSb55g2bJlDB8+HENgJOFXT5PmWAhRLfaiPPKXvYW5SQeC+t6gd5z/oZTCGpeI7UAqzvJSveMI4bakQa4F5oatCLr4WlJXLeGpV2bpHUf8jaVLl5KUlIQxuBERV09DswTqHUkI4WGKtixCs1cSOuRulMGod5w/8WnZExyV2DK36B1FCLclDXItCUi84vTSb/96gF937dE7jjiLRYsWMWrUKLxCo4m46hmc5gC9IwkhPIyzoozi1KX4tOyJKdg9NxIyN2qDwRog0yyE+BvSINeS00u/3Q/KIEu/uaFvv/2W0aNH4x3RjPAxz+A0++sdSQjhgUp2/ICzrBj/bsl6R/lLymDE2qI7pemb0Bx2veMI4ZakQa5FXgERhAy+gxP7t3PdHbL0m7tYsGABV1xxBeYGsYRd+RSa2U/vSEIID6Q5HRRu+hbvqFaYG7XWO87f8onriVZeQtnhHXpHEcItSYNcy3zb9Ma3/QC+eP8NFiz9Qe849d6XX37JmDFjsDRsebo59tZ/nVIhhGey7d+I/dRxAronu/1a/ZaYeJTJjC1tnd5RhHBL0iDrIGTgLXgFRnDddePIy5fF2vXy2Wefcc0112Bt3IawK55E8/bRO5IQwoMVbvoGY0DE6Zvg3JzBZMbSrDOl+9bL6kpCnIU0yDo4vfTbZGwns7n0ivHy5KSD+fPnc+2112KNbkvYFU+gmax6RxJCeLDyY3spP7KLgK4j3XLlirPxiUvEUZxHRdZ+vaMI4XakQdaJuWErAi8ey9aVi3jmtXf0jlOvfPTRR4wbNw7fph0IG/0EmpdF70hCAKDZKynd91+Kt6/QO4qopsJN/0F5++DX8VK9o5wza2w3UAZKZTULIf7ES+8A9Vlg4pWUZW7hiSkPMGpwfzq0aal3pDpv9uzZTJo0Cb9m8YQkP4LmZdY7kqjnNE2j/OhuSnb+SOmeNTjLik9/3unAv9MgndOJc2EvyKZ071oCuo3CYPacqVpGawDm6HbY0tYR3Huc3nGEcCsygqyj00u/PQgoLh15JXa7LLfjKvn5+Tz55JPceOON+MV2JiT5UZCRY6GjyvyjnFo9n2Pv3sSJ+Q9RsmMlluZdiLjiCSwxCeQvf5vy4/v0jinOQeHmhQD4dxmhc5Lq84lLpDL3EJX5R/WOIoRbkQZZZ16BEYQMup0TadsYJ0u/1bjNmzczceJEGjVqxBNPPEFAm4sJGfUIyMix0IGjtICiLYs4/vEDHHvvFgr++xlegZGEDruPxnfOJXzEZKyxXQlLmozRN5icb57DUVqgd2zxN5zlJRT/+j0+rS/BKyBc7zjV5hOXCEBp2gadkwjhXmSKhRvwbdsHW+ZmPnvvda5KHsGoIf31juTRysrK+OKLL3jrrbfYuHEjXt4WfNv1o0GXYRAao3c8Uc9o9gpK92+kZOeP2DI2g9OBKTyGoL4T8W3bGy//sD8dY7QGEJ48lRPzHyJ34fNEjHnaY278qm+Kf12GVmEjoNsovaOcF6/ABpgimmNLW09gj9F6xxHCbUiD7CZCBt5K+ZFdjL32Wo7s301IcJDekTxOZmYm77zzDh988AG5ublYw6NpMPhWLG36gVnWNxa1R9OclB/ZRcmOHynZuxatvASjXwgBXUfi264f3hHN/vEc5sgWhAy6g7wlr3Dqp48I7jexFpKL6tCcDgo3L8Qc3R5zVJzecc6bT1wiBWs/xVFyEqNvsN5xhHAL0iC7CYPZh7DhD5I1/yEuvXwcm39M0TuSR3A6nXz//ffMnDmTxYsXgzLg2zKRJkPuh4Yd3H6xflG3VOYdpnjnSkp2rsJRmI0yWfBp1Qvfdv2xNOlQ7VFgvw4DqMjaR+HGBXhHtcS39cUuSi7OR+netTgKcwgZeKveUS6IT8tECtZ+Qun+jfh3Gqx3HCHcgjTIbsTcqDWBF13DlpXzefb1d5l69816R3Jb+fn5zJkzh7fffpv09HTM/iEE97qKgPjL0PxC9Y4n6hFHySlKdv9Myc6VVGSlgTJgiUkgqPc4fOJ6YvC+sJtBg/tPouJEBnlLXsUUGo13eNMaSi4uhKZpFG76Bq/ghlhbdNM7zgUxhTfDGNgAW9p6aZCFqCINspsJ7DmGssytPPbQfXTv2JrGkRG1VtvHx4fo6Gi3HnXdvHkzb731Fp9++illZWX4NmlHo+SHMcYmoowmZMsVURucleXY0tZTsnMltswtoDnxbhBLcP9J+Lbpg9Gv5t6mVkYTYSOncPyje8j5z7NEjZ+BQaYM6a786C4qjqcRMuh2lPLs+92VUvjEJVK0dQnO8lKPWqpOCFeRBtnNKIORsBEPcHzOXVzar0+t1/f1D6Bjx45079qF+Ph4EhISaNOmDd7e3rWe5Td/uunObMW3bT8adB0OITKaJmqHpjkpP7SD4p0/Urp3LVqFDaN/OAE9RuPbtp9LR3a9/EMJHzmFE589Qu7iVwhPnurxTZmnK9z4DQaLP77t68ZN1T5xiRT98i22zC0ylUcIpEF2S16BDYi8/lUcJ/ZjqMXRXGd5CZU5B9h6IJ31G2ehVZafzmPyplXrNnTrkkDnzp2Jj4+nU6dOBAQEuDRPZmYms2bN4oMPPiAvLw+fiCZy052oVZqmUZlzgJJdP1GyaxWOolyUtxWfVhfh164/5ibta61RtUS3J7j/JE7+8A6F674ksNdVtVJX/FnlyWPY0jYQ0HMMBlPdWE/d3LgtBmsAtrT10iALgTTIbssU3BBTcMNar2sB/Dl9d7b95HEqs9Nx5h7gQFY6e774hg8//PDMY6ObNqNrl8506ZxAQkIC8fHxREVFXdAUjb+86e6yYXLTnagVmqOSskM7sKVvpHT/RhwFJ0AZsDbvgm+/iVhb9MBg0mcdbf/Ow6k4vo9Tq+fhHdkCa/MuuuSo74p++RaMRgI6D9c7So1RBiPW2O6Upq1Dc9hRRmkPRP12Tj8BSqkDQBHgAOyapnVVSj0B3ATkVD1sqqZpS/7i+LuAO6qOX6xp2kO/+1oTYBfwhKZpL53ndYgapgxGTKGNMYU2Bvrgx+nRNEdxPpXZGThzMyk4kUHKj//lmwVfnzkuODSchPhOdO3S+UzTHBcXh9H493fvn/Wmu4uuxr/TEJCb7oSLOWyF2NJ/wbZ/A7bMLWgVNpSXGUtMJ6w9x+DTogdGX/2XXlRKETL4DipyDpCb8iKR17+KKShS71j1isNWRPH2H/Bt07dG55q7A5+WiZTs+IGywzuwxsTrHUcIXVXnV8R+mqbl/uFzr/xTU6uU6geMBDppmlaulPrjXWczgKXVyCF0opTCyz8UL/9QiO2GLxAMOMtLqcjOwJlzgMqcDNbuSGflqlVojtNbZ5utVtq170D3qqY5ISGB9u3bY7Va/3zTXdP2/3PTnRCuoGka9vwjlO7fiG3/BsqP7gHNidEvBN82vbG26IGlaUe3fPvcYLIQnvwIWR/eQ84304i87kW3zFlXFacuRassJ6C7Z24M8ncsMfEoLzO2tHXSIIt6rzbeQ7kNmK5pWjmApmnZv31BKTUKyARKqnvSE4VlNRZQXBiD2QdLdHuIbg9AIKffpq7MO0zFiUwqs9PZmZXB1jlz0WbNqjrIgCUgjLJT2RhMFnza9aVhwjBM57CBghDnQ3PYKT+6i9K0DdjSN2I/eRwAU0RzAntehbVFd7wjYz3i5jdTUCRhIyaT/dWT5H//FqHD7pfpR7VAc1RStGURlpgEvMNj9I5T4wwmC5ZmCZTuW0/wwFvle0rUa+faIGvAMqWUBryjadq7VZ+/Uyk1HvgFeEDTtJNnObYlcIlSahpQBjyoadompZQf8DBwKfBgdYObvQyU253VPUzUEmU04R3RHO+I5sAAoGrUruAElScyqMjOoDLvCMFdk/Fr31+WrRIu4SwrxpaxmdL9GynL+AVneQkYvbA06URA11FYW3S91HMUAAAgAElEQVTDK6D2llKsSdbYrgReci0Fq+fhHdWSgC4j9I5U55Xs/hlHcT6hl92jdxSX8YnriS1tPRVZ+z16d0Ah/uBwdQ9QmvbPK8cqpRppmna0anrEcuAuYC+Qy+nm+WkgStO0P+2FqpTaAawE7ga6AZ8DzYEXgY2apn1RNZ+5uJpzkGXJWyHEn6Snp7Nw4UJSUlJYvXo1drsdb78gzM27Eti6J6pRRwzeVr1j1ghNc5KzYBq2jF/4dsn3JA0eoHekOkvTNOLj49l/opCw69+os6OrDlshR964ju6jJrJhwXt6xxGiplT7B/acGuT/OeAszaxSKgZYpGlae6XUHCABOKZp2lCl1HfA85qmrax6bDqQCCwAoqtOEQQ4gcc1TXvzHKNIgyyEwOFwsH79+jNN8e7duwGwNojBEtsN/7geEBFX7W2ePYWzvISsj+7D4Chjz/ZfiWnSWO9IddKKFSsYOHAgUSPuxbvtQL3juFTWp/8CWyGlWZkYDHXzFwFR79R8g6yU8gUMmqYVVX28HHgK+FXTtONVj7kP6KFp2tVnOf5WoKGmaY8rpVoCK4Am2u8KywiyEKI6ioqKWLZsGQsXLmTxkiXk5eZiMBqxNumAX8seeDfrhiGw/qzuUJFzgKy5D9KweWsytm3QdWOfumro0KH8uGY9DW7+AOVVt/99C3/5lpMr3uObVZsY1aer3nGEqAnVbpDPZQ5yA+CbqreTvIBPNE37Tik1VykVz+lG9QBwy18cPxuYXTXVogK4XqvusLUQQgDZ2dlMnDiR5cuXU1FRgcnHH0uzrjTuk4iKjq+3c9m9w2MIveweji58nqTrbua7Lz7UO1KdsmvXLpYuXUpo7+vqfHMMp3fVO7niPWZ99Lk0yKLeqvYUCzfiscGFEOfnlltu4YPZcwjoMgL/lj0gsnWdnTpxPk6unE3hxgVMe/Vtpt5zq95x6oybbrqJOR/NpfHtc8Di2h1E3cWxOXdjtlopOrBD7yhC1ATXz0F2Ix4bXAhRffv27aNt27b4JwwjcMDNesdxS5rTwYnPH6Pi2B5W/rSaPr266x3J42VnZ9OkSRMsbfsTNOgOvePUmlNrPqFg7aes35FOj3ay/KbweNVukN1/wU8hhAAeffRRDF7eBPYao3cUt6UMRsKTHsJoDWBo0iiyc/64t5OorpkzZ1JeXk5wj2S9o9Qqn5aJgMbrcz7VO4oQupAGWQjh9n755Re+/PJLArolg1X/LZ/dmdE3iLBR/8J2KoeLBo/C4XDoHclj2Ww2Zs6ciV9cD7TAhnrHqVWm8GYYAxuwbMkivaMIoQtpkIUQbm/KlCmY/YLw61b3tvd1BXPDVgRfehv7t67lutvu1zuOx5o3bx45OTmEJI7WO0qtU0rhE5dI3r5fyDgm70SI+kcaZCGEW/vhhx9YsWIFAT3HgLeP3nE8hn+nwfh1Gsxn773OrI/kbfLqcjqdvPLKK/g0bAFRbfWOowufuEQ0RyWvffSV3lGEqHXSIAsh3JbT6WTKlClYQyKxdrxM7zgeJ2TgrXhHteTOWyaxZftOveN4lO+++47du3cT1D25zu6a90/MjdtisAbwzTf/0TuKELVOGmQhhNv66quv2Lx5M0EXX4vyMukdx+MoLxPho/4FRhP9Bw+nsLBQ70geY8aMGViCwvFqcZHeUXSjDEassd05un0NeUWlesehtLQUD155S3gYaZCFEG6psrKSRx99FJ/IZpha9dY7jsfyCggnLOlhCrIO0WfEGGkwzkFqaiorVqzAr/NwlPFc9tOqu3xaJuIsK2Hmpym6ZXA6nbz11ltERETQ/7IRlJeX65ZF1B/SIAsh3NLs2bNJS0sjpM942QzkAlmadiS47w2k/vw9dzz8hN5x3N6MGTPwMlvx6ThY7yi6s8TEo7zMfPrF17rUT09Pp3///tx55504A6JY9f1ievQbjM1m0yWPqD9koxAhhNspLS2lRYsWFJpCCL16er2dA1qTNE0jd+ELlO5dy6cLFnL1qGF6R3JLR48eJSYmBr+EoQT2lw1pALIXPENl1n6K8o5jMdXOiPpvo8ZTpkzBrilCBtyEd9sBFG9bRv53b9KmSyKbflqOr2/93F5eVJtsFCKE8HyvvfYax48fJ6zfDdIc1xClFKGX3Y0pNJrx145l7/4MvSO5pTfffBOH00lQ1yS9o7gNn7hE7EW5fLRwZa3U279/P3379uXuu+/G2LAtDSe9jbndQJRS+HcaTOjw+9m9ZQOdEvvIvHrhMtIgCyHcSn5+Ps8//zz+LXtAZBu949QpBm8r4clTcTjsXDJouLxN/QfFxcXMmjULv5Y90QIi9Y7jNqyx3UAZmPPJFy6t43Q6ee211+jYsSMbNm8lcsT9BI/+N5pPyP88zq9dP8KSHiJ9VyodelzCyZMnXZpL1E/SIAsh3Mr06dMpLCwktO94vaPUSaaQRoQOe4CczN0MvvJ6uWnvdz788ENOnTpFSOLlekdxK0afQMyN25K65gecTtd8v6SlpdGnTx/uvfdevBq3p9GNMzG37f+X7yD5tr6Y8FFTOZy2i3Zde5Gdne2SXKL+kgZZCOE2jhw5whtvvIF/+/5owU31jlNn+cT1ILDX1axe/CWPTn9V7zhuweFw8Oqrr+Ib3QYatNQ7jtvxietJefYBUtZsqdHz/vbv3qlTJzZuSSVqxP0EJz+O8w+jxmfP1IPw0Y+RdSiD9l17cfz48RrNJuo3aZCFEG7jySefpNLuIKT3dXpHqfMCL7oGS/MuPPfYQyxd8bPecXS3cOFC0tPTCe6erHcUt2SN6wHArI8+r7Fz7tu3jz59+nDffffh1bgDjW6cifffjBqfNVfzLkRc8QS5WUdo37Unhw4drrF8on6TBlkI4Rb27NnD7Nmz8U8YiuYXrnecOk8ZjIQNfxCjfxjJl1/O98uW43A49I6lmxkzZmANicTQvIfeUdySKSgSU0Qz1qxYesHncjgczJgxg06dOrFp6zaikh4kOPmxcxo1PhtL045EjHmaU7nZdOjWk/SMzAvOqIfjx4/zwgsvkJ+fr3cUgTTIQgg38cgjj2D0thDU6yq9o9QbRqs/4clTsVdUMGTwICIbRfPg5Mls375d72i1auPGjaxZswb/riNlze2/4ROXSPHBnWzYef4N6N69e7nkkkt44IEHMDXpRKNJM/Fu0/eCV6uxNG5LxFXPUFxYQHz3nuzes/eCzlebNE3j448/pm3btjz88MN06HaRzKl2A9IgCyF0t2HDBhYsWEBAt2Q0S4DeceoV74jmNLxtDmFJD1MWEM3LM16hY8eOtGrbgZdeeqlezOucMWMG3lY/LO0G6B3FrfnE9QQ0Xp/zabWPdTgcvPTSS8THx7Nl206iRk4meNSjOK3BNZbP3LAVDa5+FpvNRpeeF/Pr9h01dm5XOXbsGElJSVx//fXYAxrRYNg9HK+aU33s2DG949VrslGIEEJXmqbRv39/1m3+lchJ74C3j96R6jVHaQG2PT9TsnMVZcf2ogwGLurdl5sn3kBycjJ+fn56R6xRBw8eJDY2loBuowjoM0HvOG5N0zSOzrqR4Eax5Oz67zkft2fPHiZMmMD69evxb9WT0MG3o9VgY/xHFTkHyf7iUbwUrF75A926dHZZrfP126jxvffeS3FpGSF9x2PpNAxlMFJ2aBvZXz1FUFgEW9etpmnTJnrHrQtkoxAhhGdZtmwZq1atIrDXVdIcuwGjTyB+nUfQYNzLNJw0i6CeY9iQuovx48cTGh7BmGuu5fvvv68z85Vff/11NBSBsjHIP1JK4ROXSN6+X8g4lvuPj3c4HLz44ovEx8ezdfsuGo56mOCRU13aHAN4hzelwTXTcWDkot59Wbt+g0vrVdfRo0cZPnw4N9xwA/bAxkTf+AbWhKQz03ssTU7PqS7Iz6Vjt57sT5dNffQgI8hCCN04nU66dOnC3kNZhE98G2U06R1JnIWmaZQf3UX5rlUU7l6Ns6yY4LAIxl03lgnXX0+nTp08csfDgoICoqOjoUkXQoY/qHccj1B2aBsnPp3K3c++zWv/uvUvH7d7924mTJjAhg0b8G/Vi9DBt7m8Mf6jylNZZH/2CJQX893SJQzo27tW6/+Rpml8+OGH3HfffZSWlRPc53os8cNQ6uxjleXH08j+4jGsPr5sXLOKtm1a13LiOkVGkIUQnuPzzz8nNTWV4EvGSXPsxpRSWBq3I3DQHTS+Yy7ho6ZiD43l9dffJCEhgbjW7Zg+fTpHjhzRO2q1vP/++xQVFRGaKEu7nStz43YYLP58881/zvp1u93O888/T0JCAqk799Aw+WGCR/6r1ptjOL3yRoOx01E+gQwePIQly1fUeobfHDlyhKFDhzJx4kQcwU1odONbWBNG/GVzDGCOiqPBNc9SVmaja8+L+XWb+8+prktkBFkIoYuKigratGlDVimEjX/1b18ohHty2Aqx7V1D6c5V2I7sQilF4sW9uXniDVx++eX4+/vrHfEv2e12mjdvTr4xmLCrntU7jkfJXfwKtv3ryc7OJtT//6dF7dq1ixtuuIFNmzbh3/oiQgfdhmYN0jHpafbifHI+fxR7wQm+/OprRicNq7XamqYxe/Zs7r//fkrLKwjpOwFLp8uq9XxXkXuI7M8fwQuNn1euoHtX95tT7QFkBFkI4Rnef/99MjIyCO17vTTHHspoDcAvfigR175Aw5vfI/jisfyyYx8TJkwgLDyC0VeOYcmSJdjtdr2j/slXX33F4cOHCekho8fV5ROXiLOshJmfpgCnf9mYPn06CQkJbNudRsPR/yI4aYpbNMcAXn4hRFzzHF7BDblidDKffPlNrdQ9dOgQQ4YMYdKkSThDmtH4xrew/s2Uir/iHdbk9Jxq5cXFffqy+r/rXZRY/J6MIAshal1xcTEtWrSgxBJOyFXPeeT8VXF2mqZRcWwvZbtXUrjrZ5y2IgJDwrh27DVMuH48Xbp00f3/t6ZpdO/enZ0HTxA+4S35Ba2anJVlHHn9Wlr3SeKLVx9nwoQJ/PLLLwS0vYSQS29FswTqHfGsHLYicr54nIrsDN7/aC4Tr7vGJXU0TeODDz7g/vvvp6zCTnC/CVg6Drng77PKU1nkfP4oWlkRS5csZmC/PjWUuF6o9pOONMhCiFo3bdo0Hn30UZpOmAERLfWOI1xEc1Riy9hM2e5VFO9bj+aw0zQ2jpsmXM/VV19NbGysLrlWr15N7969iRx6J+YOQ3TJ4OmyFzxD+cFf8cKBwexLyKW3YYrrpXesf+QsLyHnyycoO76XN9/5gDsm3VCj5z906BCTJk1i+fLl+DXrRPjQe3D6RdTY+e2FuWR/PhVn8Um+TVnIsEEDa+zcdZw0yEII95aXl0fz5s3RotoRMuoRveOIWuIsK6Z07xpsu1ZReuj0zUbN41pxRfJIRo4cSY8ePTAaa2cXu+TkZJb+sJIGN3+AMllqpWZdU7LrJ3JTXsSvzSWED7oNpwdt8OOssJHz9VOUHd7Bi6+9xYN33XbB59Q0jffee48HH3yQskoHIf0mYO4w2CXvTpyZU30qiy+++prLRw6v8Rp1kDTIQgj39sADD/DKq6/S9Ka30IKi9Y4jdGAvOEHZ/vWUpW+i5OB2cDoICA5hxLBhjE4exaBBg1y2IUlaWhqtWrUiuNdV+F98nUtq1AeapmEvOIEpKFLvKOfFWVlG7jfTsGVu5cnnZ/D4Q/ed97kOHjzIpEmT+OGHH/BrnkD4ZXfj9AuvwbR/5igtIPuLx6jMPczH8z/luqsud2m9OkAaZCGE+zp06BBxcXFYWvcm+LJ79Y4j3ICzvARbxmYqMzdRlLYJZ1kxXiZvLu7dmytHJzNixIjTaxXXkDvvvJNZ77xL49tmg0/tLz0m3IdmryTn2+ew7d/Iv558lmcf/1e1jnc6nbz77rtMnjyZcruTkH4Tq0aNa2eOvaOs+PSc6hPpvDv7IyZdf22t1PVQ0iALIdzXxIkT+XjuPKJveQ/NL0zvOMLNaE4H5Ud2nW6W962nMv8YAK3atufK0aNISkqiS5cuGAzn97Z1fn4+0dHReLW4iODL7qnJ6MJDaY5KclNeonTvWu55+DFenf7UOR2XmZnJpEmT+PHHH0+PGg+9G6eva0eNz8ZZXkrOV09QdnQPr7/9HnfdMrHWM3gIaZCFEO5p165ddOjQgYCuSQT2m6R3HOEBKvOOUJ6xkdL9G7Ed3gWak5CwCEaNTGLUyCQGDBiAj8+5b0/+3HPPMXXqVJreNBNCmrgwufAkmtNB3pJXKdm5kpvvmcysV57/y1Fgp9PJrFmzeOihh6hwQmi/G/Fuf6muK7OcnlP9NGWHt/PCq28x+e4Ln1NdB0mDLIRwT6NGjWLpsh+IuvldcNNloIT7ctgKKcvYTEXGRor3/4Kzwoa32ULf/gO4Inkkw4cPJyoq6i+Pr6ioICYmhiKfKEKvOLdRQlF/aE4H+d+/RfG2ZVx30518/M7rf2p6MzIyuPHGG1m1ahV+sV0Iv+wunL7u8U6Ys7Kc3P88iy1jM0889zL/nnK/3pHcjTTIQgj3s27dOnr16kVon3H4JV6ldxzh4TRHJWWHd56eirF3PfaCEwB0iO/MFckjSUpKolOnTv/T4Hz88cdcf/31RI99BkN0vF7RhRvTNCcnf3iHoi2LuWLcJD7/8B0MBgNOp5OZM2fy8MMPY9cUIf0n4d1uoO7ref/R6TnV07Ht38DD/57G9Cem6h3JnUiDLIRwL5qm0bdvXzam7qDBpHfAZNU7kqhDNE2jMvcg5ekbse3fiO3YXtA0IqIakVw1FaNv37706NGD/SeKCLv+zyODQvxG0zROrZxN4aZvGHbldbwy7XFuuukmfvrpJ/xbdCXssrtw+oTqHfMvaQ571ZzqNdw1+RFef+EZvSO5C2mQhRDuZcmSJQwbNowGQ27D0mmY3nFEHecoOUlZxi+Up2+iOGMzWmU53mYLFeVlRI24D++2A/SOKNycpmkUrJ5HwbrPUUphsvgQMuBmvNv294hfrn4/p3rSXQ/w7msvekTumnb06FEWLVpESkoKixYtkgZZCOE+nE4nCQkJpB3NPb2lr9GkdyRRj2j2CsoObqMicyOVxacIHT4Z5SXfg+LcFG76D5VZaYQNuBHNJ0TvONWiaU7yv3uT4m3LGHvj7cx778063yRrmsbWrVtJSUkhJSWFzZs3A2AJiaLBTe89fWD6sMercz4vl6QUQgjg008/Zdu2bTRMfliaY1HrlJc31tiuWGO76h1FeKCAbqMAzxyNU8pAyJA7UV7efPLBTMrKbHz58fvnvUSiuyorK+PHH3883RQvWsTRI0dAKXwatyG8/wQssd1QwdEAzat7bmmQhRAuUVFRwWOPPYZvVAu84i7SO44QQtQrShkIHngLysubBfPnMKK8nIWffVxrW7q7yokTJ1i8eDEpKSksW7aM0tJSvMxWLDEJNEwag7FpZww+QRdcRxpkIYRLvPPOO2RmZhJ9zdMoVbdGLYQQwhMopQjqOwHlZWbJV58waGQZ3//nc7y8PKf90zSNHTt2nJk6sWHDBjRNwxwUgaV1P6JbJaIatkN5eddoXc/5FxJCeIyioiKefvpp/GI6omRJLSGE0I1SiqBLrkV5mfhx8cf0HTqKHxctwNu7ZhvKmlRRUcFPP/1ESkoKC1NSOHjgAAA+jVoR2vs6fFp0h9AYl86rlgZZCFHjXnnlFXJycogZ/i+0On5jiBBCeILAnmNQXt6sXf4+Fw0cxuplKVgsFr1jnZGXl8eSJUtISUnhu+++o6ioCKPJjCUmnqjhI/Fq2hmDX+0tsScNshCiRuXk5PDiiy/i37oXWkRLveMIIYSoEtBtFMrLm1+WzaR730Gs//G7am3XXpM0TWPv3r1npk6sXbsWp9OJOSAEc2wvolslQqMOGEz6NPHSIAshatS0adMoKS2laZ/xHnn3txBC1GX+CUNRRi+2L32DLhcP4NvPPqrVOcmHDh060xSnpaUBYI1sTnCvq/CN6wHhzd3ivhVpkIUQNebAgQO8/fbbBHQciBbUWO84QgghzsKv4yCUlzd7Fs2gVatWtV7f4GXC2rQTUZfdgVdMFwwBEbWe4Z9IgyyEqDH//ve/cWgQdPFYvaMIIYT4G75t++IV0hjyD1Obt4oYLH4YGrbDYNZnase5kgZZCFEjtm/fzty5cwnqMRp8w/SOI4QQ4h+YI1tAZAu9Y7gl/Sd5CCHqhKlTp2Ky+hKQeKXeUYQQQogLIg2yEOKCrVmzhkWLFhHQ/XIw++kdRwghhLgg0iALIS6IpmlMmTIFS0AoPp1H6B1HCCGEuGDSIAshLsiiRYtYu3YtgRddg9JpvUohhBCiJkmDLIQ4bw6Hg6lTp2INa4S53UC94wghhBA1QhpkIcR5OXXqFE899RQ7duwgpPc4lFEWxRFCCFE3yCuaEOKcVVRU8N133zF37lxSUlIoLy/Hr3lnjC166R1NCCGEqDHSIAsh/pamaWzYsIF58+bx2WefkZeXh7dfENYOg2nQoT+Ex6Jqc5V5IYQQwsWkQRZCnFVGRgbz5s1j3rx5pKWlYTSZ8YnrQfTA/qjoeJlSIYQQos6SVzghxBn5+fl88cUXzJs3j7Vr1wLgG9ORqBH3YortiTL76pxQCCGEcD1pkIWo58rLy1myZAlz585l8eLFVFRUYI1oSni/CVjb9Eb5h+sdUQghhKhV0iALUQ9pmsZ///tf5s6dyxdffMHJkycx+4fgEz+UyA4DIDRG5hULIYSot6RBFqIeSUtLOzOvOCMjA6O3GZ+4nkQPGYBq3BFlMOodUQghhNCdNMhC1HG5ubl8/vnnzJ07lw0bNoBS+MbE03DkAxib9cBg9tE7ohBCCOFWpEEWog4qKysjJSWFuXPnsnTpUux2Oz6RzQkfeCPWVpeg/ML0jiiEEEK4LWmQRb2gaRp79+7FbrfTrl27Ojm/1m63s2bNGubPn8+XX35JQUEB5sAw/LuOJKB9fwhtqndEIYQQwiNIgyzqrMrKSlavXk1KSgoLFy4kIyMDgMhG0SSPTGLUyCT69OmD2WzWOen5Kygo4LvvviMlJYXFS5Zw6uRJvMxWfFr2oknHAdCwncwrFkIIIapJaZqmd4bz5bHBheucPHmSpUuXkpKSwpKlSyksKMBo8sbSpCMBrRKxa4qy9I0UZ6Si2cux+voxaNAgRo8aydChQwkLc/+pBxkZGaSkpJCSksJPP/2E3W7H2y8Ic7OuBLbugWqcgMHbondMIYQQwl3MPzB92HXVOUAaZOHx0tLSzowSr1mzBofDgbd/cFXDmIhq1BGDt/V/jnFWllF28FcqMzZRlLYRR3E+ymCgS7ceXDl6FElJSbRq1cotpmI4HA42btzIwoULSUlJYefOnQBYI5piie2OX8vuqIiWMlIshBBCnJ00yKLus9vtrFu37swo6p49ewCwNojBGtsd35aJqIgWKGU4p/NpmpOKrHQqMjZSkraB8hOnp2I0btqMy0eNZNSokVx00UWYTCaXXdMfFRcXs3z5chYuXMiixYvJzcnBYDRije6AX8vumJt3RwVG1loeIYQQwoNJgyzqpsLCQr7//ntSUlJYtHgxJ/PzMRi9sDbpgH+rHphiumKooYbRXphNWfomytM3UXIgFc1hx9c/kMsuG8LlyaMYMmQIQUFBNVLr9w4fPsyiRYtYuHAhK1eupLy8HJPVH0vzLgS2SkRFx2Ow+NV4XSGEEKKOkwZZ1B0HDhw4M0q8atUqKisrMfkGYGnWhcDWPVGN412+hq+zwkbZga1UZGyiOG0jjtICjEYvevTsxZWXJzNixAhiY2PP79xOJ1u2bDkzPSQ1NRUAS2gjLC264x+XiIpshTLKvbRCCCHEBdCnQVZKBQHvA+053bhOBAYDNwE5VQ+bqmnakgsu9v+kQa5jnE4nGzduPNMUb9++HQBreHTVXNseqAatdJtrqzkdlB/bR2XmRorTNlKRcxCAZi1acsXoUYxMSiIxMRGj8a/z2Ww2VqxYcbopTkkh6/hxlDJgjW6DX1wi5thuqKBGbjH3WQghhKgjdGuQPwJWa5r2vlLKG/AB7gWKNU176W+OewI4oGnah+dRVhrkOqCkpITly5efmTqRfeIEymDEGt0W/7geeDfvjiG4od4xz6ryVBbl6RsoS99EycHt4HQQEBzCiGHDSB41kkGDBuHv709WVhaLFi0iJSWF5cuXY7PZ8LL4YInpTGDrRAzRCRh8AvW+HCGEEKKuqnaDfMHv3SqlAoHewA0AmqZVABWuHgGLapfo0vML13NUVpCXuROnvQKD2RdLs86Edx+HuVkXjFZ/veP9I1NQJKYuI/HrMpKQ8hJsGZuxpW/k06++Yf68uSijCb/wRhRlHQDAKzACa5sBRMb1wDu6PcpYezf9CSGEEOLc1cTkxmacnkYxRynVCdgM3FP1tTuVUuOBX4AHNE07WQP1AMg/eaqmTiV0opTCt9MQrHE9sDRu59FzbQ1mX3zb9Ma3Te/TUzGO7saWtoGKnAMEXXIJ1rgemMKaytQJIYQQovblVveAC55ioZTqCqwHLtI0bYNS6jWgEHizKpAGPA1EaZo2USnVAZhbdXgkUAHkV/19gKZpeedSt8Lu1GyVjgvKLvRnMioM0jQKIYQQwkVaP/ad8cD0Yc7qHFMTDXIksF7TtJiqv18CTNE0bdjvHhMDLNI0rf0fjn0CmYMshBBCCCFcp9ojcee2k8Lf0DQtCzislGpV9akBwC6lVNTvHpYM7LjQWkIIIYQQQrhaTU36vAuYX7WCRQYwAXhdKRXP6ZHeA8AtNVRLCCGEEEIIl5GNQoQQQgghRF1W+1MshBBCCCGEqEs8tkFWSt3C6d8Iau1Pbdes6/XqwzXKv6nn15NrlHqeUrOu15NrlHoXUPNmqsljG2Sg2hfrgTXrej09atb1enrUrOv19Kgp1+j59fSoWdfr6VFTrrJe8AUAAAhuSURBVNHz651XTU9ukIUQQgghhKhx0iALIYQQQgjxO57cIL9bD2rW9Xp61Kzr9fSoWdfr6VFTrtHz6+lRs67X06OmXKPn1zuvmp68zJsQQgghhBA1zpNHkIUQQgghhKhxHtkgK6WGKKX2KqX2K6Wm1EK92UqpbKWUy7fLVkpFK6VWKqV2KaV2KqXuqYWaFqXURqXUr1U1n3R1zaq6RqXUVqXUolqqd0AptV0plaqU+qUW6gUppb5SSu1RSu1WSvV0Ya1WVdf1259CpdS9rqr3u7r3VX3P7FBKfaqUsri43j1VtXa66vrO9vOulApRSi1XSqVV/TfYxfWurLpGp1Kqa03V+pt6L1Z9n25TSn2jlAqqhZpPV9VLVUotU0o1dGW9333tAaWUppQKc2U9pdQTSqmjv/uZHFpT9f6qZtXn76r6f7lTKfWCK+sppT7/3fUdUEql1lS9v6kZr5Ra/9vzuFKqu4vrdVJKrat67UhRSgXUYL2zvt676vnmb+q58vnmr2q65Dnnb+pV//lG0zSP+gMYgXSgOeAN/Aq0dXHN3kBnYEctXF8U0LnqY39gXy1cnwL8qj42ARuAxFq41vuBT4BFtfS9cwAIq41aVfU+AiZVfewNBNVSXSOQBTR1cZ1GQCZgrfr7F8ANLqzXHtgB+ABewA9ACxfU+dPPO/ACMKXq4ynA8y6u1wZoBawCutbC9Q0CvKo+fr4mr+9vagb87uO7gVmurFf1+Wjge+BgTT4X/MX1PQE8WJP/judQs1/Vz4W56u//1965hVhVhmH4+cqCnEJK0qwpFNEIIjRJojyEVqiFllEUBoXdZAXpRYEZQkQgpNVdQVlBmp00s4tq7GTdZKZlaZpZmY7paOeD4PHt4v93rabZWyfWt6ap74HNXntmmGfWmr3f//tPe/fxvqaF788DZldwji3A+Hw8AXjb2bcKGJ2PpwL3lujrsL33ypsGPs+8qed0yZwGvk7nTXccQR4ObJb0paR9wDPAJE+hpHeA7z0dBdcOSWvy8S/ABlIh4umUpF/zw2PyzXVxupk1A5cBj3l6ugoz60UK2/kAkvZJ+rEi/VjgC0lfV+DqARxnZj1Ihes3jq6zgJWS9kg6AKwAJpctqfN6n0Tq8JDvr/D0Sdog6bOyHEfga8nXFOA9oLkC58+Fh02UmDkNMvtB4M4yXYfxuVHHOQ2YI2lv/pldzj4gfQoDcA2wqCxfA6eA2ihuL0rMnDq+wcA7+Xg5cFWJvnrtvUve1PM55009p0vmNPB1Om+6Y4F8GrCt8LgV5wKyqzCz/sBQ0oiut+voPD22C1guydv5EKmhOuTsKSKgxcxW2z/4VJ1OMgDYDTxhaRnJY2bW5OyscS0lN1QdIWk7MBfYCuwAfpLU4qhcB4w0s95m1pM0enS6o69IX0k78vFOoG9F3q5gKvBKFSIzu8/MtgFTgNnOrknAdklrPT3tuC1P6z5e5rKcBgwmvUZWmtkKMzuvAifASKBN0ucVuKYD9+fnzVxgprNvPX8Owl2NU+a0a+/d86bK+uIInC6Z097X2bzpjgXy/wIzOx5YDExv1/NxQdJBSUNIvbjhZna2l8vMLgd2SVrt5ajDCEnnAuOBW81slKOrB2mq7mFJQ4HfSFNlrpjZscBE4PkKXCeSGo4BwKlAk5ld7+WTtIE0FdcCvAp8BBz08jX4O4TzDEtXYWazgAPAwip8kmZJOj37bvPy5A7VXTgX4e14GBgIDCF1IOdV4OwBnAScD9wBPJdHd725jgo65ZlpwIz8vJlBnqVzZCpwi5mtJk3Z7ytb0Ki998ibquuLRk6vzOnI19m86Y4F8nb+2oNrzl/7z2Bmx5D+sQslLanSnZcBvAWMc9RcCEw0sy2kJTJjzGyBow/4Y8SzNu34Imm5jhetQGthJP4FUsHszXhgjaS2ClwXA19J2i1pP7AEuMBTKGm+pGGSRgE/kNaXVUGbmfUDyPelTV3/WzCzG4HLgSm5Ua6ShZQ4dd0BA0kdubU5d5qBNWZ2ipdQUlseeDgEPIpv3tRoBZbkZXPvk2boStuM2BF5edVk4FlPT4EbSFkDaSDA9bpK2ijpUknDSJ2AL8r8/XXae7e86Yr6op7TK3OO4ByPKG+6Y4G8ChhkZgPyaNm1wLIu/ptKI/f25wMbJD1QkfPk2g5SMzsOuATY6OWTNFNSs6T+pP/fm5LcRh4BzKzJzE6oHZM2CLi9K4mkncA2Mzszf2ks8KmXr0CVIzlbgfPNrGd+3o4lrfdyw8z65PszSI3y056+AstIDTP5/qWKvJVgZuNIS54mStpTkXNQ4eEkfDPnE0l9JPXPudNK2siz08tZK3AyV+KYNwWWkjbqYWaDSZuDv3V2XgxslNTq7KnxDTA6H48BXJd1FDLnKOBu4JESf3e99t4lb7qovujQ6ZU5DXydzxuVsGuw6htp7eEmUk9uVgW+RaQpsv2kYL3J0TWCNJ3yMWkK+SNggvP5nQN8mJ3rKHkn8mHcF1HBu1iQ3vVkbb6tr+h5MwT4IF/XpcCJzr4m4DugV4X/v3ty0KwDniLvnnf0vUvqaKwFxjo5/vZ6B3oDb5Aa49eBk5x9V+bjvUAb8JqzbzNpb0ctc0p7R4kGzsX5efMx8DJpI42br933t1Duu1h0dH5PAZ/k81sG9Kvgmh4LLMjXdQ0wxvuaAk8CN5d5boc5xxHA6pwBK4Fhzr7bSfXGJmAO+QPWSvJ12N575U0Dn2fe1HO6ZE4DX6fzJj5JLwiCIAiCIAgKdMclFkEQBEEQBEHgRhTIQRAEQRAEQVAgCuQgCIIgCIIgKBAFchAEQRAEQRAUiAI5CIIgCIIgCApEgRwEQRAEQRAEBaJADoIgCIIgCIICUSAHQRAEQRAEQYHfASc21mIDBRCFAAAAAElFTkSuQmCC" /></div>
</div>
<div class="nb-cell nb-markdown-cell">
<p>Much better in my opinion.</p>
<p>So, what does this joy plot tell us?</p>
<ul>
<li>Most transactions are made between 8 AM and 10 PM, almost no one buys between 2 AM and 6 AM.</li>
<li>Older (65+) people don&#8217;t buy after 11 PM while the youngest bracket (18-24) continues buying until 3 AM.</li>
</ul>
<p>While I agree that this plot didn&#8217;t teach us something extremely interesting or new, it is a good example of what&#8217;s possible with a few lines of code and Jupyter Notebook (or any other similar tool).</p>
<h2>Working with raw hit-level Google Analytics data</h2>
<p>While connecting Jupyter Notebooks directly to your Google Analytics view is enough for many use cases, having access to raw hit-level Google Analytics data opens completely new opportunities for more advanced analysis.</p>
<p>To gain access to raw hit-level Google Analytics, one can use a tool like <a href="http://reflectivedata.com/analytics-data-pipeline/">Marketing Data Pipeline</a> to send data into BigQuery. Python has a library for connecting to BigQuery which makes it easy to explore and visualize based on raw data and metrics calculated based on your own criteria.</p>
<p>Besides other use cases, having access to raw hit-level data enables you to get a complete overview of the user journey, calculate metrics like LTV and use your own models for marketing channel attribution (Markov, ML-based, FPA etc.).</p>
<p><a href="http://reflectivedata.com/why-every-business-needs-a-marketing-data-warehouse-and-how-to-set-one-up/">Learn more about the benefits of having a marketing data warehouse.</a></p>
<h2 id="conclusion">Conclusion</h2>
<p>Combining powerful tools like Google Analytics, Python and Jupyter Notebooks gives you the flexibility and options you probably didn&#8217;t even dream about. The first time I got to play around with these three together made me feel like a little child, like I had discovered something really-really cool (and it is).</p>
<p>I hope this was enough to get you excited and that you will now go and try doing it on your own. And as always, your comments, questions and suggestions are welcome in the comments below.</p>
</div>
</div>
</div>
</div>
<p>The post <a href="https://www.reflectivedata.com/working-with-google-analytics-data-using-python-and-jupyter-notebooks">Working with Google Analytics Data Using Python and Jupyter Notebooks</a> appeared first on <a href="https://www.reflectivedata.com">Reflective Data</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.reflectivedata.com/working-with-google-analytics-data-using-python-and-jupyter-notebooks/feed/</wfw:commentRss>
			<slash:comments>11</slash:comments>
		
		
			</item>
		<item>
		<title>Jupyter Notebooks in WordPress</title>
		<link>https://www.reflectivedata.com/jupyter-notebooks-in-wordpress/</link>
					<comments>https://www.reflectivedata.com/jupyter-notebooks-in-wordpress/#comments</comments>
		
		<dc:creator><![CDATA[Silver Ringvee]]></dc:creator>
		<pubDate>Sat, 12 Oct 2019 20:48:25 +0000</pubDate>
				<category><![CDATA[Jupyter Notebook]]></category>
		<category><![CDATA[Technical]]></category>
		<category><![CDATA[notebook]]></category>
		<guid isPermaLink="false">http://reflectivedata.com/?p=3562</guid>

					<description><![CDATA[<p>While it might look like a normal WordPress blog post (like all the previous posts on our blog), you are actually looking at a Jupyter Notebook.</p>
<p>In this first proof-of-concept blog post/Notebook, we are showing you how Notebooks work and a few cool things you can accomplish with them.</p>
<p>The post <a href="https://www.reflectivedata.com/jupyter-notebooks-in-wordpress/">Jupyter Notebooks in WordPress</a> appeared first on <a href="https://www.reflectivedata.com">Reflective Data</a>.</p>
]]></description>
										<content:encoded><![CDATA[<div class="notebook-container show-input-blocks">
<div class="nb-notebook">
<div class="nb-worksheet">
<div class="nb-cell nb-markdown-cell">
<p>While it might look like a normal WordPress blog post (like all the previous posts on our blog), you are actually looking at a Jupyter Notebook.</p>
<p>If you are not familiar with <a href="https://jupyter.org/">Jupyter Notebooks</a> then here&#8217;s what you need to know about them:</p>
<blockquote>
<p>The Jupyter Notebook is an open-source web application that allows you to create and share documents that contain live code, equations, visualizations and narrative text. Uses include: data cleaning and transformation, numerical simulation, statistical modelling, data visualization, machine learning, and much more.</p>
</blockquote>
<p>In this first proof-of-concept blog post/Notebook, we are showing you how Notebooks work and a few cool things you can accomplish with them.</p>
<h2 id="why-are-we-doing-this">Why are we doing this?</h2>
<p>The reason we are testing with &#8220;blogging using a Jupyter Notebook&#8221; is that it allows us to share our code example and analysis done in Python more easily and in a more repeatable way.</p>
<p>At Reflective Data, we are using a lot of Python in all steps of data analysis. Jupyter Notebooks is a tool we use to run and share our code both internally and with our clients. Why not leverage the same workflow in our blogging efforts as well, we thought.</p>
<p>Our plan is to create a series of useful tutorial-type blog posts where we show you how to use Python (and Notebooks) in your everyday work as a digital analyst. We are going to pull data from Google Analytics, testing tools and databases, then run all sorts of analysis and visualizations using this data (and Notebooks).</p>
<h2 id="how-are-we-doing-this">How are we doing this?</h2>
<p>Since sharing Notebooks is all about repeatability, we thought it will be wise to also share how we managed to turn Notebooks into a WordPress blog post.</p>
<p>While you can host and run <a href="https://jupyter.org/">Jupyter Notebooks</a> both locally or on the cloud, we&#8217;ve found <a href="https://colab.research.google.com/">Colaboratory</a> by Google to be the best solution when it comes to (as the name suggests) collaborative coding. That&#8217;s why we are mostly using Colab when working with Notebooks.</p>
<h3 id="turning-a-notebook-into-html">Turning a Notebook into HTML</h3>
<p>The first step in the process of sharing your Notebook on WordPress would be turning your Notebook from <code>ipynb</code> format into HTML.</p>
<p>The hosted version of Jupyter Notebooks comes with a handy &#8220;Download as HTML&#8221; option built-in. Colab, unfortunately, doesn&#8217;t have this feature. So, we found a workaround which also allowed us to semi-automate the whole process.</p>
<p>We are using <a href="https://developers.google.com/drive/api/v3/reference">Google Drive&#8217;s API</a> to load the <code>ipynb</code> file from Drive (Colab hosts Notebooks on your Drive) and then using <a href="https://github.com/jsvine/nbpreview">nbpreview</a> to turn it to HTML. We haven&#8217;t yet done so, but the plan is to build a WordPress plugin that would take a Colab Notebook&#8217;s ID and then automatically turn it into HTML.</p>
<h3 id="teaching-wordpress-how-to-render-a-notebook">Teaching WordPress how to render a Notebook</h3>
<p>Currently, we simply paste the HTML version of the Notebook into WordPress blog post using a text-edit-mode. This will soon be handled by the plugin we mentioned in the previous step.</p>
<p>Everey blog post that contains a Notebook will receive a tag &#8220;notebook&#8221;. Using this tag we can then tell WordPress to load some extra CSS to properly render the Notebook.</p>
<p>We are currently doing this in a few lines of code in our <code>functions.php</code> file.</p>
<pre><code>add_action('wp_head', 'load_notebook_styles');
function load_notebook_styles() {
    if ( has_tag( 'notebook' ) ) {
        wp_enqueue_style( 'notebook-css', get_template_directory_uri() . '/notebooks/notebook.css' );
        wp_enqueue_style( 'notebook-prism-css', get_template_directory_uri() . '/notebooks/prism.css' );
    }
}</code></pre>
<p>Here are the CSS files we load:</p>
<ul>
<li><a href="http://reflectivedata.com/wp-content/themes/reflective-data/notebooks/notebook.css">notebooks.css</a></li>
<li><a href="http://reflectivedata.com/wp-content/themes/reflective-data/notebooks/prism.css">prism.css</a></li>
</ul>
<h2 id="whats-possible-with-notebooks">What&#8217;s possible with Notebooks?</h2>
<p>So, now that you have at least a basic knowledge of what a Notebook is and how we managed to turn them into WordPress blog posts, let&#8217;s see what you could actually accomplish with them.</p>
<p>Them main thing, of course, is that you can run Python code and immediately see the output.</p>
<p>Here&#8217;s a very basic example:</p>
</div>
<div class="nb-cell nb-code-cell">
<div class="nb-input" data-prompt-number="1">
<pre class=" language-python"><code class=" language-python" data-language="python">x <span class="token operator">=</span> <span class="token number">5</span>
<span class="token keyword">for</span> i <span class="token keyword">in</span> <span class="token builtin">range</span><span class="token punctuation">(</span>x<span class="token punctuation">)</span><span class="token punctuation">:</span>
  <span class="token keyword">print</span><span class="token punctuation">(</span>i <span class="token operator">*</span> <span class="token string">'*'</span><span class="token punctuation">)</span></code></pre>
</div>
<div class="nb-output" data-prompt-number="1">
<pre class="nb-stdout">*
**
***
****
</pre>
</div>
</div>
<div class="nb-cell nb-markdown-cell">
<p>Awesome, right?</p>
<p>Now, the only limits you really have are your creativity and Python skills. In the upcoming blog posts, our goal is to get you better at both by showing some cool and useful things we are doing using Python and Jupyter Notebooks.</p>
<p>While the first Python script was quite useless, let&#8217;s try and load in some real data from Google Analytics.</p>
<p>First, let&#8217;s import our required dependencies.</p>
</div>
<div class="nb-cell nb-code-cell">
<div class="nb-input" data-prompt-number="0">
<pre class=" language-python"><code class=" language-python" data-language="python"><span class="token keyword">import</span> pandas <span class="token keyword">as</span> pd
<span class="token keyword">import</span> json
<span class="token keyword">import</span> requests</code></pre>
</div>
</div>
<div class="nb-cell nb-markdown-cell">
<p>There are many ways you can pull data from Google Analytics but one of the simplest is by using the API Query URI that you can grab from the <a href="https://ga-dev-tools.appspot.com/query-explorer/">Query Explorer</a>.</p>
<p>In this example, we are loading the number of Sessions and Users per day for the last 30 days.</p>
</div>
<div class="nb-cell nb-code-cell">
<div class="nb-input" data-prompt-number="3">
<pre class=" language-python"><code class=" language-python" data-language="python"><span class="token keyword">from</span> getpass <span class="token keyword">import</span> getpass <span class="token comment"># required only for hiding your variables</span>

api_query_uri <span class="token operator">=</span> getpass<span class="token punctuation">(</span><span class="token string">'Enter API Query URI here'</span><span class="token punctuation">)</span> <span class="token comment"># get the URI</span>
r <span class="token operator">=</span> requests<span class="token punctuation">.</span>get<span class="token punctuation">(</span>api_query_uri<span class="token punctuation">)</span> <span class="token comment"># make the request</span>
data<span class="token operator">=</span> r<span class="token punctuation">.</span>json<span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token comment"># read data from a JSON format</span>
df <span class="token operator">=</span> pd<span class="token punctuation">.</span>DataFrame<span class="token punctuation">(</span>data<span class="token punctuation">[</span><span class="token string">'rows'</span><span class="token punctuation">]</span><span class="token punctuation">)</span> <span class="token comment"># turn data into a Pandas data frame</span>
df <span class="token operator">=</span> df<span class="token punctuation">.</span>rename<span class="token punctuation">(</span>columns<span class="token operator">=</span><span class="token punctuation">{</span><span class="token number">0</span><span class="token punctuation">:</span> <span class="token string">'Date'</span><span class="token punctuation">,</span> <span class="token number">1</span><span class="token punctuation">:</span> <span class="token string">'Sessions'</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">:</span> <span class="token string">'Users'</span><span class="token punctuation">}</span><span class="token punctuation">)</span> <span class="token comment"># giving the columns some proper titles</span>
df<span class="token punctuation">[</span><span class="token string">'Sessions'</span><span class="token punctuation">]</span> <span class="token operator">=</span> df<span class="token punctuation">[</span><span class="token string">'Sessions'</span><span class="token punctuation">]</span><span class="token punctuation">.</span>astype<span class="token punctuation">(</span><span class="token builtin">int</span><span class="token punctuation">)</span> <span class="token comment"># formatting sessions as ints</span>
df<span class="token punctuation">[</span><span class="token string">'Users'</span><span class="token punctuation">]</span> <span class="token operator">=</span> df<span class="token punctuation">[</span><span class="token string">'Users'</span><span class="token punctuation">]</span><span class="token punctuation">.</span>astype<span class="token punctuation">(</span><span class="token builtin">int</span><span class="token punctuation">)</span> <span class="token comment"># formatting users as ints</span>
df<span class="token punctuation">[</span><span class="token string">'Date'</span><span class="token punctuation">]</span> <span class="token operator">=</span> pd<span class="token punctuation">.</span>to_datetime<span class="token punctuation">(</span>df<span class="token punctuation">[</span><span class="token string">'Date'</span><span class="token punctuation">]</span><span class="token punctuation">)</span>

df<span class="token punctuation">.</span>head<span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token comment"># printing the first five rows</span></code></pre>
</div>
<div class="nb-output" data-prompt-number="3">
<pre class="nb-stdout">Enter API Query URI here··········
</pre>
</div>
<div class="nb-output" data-prompt-number="3">
<div class="nb-html-output">
<div>
<style scoped="">
    .dataframe tbody tr th:only-of-type {
        vertical-align: middle;
    }</p>
<p>    .dataframe tbody tr th {
        vertical-align: top;
    }</p>
<p>    .dataframe thead th {
        text-align: right;
    }
</style>
<table border="1" class="dataframe">
<thead>
<tr style="text-align: right;">
<th></th>
<th>Date</th>
<th>Sessions</th>
<th>Users</th>
</tr>
</thead>
<tbody>
<tr>
<th>0</th>
<td>2019-09-12</td>
<td>50526</td>
<td>58667</td>
</tr>
<tr>
<th>1</th>
<td>2019-09-13</td>
<td>53919</td>
<td>63156</td>
</tr>
<tr>
<th>2</th>
<td>2019-09-14</td>
<td>58735</td>
<td>68200</td>
</tr>
<tr>
<th>3</th>
<td>2019-09-15</td>
<td>67371</td>
<td>77597</td>
</tr>
<tr>
<th>4</th>
<td>2019-09-16</td>
<td>65780</td>
<td>77305</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
<div class="nb-cell nb-markdown-cell">
<p>Great, so our data is now loaded and formatted for our needs.</p>
<p>Let&#8217;s go ahead and try visualizing it. For timeseries data, a line chart should work well.</p>
</div>
<div class="nb-cell nb-code-cell">
<div class="nb-input" data-prompt-number="4">
<pre class=" language-python"><code class=" language-python" data-language="python">df<span class="token punctuation">.</span>plot<span class="token punctuation">.</span>line<span class="token punctuation">(</span>x<span class="token operator">=</span><span class="token string">'Date'</span><span class="token punctuation">,</span> y<span class="token operator">=</span><span class="token punctuation">[</span><span class="token string">'Sessions'</span><span class="token punctuation">,</span> <span class="token string">'Users'</span><span class="token punctuation">]</span><span class="token punctuation">,</span> ylim<span class="token operator">=</span><span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">,</span><span class="token boolean">None</span><span class="token punctuation">]</span><span class="token punctuation">,</span> figsize<span class="token operator">=</span><span class="token punctuation">[</span><span class="token number">10</span><span class="token punctuation">,</span> <span class="token number">6</span><span class="token punctuation">]</span><span class="token punctuation">)</span></code></pre>
</div>
<div class="nb-output" data-prompt-number="4">
<pre class="nb-text-output">&lt;matplotlib.axes._subplots.AxesSubplot at 0x7fc6a53c3278&gt;</pre>
</div>
<div class="nb-output" data-prompt-number="4"><img decoding="async" class="nb-image-output" src="data:image/png;base64,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AJYApcB1zrkyADMbC0wGIoFnnXOLa3wFIiIiIgFlZrRPjK35/rVdXDMosrOzXU5OTri7ISIiIlItM5vjnMuubj/N/C8iIiISEApmIiIiIgGhYCYiIiISEApmIiIiIgGhYCYiIiISEApmIiIiIgGhYCYiIiISEApmIiIiIgGhYCYiIiISEApmIiIiIgGhYCYiIiISEApmIiIiIgGhYCYiIiISEApmIiIiIgGhYCYiIiISEApmIiIiIgGhYCYiIiISEApmIiIiIgGhYCYiIiISEApmIiIiIgGhYCYiIiISEApmIiIiIgGhYCYiIiISEApmIiIiIgGhYCYiIiISEApmIiIiIgGhYCYiIiISEApmIiIiIgGhYCYiIiISEApmIiIiIgGhYCYiIiISEApmIiIiIgFRbTAzs85mNs3MlpjZYjO70W9PNrMpZrbC/97GbzczG29muWa2wMwGVzrXGH//FWY2plL7EDNb6B8z3sysIS5WREREJMhqcsesFLjFOdcPGAZcZ2b9gDuAqc65XsBU/z3AmUAv/+ta4HHwghxwN3AsMBS4uyLM+ftcU+m4M+p/aSIiIiJNS7XBzDm3wTn3lf96B7AU6AicC7zg7/YCcJ7/+lzgReeZCSSZWTpwOjDFOZfvnNsGTAHO8Le1ds7NdM454MVK5xIRERE5YtSqxszMugFZwCygnXNug79pI9DOf90RWFPpsLV+2+Ha11bRXtXnX2tmOWaWs2XLltp0XURERCTwahzMzKwV8BZwk3Nue+Vt/p0uF+K+HcQ596RzLts5l52WltbQHyciIiLSqGoUzMysBV4oe9k597bfvMl/DIn/fbPfvg7oXOnwTn7b4do7VdEuIiIickSpyahMA54BljrnHqi0aSJQMbJyDPBupfYr/dGZw4BC/5HnZOA0M2vjF/2fBkz2t203s2H+Z11Z6VwiIiIiR4yoGuxzPPBjYKGZzfPb7gLuBd4ws6uBb4GL/W0fACOBXKAI+CmAcy7fzP4EzPb3+1/nXL7/+pfA80AcMMn/EhERETmimFce1vRkZ2e7nJyccHdDREREpFpmNsc5l13dfpr5X0RERCQgFMxEREREAkLBTERERCQgFMxEREREAkLBTERERCQgFMxEREREAkLBTERERCQgFMxEREREAkLBTERERCQgFMxEREREAkLBTERERCQgFMxEREREAkLB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b74Lr87sDbzFy78FLnbO5ZtZeyAHaO3vvxPo5z/+nA6k4A0MuNk5N7VRL0akCVMwExEREQkIPcoUERERCQgFMxEREZGAUDATERERCQgFMxEREZGAUDATERERCQgFMxFp9syszMzmmdliM5tvZreY2WF//plZNzO7rLH6KCICCmYicmQods5lOuf6Az8EzgTuruaYboCCmYg0Ks1jJiLNnpntdM61qvQ+A5gNpAJdgZeAlv7msc65GWY2EzgKWAW8AIwH7gVOBmKAR51z/2i0ixCRI4KCmYg0ewcGM7+tAOgD7ADKnXMlZtYLeNU5l21mJwO3OufO8ve/FmjrnLvHzGKAz4GLnHOrGvViRKRZiwp3B0REwqwF8IiZZQJlQO9D7HcacLSZXei/TwR64d1RExEJCQUzETni+I8yy4DNeLVmm4BBeHW3JYc6DLjeOTe5UTopIkckFf+LyBHFzNKAJ4BHnFfLkQhscM6VAz8GIv1ddwAJlQ6dDPzCzFr45+ltZi0REQkh3TETkSNBnJnNw3tsWYpX7P+Av+0x4C0zuxL4ENjlty8AysxsPvA8MA5vpOZXZmbAFuC8xroAETkyqPhfREREJCD0KFNEREQkIBTMRERERAJCwUxEREQkIBTMRERERAJCwUxEREQkIBTMRERERAJCwUxEREQkIBTMRERERALi/wP+gX9RAv/krQAAAABJRU5ErkJggg=="></div>
</div>
<div class="nb-cell nb-markdown-cell">
<p>That was simple, right?</p>
<p>There is so much more you can do with Python and Jupyter Notebooks and we are going to cover more advanced stuff in our upcoming blog posts.</p>
<p>I&#8217;d like to end this post with a few thoughts I got while writing this one.</p>
<ol>
<li>Writing a blog post using <a href="https://en.wikipedia.org/wiki/Markdown">Markdown</a> is fun (and effective). I know some people are doing it but this is the first time for me. Markdown is the way you write text in Notebooks.</li>
<li>While I thought so before, now I know for sure that Notebooks + WordPress is a really good solution for sharing Python code examples and data visualizations online.</li>
<li>I&#8217;d love to hear your thoughts, ideas, questions and topic suggestions in the comments below! We are happy to respond/help.</li>
</ol>
<p><strong>PS! More Notebooks-related content is coming soon! Consider subscribing to our newsletter.</strong></p>
</div>
</div>
</div>
</div>
<p>The post <a href="https://www.reflectivedata.com/jupyter-notebooks-in-wordpress/">Jupyter Notebooks in WordPress</a> appeared first on <a href="https://www.reflectivedata.com">Reflective Data</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.reflectivedata.com/jupyter-notebooks-in-wordpress/feed/</wfw:commentRss>
			<slash:comments>23</slash:comments>
		
		
			</item>
		<item>
		<title>Data You Should Be Tracking Using Google Analytics Custom Events</title>
		<link>https://www.reflectivedata.com/data-you-should-be-tracking-using-google-analytics-custom-events/</link>
					<comments>https://www.reflectivedata.com/data-you-should-be-tracking-using-google-analytics-custom-events/#comments</comments>
		
		<dc:creator><![CDATA[Silver Ringvee]]></dc:creator>
		<pubDate>Thu, 26 Sep 2019 09:59:41 +0000</pubDate>
				<category><![CDATA[Google Analytics]]></category>
		<category><![CDATA[Google Optimize]]></category>
		<category><![CDATA[Google Tag Manager]]></category>
		<category><![CDATA[Technical]]></category>
		<category><![CDATA[Tools]]></category>
		<guid isPermaLink="false">http://reflectivedata.com/?p=3487</guid>

					<description><![CDATA[<p>Out of the box, Google Analytics already tracks a bunch of really useful data points. What the default setup lacks, though, is context and events that are specific to your website and business.</p>
<p>Custom Events provide a perfect solution for adding context and tracking more specific user actions. In this article, we are giving you a good amount of ideas for custom events you should implement on your own and/or your clients' websites.</p>
<p>The post <a href="https://www.reflectivedata.com/data-you-should-be-tracking-using-google-analytics-custom-events/">Data You Should Be Tracking Using Google Analytics Custom Events</a> appeared first on <a href="https://www.reflectivedata.com">Reflective Data</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Out of the box, Google Analytics already tracks a bunch of really useful data points. What the default setup lacks, though, is context and events that are specific to your website and business.</p>
<p>Custom Events provide a perfect solution for adding context and tracking more specific user actions. In this article, we are giving you a good amount of ideas for custom events you should implement on your own and/or your clients&#8217; websites.</p>
<p>This post is divided into sections by different event categories so you could skip the ones that are not relevant for you.</p>
<h2>Clicks</h2>
<p>For almost all websites, the most common user interaction is a click. By default, Google Analytics isn&#8217;t very good at tracking them. Let&#8217;s see how we could improve this situation.</p>
<h4>Navigation clicks</h4>
<p>Tracking usage of the main menu, sidebar and other navigation elements is critical. This is how your visitors explore your business and move in the funnel.</p>
<p>Detecting navigation interactions is <a href="https://dcarlbom.com/google-tag-manager/track-main-menu-usage-site-gtm/" target="_blank" rel="noopener noreferrer">easy with Google Tag Manager</a> and sending data to Google Analytics works as with any other event.</p>
<p>Since there may be several navigation elements containing links to the same page, it is important to also pass the information about which navigation was used. For example, you might a have link to your blog both in the header and in the footer.</p>
<p>Recommended event parameters:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="null">category: click
action: top-navigation, sidebar etc.
label: link text
non-interaction: false</pre>
<h4>CTA clicks</h4>
<p>Tracking clicks on all of your CTAs (call to actions) is extremely important if you have more than one CTA on a single page pointing to the same location (i.e. long-form sales pages).</p>
<p>Don&#8217;t forget that buttons like &#8220;Get a Quote&#8221;, &#8220;Add to Cart&#8221; and &#8220;Checkout&#8221; are also CTAs.</p>
<p>Setup is the same as with <a href="https://www.lovesdata.com/blog/google-tag-manager-button-click-tracking" target="_blank" rel="noopener noreferrer">generic click tracking using GTM</a>.</p>
<p>Recommended event parameters:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="null">category: click
action: CTA
label: text (and index the same CTA appears multiple times)
non-interaction: false</pre>
<h4>Outbound link clicks</h4>
<p>Also known as tracking website exits, this custom event tells you exactly to which external pages people navigate from your site.</p>
<p>Again, <a href="https://netvantagemarketing.com/blog/tracking-website-exits-using-google-tag-manager/" target="_blank" rel="noopener noreferrer">setting this up</a> is quite easy with GTM.</p>
<p>Recommended event parameters:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="null">category: click
action: outbound link
label: link URL - link text
non-interaction: false</pre>
<h4>File download clicks</h4>
<p>Doesn&#8217;t matter if you provide whitepapers, ebooks, PDFs, or other types of downloadable files, you should be tracking how often they get downloaded.</p>
<p>There are some <a href="https://www.jeffalytics.com/track-downloads-google-analytics/">really good tutorials</a> online but we recommend setting it up using Google Tag Manager. A simple &#8220;just links&#8221; click trigger with a regex that matches desired filetypes should work just fine.</p>
<p>Regex Example:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="null">\.(pdf|docx)$</pre>
<p>Recommended event parameters:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="null">category: click
action: download
label: filename / link text
non-interaction: false</pre>
<h4>Rage clicks</h4>
<p>Visitors rage clicking on certain elements on your website is a good indicator of a UX error. For example, people may click on a blue text that is not a link or on an image that has no click functionality.</p>
<p>We have a <a href="http://reflectivedata.com/tracking-rage-clicks-using-google-tag-manager-and-google-analytics/" target="_blank" rel="noopener noreferrer">separate blog post</a> about tracking rage clicks using Google Tag Manager and Google Analytics.</p>
<p>Recommended event parameters:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="null">category: click
action: rage click
label: element selector
non-interaction: false</pre>
<h4>Button clicks</h4>
<p>Your website is likely to have all sorts of clickable buttons. There might be some other ways for you to get an overview of the usage of the features related to those buttons but knowing how many clicks each button received definitely helps.</p>
<p>Some ideas for which buttons should be tracked:</p>
<ul>
<li>Add to wishlist/favorites</li>
<li>Add/remove item from cart</li>
<li>Update cart</li>
<li>Continue shopping</li>
<li>Log in/out</li>
<li>Register</li>
<li>etc.</li>
</ul>
<p>Recommended event parameters:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="null">category: click
action: button
label: button text/description
non-interaction: false</pre>
<h2>Form Interactions</h2>
<p>When it comes to tracking forms, I would like to recommend a few good articles by Simo Ahava that cover everything you need for getting started.</p>
<ul>
<li><a href="https://www.simoahava.com/analytics/track-form-engagement-with-google-tag-manager/" target="_blank" rel="noopener noreferrer">Track Form Engagement With Google Tag Manager</a></li>
<li><a href="https://www.simoahava.com/analytics/track-form-abandonment-with-google-tag-manager/" target="_blank" rel="noopener noreferrer">Track Form Abandonment With Google Tag Manager</a></li>
<li><a href="https://www.simoahava.com/analytics/form-field-timing-with-google-tag-manager/" target="_blank" rel="noopener noreferrer">Form Field Timing With Google Tag Manager</a></li>
</ul>
<p>Since forms are the most important part of many websites (i.e checkout, lead form etc.) you should really nail tracking them correctly.</p>
<h2>A/B Testing</h2>
<h4>Experiment and Variation</h4>
<p>Most A/B testing tools provide some sort of integration with Google Analytics. Most of them, though, are using custom dimensions. A problem with custom dimension based integration is that you need to make sure that the dimensions aren&#8217;t overlapping between experiments because otherwise, you might end up overwriting the dimension value for some experiments.</p>
<p>What we recommend having, besides the default integration, is a secondary event-based integration. That is, sending a custom event for every running experiment in a following format:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="null">category: ab testing
action: experiment ID
label: variation number
non-interaction: true</pre>
<p>PS! One event per experiment-variation combination.</p>
<p>This gives you raw information about each experiment and variation that the visitor saw. You can easily use this information in your custom segments or reports.</p>
<p>Every testing has a bit different solution for exposing experiment data to the front-end but here are a few links that should be helpful.</p>
<ul>
<li><a href="https://help.vwo.com/hc/en-us/articles/360021117934-How-to-Integrate-VWO-with-UA-via-Google-Tag-Manager-Custom-Dimensions-" target="_blank" rel="noopener noreferrer">VWO</a> &#8211; instead of custom dimension, send this data using custom event action and label.</li>
<li><a href="https://support.google.com/optimize/answer/9059383?hl=en" target="_blank" rel="noopener noreferrer">Google Optimize</a> &#8211; this allows you to get experiment data to the datalayer, now send it using a custom event.</li>
<li><a href="https://developers.optimizely.com/x/solutions/javascript/reference/index.html#reading-data" target="_blank" rel="noopener noreferrer">Optimizely X</a> &#8211; access data about live experiments using Javascript.</li>
</ul>
<h4>Google Optimize Anti-Flicker Snippet timeout</h4>
<p>If you have any experience with JavaScript-based A/B testing and/or personalization tools you know that flicker can be a real headache.</p>
<p>In case your tool of choice is Google Optimize, you should be using their official anti-flicker snippet to minimize the flicker effect.</p>
<p>We wrote a full separate article on <a href="http://reflectivedata.com/tracking-optimize-anti-flicker-snippet-timeout-in-google-analytics/" target="_blank" rel="noopener noreferrer">Tracking Optimize Anti-Flicker Snippet Timeout in Google Analytics</a>.</p>
<p>Recommended event parameters:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="null">category: optimize
action: snippet timeout
label: true/false
non-interaction: true</pre>
<h2>Scroll depth</h2>
<p>Whether you are working with a blog, some landing pages or any other page that is longer than a fold, you want to know how far down do the visitors scroll.</p>
<p>It used to required some custom Javascript but now, tracking scroll depth is a <a href="https://www.lovesdata.com/blog/tracking-scroll-depth" target="_blank" rel="noopener noreferrer">built-in feature of Google Tag Manager</a>.</p>
<p>Recommended event parameters:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="null">category: scroll
action: scroll depth threshold
non-interaction: false</pre>
<h2>Social interactions</h2>
<p>While Google Analytics has a <a href="https://www.optimizesmart.com/guide-to-social-interactions-tracking-in-google-analytics/" target="_blank" rel="noopener noreferrer">dedicated feature for tracking social interactions</a>, having this data in custom events gives you more flexibility in reporting.</p>
<p>There is a really thorough blog post about <a href="https://www.analyticsmania.com/post/track-social-interactions-with-google-tag-manager/" target="_blank" rel="noopener noreferrer">tracking social interactions using Google Tag Manager</a> &#8211; although, if you want something simpler, tracking clicks on your social icons is a good starting point.</p>
<p>Recommended event parameters:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="null">category: social
action: share/like/follow
label: social platform
non-interaction: false</pre>
<h2>Video events</h2>
<p>Doesn&#8217;t matter if it&#8217;s a sales video, a video that explains how your product works or a tutorial &#8211; you do care about how many people start the video and how far through will they make.</p>
<p>Google Tag Manager provides a really easy solution for <a href="https://www.getelevar.com/how-to/implement-video-tracking-with-google-tag-manager/" target="_blank" rel="noopener noreferrer">tracking YouTube videos</a> but tracking others such as <a href="https://www.cardinalpath.com/vimeo-tracking-with-google-tag-manager/" target="_blank" rel="noopener noreferrer">Vimeo</a> is completely doable as well.</p>
<p>Recommended event parameters:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="null">category: videos
action: start/pause/percentage
label: video id
non-interaction: false</pre>
<h2>Errors</h2>
<p>No matter how good your site is, there will always be errors. Since errors are directly related to bad user experience, tracking them is absolutely crucial.</p>
<p>The first step here should be sending your <a href="https://www.tatvic.com/blog/javascript-error-tracking-google-analytics-via-google-tag-manager-unsung-hero-2/" target="_blank" rel="noopener noreferrer">Javascript errors to Google Analytics</a>. Next, consider sending other errors like popup alerts and system errors as well.</p>
<p>Recommended event parameters:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="null">category: error
action: error message
label: feature or other relevant information
non-interaction: true</pre>
<h2>reCAPTCHA bot score</h2>
<p>Google Analytics does have a simple bot-filtering system in place but it comes nowhere near catching all the bots that visit your site. Even tools like reCAPTCHA by Google can’t usually say for sure whether a visitor is a bot or a human but they can give you a score (from 0.1 to 1). Simo Ahava has put together <a href="https://www.simoahava.com/amp/analytics/improve-google-analytics-bot-detection-with-recaptcha/">a great tutorial</a> for tracking the reCAPTCHA both score using Google Analytics custom dimensions.</p>
<p>Recommended event parameters:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="null">category: reCAPTCHA
action: reCAPTCHA answer
label: reCAPTCHA score
non-interaction: true</pre>
<hr />
<p>Don&#8217;t forget to test whatever new custom event you add to your setup.</p>
<p>Should you have any questions related to custom events in Google Analytics, shoot them in the comments below.</p>
<p>PS! If you need help with implementing custom events, <a href="http://reflectivedata.com/services/analytics-services/">you can hire us</a> to help you out!</p>
<p><span style="font-size: 10pt;">Photo by <a href="https://unsplash.com/@anniespratt?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Annie Spratt</a> on <a href="https://unsplash.com/s/photos/click?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Unsplash</a></span></p>
<p>The post <a href="https://www.reflectivedata.com/data-you-should-be-tracking-using-google-analytics-custom-events/">Data You Should Be Tracking Using Google Analytics Custom Events</a> appeared first on <a href="https://www.reflectivedata.com">Reflective Data</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.reflectivedata.com/data-you-should-be-tracking-using-google-analytics-custom-events/feed/</wfw:commentRss>
			<slash:comments>4</slash:comments>
		
		
			</item>
	</channel>
</rss>
