About

For this lab, we will be using Tableau to learn some basic concepts in visual analytics to identify data outliers, seasonality effects, relationships and impacts. There is no R coding in this lab session.

Setup

This worksheet will be used to capture your images from Tableau and to share your observations. To refresh your memory, an example of capturing and including an image is included at the end of this sheet for your reference. You will need to log onto Tableau and Connect/Import the Excel file EuroStore.xls found in the data folder under the ‘bsad-lab10’ folder.

Remember to always set your working directory to the source file location. Go to ‘Session’, scroll down to ‘Set Working Directory’, and click ‘To Source File Location’. Read carefully the below and follow the instructions to complete the tasks and answer any questions. Submit your work to RPubs as detailed in previous notes.

Note

For your assignment you may be using different data sets than what is included here. Always read carefully the instructions on Sakai. For clarity, tasks/questions to be completed/answered are highlighted in red color (visible in preview) and numbered according to their particular placement in the task section. Quite often you will need to add your own code chunk.

Execute all code chunks, preview, publish, and submit link on Sakai.


Task 1: Data Outliers and Seasonality Effect

First get familiar with the data and what each column represent. A description of the data can be found in the Excel file in a seperate sheet called ‘Desc’. Refer to early lab exercise on how to use Tableau. Also check the quick Tableau get started guide published on Sakai. Note that this time you will be reading an Excel file of type xls (unlike csv) into Tableau. Once the file is read into Tableau you will need to select the Data sheet for your work.

In a new Tableau sheet

Drag the measure Sales and drop into Rows. Similarly drag the dimension Week and drop into Columns.

##### 1A) Plot Sales (Rows) versus Week (Columns). Include a snapshot here. Analyse the data source and explain the behavior you observe.

The sales are sort of stable within the range $40K to $50K, except in week 23 to 25 because they are significantly lower than average. During these weeks, the number of sales dropped to around $22K - $25.5k. By checking the source data, we discovered that it was because the week count for these three weeks is only one compare to other weeks, which are two. Thus, the inconsistency caused the inaccuracy of the graph, which interferes the analysis of the chart.

Pull the drop-down menu by clicking the down arrow visible once you hover with the mouse over the variable name in the Rows or Columns field.

##### 1B) Switch from SUM(Sales) to Average AVG(Sales). Doubleclick on the Sales axis and change scale to be more representative of the data range. This should provide a better view of the data. Include a snapshot here. Explain, both qualitatively and quantitatively, how the switch to average impacted the previously observed behavior in 1A).

The graph has visually changed by a switch from the sum of sales to an average of sales regarding weeks. Also, the chart looks like more stable 1A, although the data still shows a continuing trend of rising and falling here is still, and the drecaseing of sales from week 23 to 25 does not look like more drastically, that means an average of sales is not volatile as the sum of sales.

##### 1C) Drag the measure Temp to Color found in Marks. Change SUM(Temp) to AVG(Temp). Edit the colors in the newly created color legend to be more representative of hot and cold temperatures. Include a snapshot here. Explain the combined behavior of Sales, Week, and Temp.

After adding the temperature element, it is obvious that the sales is higher during the warmer times in a year, which is from week 15 to week 33. The highest sales volumn is at week 30 with a temperature of 30 degree (Celsius). It could mean that people come to the store more often during the warmer time of a year.

Task 2: Relationships and Impacts

In a seperate Tableau sheet

##### 2A) Drop the measure Sales into Rows and the measure TV into Columns. Switch both measures from SUM() to Dimension using the drop-down menu. The plot should now look like a scatter plot. Include a snapshot here. Explain the overall behavior of Sales versus TV. Ignore the values at zero. Can you identify an upper threshold for the amount of investment in TV ads beyond which any purchase of additional TV ads would have little or no impact on Sales?

From the scatter plot, audiences reached by tv does not have a strong relationship with the volumn of sales because when more tv ads are invested, the increase in sales in not obvious. The upper limit amout I would invest is around 90 to 100. More then 100, the ads are reaching the same audiance repetadely, thus no significant increase is observed.

##### 2B) Drag the measure Radio to Size found in Marks. Include a snapshot of the plot here. Explain what impact the addition of Radio ads to TV ads is having on Sales.

We can see that when more audiences are reached by radio at the same, tv has a stronger relationship with sales. More audiences reached by additional radio ads based on the increase of tv ads, the more sales volumes. Thus, together the radio and tv ads help to increase the sales volume because more audiences are reached. Also, the most amount of investment of radio is around 100; it seems to be the same as Tv. Thus, they would de have the same impact on the overall sales.

In a separate Tableau sheet

##### 2C) Create a scatter plot of Sales versus Fuel Volume. Explain behavior. No need for a snapshot here. From the scatter plot, we can states that there is a positive relationship between Sales and Fuel volume. That means the increase in fuel volume would result in the number of sales increasing.

##### 2D) Drag the measure Temp to Color found in Marks. Follow 1C) to edit the color legend for Temp. Explain the added impact of temperature on Sales. No need for a snapshot here.

After adding the temperature element, we can see that as the fuel volumn sold in increasing, when the temperature is high, the sales volumns tend to he higher than when the temperature is lower. Thus, we can say that when the weather is warmer (maybe in summer), the higher the fuel volumn sold, the higher the sales volumn.

##### 2E) Drag the measure Holiday to Label found in Marks. Include a snapshot here. Explain the new combined impact of Temp, Holiday, and Fuel Volume on Sales.

After adding the holiday element, we can see when fuel volume and overall sales are both increasing in the high temperature, there are at least one holiday is given. Also, the sales are higher when there is a holiday in the week than other regular on holiday weeks. Thus, the holiday has an impact on the overall sales as well.

In a separate Tableau sheet

##### 2F) Create a Tree Map to show the combined effect of Sales, Temp, Holiday, and Fuel Volume. Use the Show Me menu to select a treemap. Make sure Sales is represented by Size, Temp by Color, Holiday by Label, and Fuel Volume by Label. A sample treemap view is shown below. You may want to view in Presentation mode for more clarity. Consider using a Quick Filter on Holiday and Temp to isolate and better assess the impact of each variable. To create a filter simply hover with the mouse over the measure and select Show Filter from the drop-down menu. Include a snapshot here.

##### 2G) Write a small coincise paragraph (data story) summarizing your findings on how you think the different measures work together or independently, and under what conditions, to affect Sales.

Aftering considering the fuel volumn sold, the temperature and whether if there is a holiday in a week, the sales volumn of the c-store is influenced by the combination of these facts. The most influential is temperature in my opinion; however, holiday is also an important factor. Pepople tend to go out more when the weather is warm, most likely in the summer, and if there is a holiday weekend, there will be more travelers. Thus, they will stop at the station to get gas, and at the same time, more likely to go into the store and purchase snacks, drinks and other products, result in an increase in sales. In a conclusion, the best sales period is in “summer holiday season”.

LS0tDQp0aXRsZTogIkJTQUQzNDMgRmFsbCAyMDE4IExhYiBXb3Jrc2hlZXQgMTAiDQphdXRob3I6ICJZSSBQYW4iDQpkYXRlOiAiMTItMDYtMjAxOCINCm91dHB1dDoNCiAgaHRtbF9ub3RlYm9vazogZGVmYXVsdA0KICBodG1sX2RvY3VtZW50Og0KICAgIGRmX3ByaW50OiBwYWdlZA0Kc3VidGl0bGU6IFZpc3VhbGl6YXRpb24gJiBTbWFydCBSZXBvcnRpbmcgKGJzYWQtbGFiMTApDQotLS0NCg0KIyMjIEFib3V0DQoNCkZvciB0aGlzIGxhYiwgd2Ugd2lsbCBiZSB1c2luZyBUYWJsZWF1IHRvIGxlYXJuIHNvbWUgYmFzaWMgY29uY2VwdHMgaW4gdmlzdWFsIGFuYWx5dGljcyB0byBpZGVudGlmeSBkYXRhIG91dGxpZXJzLCBzZWFzb25hbGl0eSBlZmZlY3RzLCByZWxhdGlvbnNoaXBzIGFuZCBpbXBhY3RzLiBUaGVyZSBpcyBubyBSIGNvZGluZyBpbiB0aGlzIGxhYiBzZXNzaW9uLg0KDQojIyMgU2V0dXANCg0KVGhpcyB3b3Jrc2hlZXQgd2lsbCBiZSB1c2VkIHRvIGNhcHR1cmUgeW91ciBpbWFnZXMgZnJvbSBUYWJsZWF1IGFuZCB0byBzaGFyZSB5b3VyIG9ic2VydmF0aW9ucy4gIFRvIHJlZnJlc2ggeW91ciBtZW1vcnksIGFuIGV4YW1wbGUgb2YgY2FwdHVyaW5nIGFuZCBpbmNsdWRpbmcgYW4gaW1hZ2UgaXMgaW5jbHVkZWQgYXQgdGhlIGVuZCBvZiB0aGlzIHNoZWV0IGZvciB5b3VyIHJlZmVyZW5jZS4gWW91IHdpbGwgbmVlZCB0byBsb2cgb250byBUYWJsZWF1IGFuZCBDb25uZWN0L0ltcG9ydCB0aGUgRXhjZWwgZmlsZSBFdXJvU3RvcmUueGxzIGZvdW5kIGluIHRoZSBkYXRhIGZvbGRlciB1bmRlciB0aGUgJ2JzYWQtbGFiMTAnIGZvbGRlci4gDQoNClJlbWVtYmVyIHRvIGFsd2F5cyBzZXQgeW91ciB3b3JraW5nIGRpcmVjdG9yeSB0byB0aGUgc291cmNlIGZpbGUgbG9jYXRpb24uIEdvIHRvICdTZXNzaW9uJywgc2Nyb2xsIGRvd24gdG8gJ1NldCBXb3JraW5nIERpcmVjdG9yeScsIGFuZCBjbGljayAnVG8gU291cmNlIEZpbGUgTG9jYXRpb24nLiBSZWFkIGNhcmVmdWxseSB0aGUgYmVsb3cgYW5kIGZvbGxvdyB0aGUgaW5zdHJ1Y3Rpb25zIHRvIGNvbXBsZXRlIHRoZSB0YXNrcyBhbmQgYW5zd2VyIGFueSBxdWVzdGlvbnMuICBTdWJtaXQgeW91ciB3b3JrIHRvIFJQdWJzIGFzIGRldGFpbGVkIGluIHByZXZpb3VzIG5vdGVzLiANCg0KIyMjIE5vdGUNCg0KRm9yIHlvdXIgYXNzaWdubWVudCB5b3UgbWF5IGJlIHVzaW5nIGRpZmZlcmVudCBkYXRhIHNldHMgdGhhbiB3aGF0IGlzIGluY2x1ZGVkIGhlcmUuIEFsd2F5cyByZWFkIGNhcmVmdWxseSB0aGUgaW5zdHJ1Y3Rpb25zIG9uIFNha2FpLiAgRm9yIGNsYXJpdHksIHRhc2tzL3F1ZXN0aW9ucyB0byBiZSBjb21wbGV0ZWQvYW5zd2VyZWQgYXJlIGhpZ2hsaWdodGVkIGluIHJlZCBjb2xvciAodmlzaWJsZSBpbiBwcmV2aWV3KSBhbmQgbnVtYmVyZWQgYWNjb3JkaW5nIHRvIHRoZWlyIHBhcnRpY3VsYXIgcGxhY2VtZW50IGluIHRoZSB0YXNrIHNlY3Rpb24uICBRdWl0ZSBvZnRlbiB5b3Ugd2lsbCBuZWVkIHRvIGFkZCB5b3VyIG93biBjb2RlIGNodW5rLg0KDQpFeGVjdXRlIGFsbCBjb2RlIGNodW5rcywgcHJldmlldywgcHVibGlzaCwgYW5kIHN1Ym1pdCBsaW5rIG9uIFNha2FpLg0KDQotLS0tLS0tLS0tLS0tLQ0KDQojIyMgVGFzayAxOiBEYXRhIE91dGxpZXJzIGFuZCBTZWFzb25hbGl0eSBFZmZlY3QNCg0KRmlyc3QgZ2V0IGZhbWlsaWFyIHdpdGggdGhlIGRhdGEgYW5kIHdoYXQgZWFjaCBjb2x1bW4gcmVwcmVzZW50LiBBIGRlc2NyaXB0aW9uIG9mIHRoZSBkYXRhIGNhbiBiZSBmb3VuZCBpbiB0aGUgRXhjZWwgZmlsZSBpbiBhIHNlcGVyYXRlIHNoZWV0IGNhbGxlZCAnRGVzYycuIFJlZmVyIHRvIGVhcmx5IGxhYiBleGVyY2lzZSBvbiBob3cgdG8gdXNlIFRhYmxlYXUuICAgQWxzbyBjaGVjayB0aGUgcXVpY2sgVGFibGVhdSBnZXQgc3RhcnRlZCBndWlkZSBwdWJsaXNoZWQgb24gU2FrYWkuIE5vdGUgdGhhdCB0aGlzIHRpbWUgeW91IHdpbGwgYmUgcmVhZGluZyBhbiBFeGNlbCBmaWxlIG9mIHR5cGUgYHhsc2AgKHVubGlrZSBgY3N2YCkgaW50byBUYWJsZWF1LiBPbmNlIHRoZSBmaWxlIGlzIHJlYWQgaW50byBUYWJsZWF1IHlvdSB3aWxsIG5lZWQgdG8gc2VsZWN0IHRoZSBEYXRhIHNoZWV0IGZvciB5b3VyIHdvcmsuIA0KDQpJbiBhIG5ldyBUYWJsZWF1IHNoZWV0DQoNCkRyYWcgdGhlIG1lYXN1cmUgU2FsZXMgYW5kIGRyb3AgaW50byBSb3dzLiAgU2ltaWxhcmx5IGRyYWcgdGhlIGRpbWVuc2lvbiBXZWVrIGFuZCBkcm9wIGludG8gQ29sdW1ucy4NCg0KPHNwYW4gc3R5bGU9ImNvbG9yOnJlZCI+DQojIyMjIyAxQSkgUGxvdCBTYWxlcyAoUm93cykgdmVyc3VzIFdlZWsgKENvbHVtbnMpLiBJbmNsdWRlIGEgc25hcHNob3QgaGVyZS4gQW5hbHlzZSB0aGUgZGF0YSBzb3VyY2UgYW5kIGV4cGxhaW4gdGhlIGJlaGF2aW9yIHlvdSBvYnNlcnZlLg0KPC9zcGFuPg0KIVtdKGltZ3MvMS5wbmcpDQoNClRoZSBzYWxlcyBhcmUgc29ydCBvZiBzdGFibGUgd2l0aGluIHRoZSByYW5nZSAkNDBLIHRvICQ1MEssIGV4Y2VwdCBpbiB3ZWVrIDIzIHRvIDI1IGJlY2F1c2UgdGhleSBhcmUgc2lnbmlmaWNhbnRseSBsb3dlciB0aGFuIGF2ZXJhZ2UuIER1cmluZyB0aGVzZSB3ZWVrcywgdGhlIG51bWJlciBvZiBzYWxlcyBkcm9wcGVkIHRvIGFyb3VuZCAkMjJLIC0gJDI1LjVrLiBCeSBjaGVja2luZyB0aGUgc291cmNlIGRhdGEsIHdlIGRpc2NvdmVyZWQgdGhhdCBpdCB3YXMgYmVjYXVzZSB0aGUgd2VlayBjb3VudCBmb3IgdGhlc2UgdGhyZWUgd2Vla3MgaXMgb25seSBvbmUgY29tcGFyZSB0byBvdGhlciB3ZWVrcywgd2hpY2ggYXJlIHR3by4gVGh1cywgdGhlIGluY29uc2lzdGVuY3kgY2F1c2VkIHRoZSBpbmFjY3VyYWN5IG9mIHRoZSBncmFwaCwgd2hpY2ggaW50ZXJmZXJlcyB0aGUgYW5hbHlzaXMgb2YgdGhlIGNoYXJ0LiANCg0KUHVsbCB0aGUgZHJvcC1kb3duIG1lbnUgYnkgY2xpY2tpbmcgdGhlIGRvd24gYXJyb3cgdmlzaWJsZSBvbmNlIHlvdSBob3ZlciB3aXRoIHRoZSBtb3VzZSBvdmVyIHRoZSB2YXJpYWJsZSBuYW1lIGluIHRoZSBSb3dzIG9yIENvbHVtbnMgZmllbGQuDQoNCjxzcGFuIHN0eWxlPSJjb2xvcjpyZWQiPg0KIyMjIyMgMUIpICBTd2l0Y2ggZnJvbSBTVU0oU2FsZXMpIHRvIEF2ZXJhZ2UgQVZHKFNhbGVzKS4gRG91YmxlY2xpY2sgb24gdGhlIFNhbGVzIGF4aXMgYW5kIGNoYW5nZSBzY2FsZSB0byBiZSBtb3JlIHJlcHJlc2VudGF0aXZlIG9mIHRoZSBkYXRhIHJhbmdlLiBUaGlzIHNob3VsZCBwcm92aWRlIGEgYmV0dGVyIHZpZXcgb2YgdGhlIGRhdGEuIEluY2x1ZGUgYSBzbmFwc2hvdCBoZXJlLiAgRXhwbGFpbiwgYm90aCBxdWFsaXRhdGl2ZWx5IGFuZCBxdWFudGl0YXRpdmVseSwgaG93IHRoZSBzd2l0Y2ggdG8gYXZlcmFnZSBpbXBhY3RlZCB0aGUgcHJldmlvdXNseSBvYnNlcnZlZCBiZWhhdmlvciBpbiAxQSkuDQo8L3NwYW4+DQoNCiFbXShpbWdzLzIucG5nKQ0KDQpUaGUgZ3JhcGggaGFzIHZpc3VhbGx5IGNoYW5nZWQgYnkgYSBzd2l0Y2ggZnJvbSB0aGUgc3VtIG9mIHNhbGVzIHRvIGFuIGF2ZXJhZ2Ugb2Ygc2FsZXMgcmVnYXJkaW5nIHdlZWtzLiBBbHNvLCB0aGUgY2hhcnQgbG9va3MgbGlrZSBtb3JlIHN0YWJsZSAxQSwgYWx0aG91Z2ggdGhlIGRhdGEgc3RpbGwgc2hvd3MgYSBjb250aW51aW5nIHRyZW5kIG9mIHJpc2luZyBhbmQgZmFsbGluZyBoZXJlIGlzIHN0aWxsLCBhbmQgdGhlIGRyZWNhc2Vpbmcgb2Ygc2FsZXMgZnJvbSB3ZWVrIDIzIHRvIDI1IGRvZXMgbm90IGxvb2sgbGlrZSBtb3JlIGRyYXN0aWNhbGx5LCB0aGF0IG1lYW5zIGFuIGF2ZXJhZ2Ugb2Ygc2FsZXMgaXMgbm90IHZvbGF0aWxlIGFzIHRoZSBzdW0gb2Ygc2FsZXMuIA0KDQoNCjxzcGFuIHN0eWxlPSJjb2xvcjpyZWQiPg0KIyMjIyMgMUMpICBEcmFnIHRoZSBtZWFzdXJlIFRlbXAgdG8gQ29sb3IgZm91bmQgaW4gYE1hcmtzYC4gIENoYW5nZSBTVU0oVGVtcCkgdG8gQVZHKFRlbXApLiBFZGl0IHRoZSBjb2xvcnMgaW4gdGhlIG5ld2x5IGNyZWF0ZWQgY29sb3IgbGVnZW5kIHRvIGJlIG1vcmUgcmVwcmVzZW50YXRpdmUgb2YgaG90IGFuZCBjb2xkIHRlbXBlcmF0dXJlcy4gSW5jbHVkZSBhIHNuYXBzaG90IGhlcmUuICBFeHBsYWluIHRoZSBjb21iaW5lZCBiZWhhdmlvciBvZiBTYWxlcywgV2VlaywgYW5kIFRlbXAuDQo8L3NwYW4+DQoNCiFbXShpbWdzLzMucG5nKQ0KDQpBZnRlciBhZGRpbmcgdGhlIHRlbXBlcmF0dXJlIGVsZW1lbnQsIGl0IGlzIG9idmlvdXMgdGhhdCB0aGUgc2FsZXMgaXMgaGlnaGVyIGR1cmluZyB0aGUgd2FybWVyIHRpbWVzIGluIGEgeWVhciwgd2hpY2ggaXMgZnJvbSB3ZWVrIDE1IHRvIHdlZWsgMzMuIFRoZSBoaWdoZXN0IHNhbGVzIHZvbHVtbiBpcyBhdCB3ZWVrIDMwIHdpdGggYSB0ZW1wZXJhdHVyZSBvZiAzMCBkZWdyZWUgKENlbHNpdXMpLiBJdCBjb3VsZCBtZWFuIHRoYXQgcGVvcGxlIGNvbWUgdG8gdGhlIHN0b3JlIG1vcmUgb2Z0ZW4gZHVyaW5nIHRoZSB3YXJtZXIgdGltZSBvZiBhIHllYXIuDQotLS0tLS0tLS0tDQoNCiMjIyBUYXNrIDI6IFJlbGF0aW9uc2hpcHMgYW5kIEltcGFjdHMNCg0KSW4gYSBzZXBlcmF0ZSBUYWJsZWF1IHNoZWV0DQoNCg0KPHNwYW4gc3R5bGU9ImNvbG9yOnJlZCI+DQojIyMjIyAyQSkgRHJvcCB0aGUgbWVhc3VyZSBTYWxlcyBpbnRvIFJvd3MgYW5kIHRoZSBtZWFzdXJlIFRWIGludG8gQ29sdW1ucy4gU3dpdGNoIGJvdGggbWVhc3VyZXMgZnJvbSBTVU0oKSB0byBEaW1lbnNpb24gdXNpbmcgdGhlIGRyb3AtZG93biBtZW51LiAgVGhlIHBsb3Qgc2hvdWxkIG5vdyBsb29rIGxpa2UgYSBzY2F0dGVyIHBsb3QuIEluY2x1ZGUgYSBzbmFwc2hvdCBoZXJlLiBFeHBsYWluIHRoZSBvdmVyYWxsIGJlaGF2aW9yIG9mIFNhbGVzIHZlcnN1cyBUVi4gSWdub3JlIHRoZSB2YWx1ZXMgYXQgemVyby4gIENhbiB5b3UgaWRlbnRpZnkgYW4gdXBwZXIgdGhyZXNob2xkIGZvciB0aGUgYW1vdW50IG9mIGludmVzdG1lbnQgaW4gVFYgYWRzIGJleW9uZCB3aGljaCBhbnkgcHVyY2hhc2Ugb2YgYWRkaXRpb25hbCBUViBhZHMgd291bGQgaGF2ZSBsaXR0bGUgb3Igbm8gaW1wYWN0IG9uIFNhbGVzPw0KPC9zcGFuPg0KIVtdKGltZ3MvNC5wbmcpDQoNCkZyb20gdGhlIHNjYXR0ZXIgcGxvdCwgYXVkaWVuY2VzIHJlYWNoZWQgYnkgdHYgZG9lcyBub3QgaGF2ZSBhIHN0cm9uZyByZWxhdGlvbnNoaXAgd2l0aCB0aGUgdm9sdW1uIG9mIHNhbGVzIGJlY2F1c2Ugd2hlbiBtb3JlIHR2IGFkcyBhcmUgaW52ZXN0ZWQsIHRoZSBpbmNyZWFzZSBpbiBzYWxlcyBpbiBub3Qgb2J2aW91cy4gVGhlIHVwcGVyIGxpbWl0IGFtb3V0IEkgd291bGQgaW52ZXN0IGlzIGFyb3VuZCA5MCB0byAxMDAuIE1vcmUgdGhlbiAxMDAsIHRoZSBhZHMgYXJlIHJlYWNoaW5nIHRoZSBzYW1lIGF1ZGlhbmNlIHJlcGV0YWRlbHksIHRodXMgbm8gc2lnbmlmaWNhbnQgaW5jcmVhc2UgaXMgb2JzZXJ2ZWQuDQoNCjxzcGFuIHN0eWxlPSJjb2xvcjpyZWQiPg0KIyMjIyMgMkIpIERyYWcgdGhlIG1lYXN1cmUgUmFkaW8gdG8gU2l6ZSBmb3VuZCBpbiBNYXJrcy4gSW5jbHVkZSBhIHNuYXBzaG90IG9mIHRoZSBwbG90IGhlcmUuIEV4cGxhaW4gd2hhdCBpbXBhY3QgdGhlIGFkZGl0aW9uIG9mIFJhZGlvIGFkcyB0byBUViBhZHMgaXMgaGF2aW5nIG9uIFNhbGVzLiANCjwvc3Bhbj4NCiFbXShpbWdzLzcucG5nKQ0KDQpXZSBjYW4gc2VlIHRoYXQgd2hlbiBtb3JlIGF1ZGllbmNlcyBhcmUgcmVhY2hlZCBieSByYWRpbyBhdCB0aGUgc2FtZSwgdHYgaGFzIGEgc3Ryb25nZXIgcmVsYXRpb25zaGlwIHdpdGggc2FsZXMuIE1vcmUgYXVkaWVuY2VzIHJlYWNoZWQgYnkgYWRkaXRpb25hbCByYWRpbyBhZHMgYmFzZWQgb24gdGhlIGluY3JlYXNlIG9mIHR2IGFkcywgdGhlIG1vcmUgc2FsZXMgdm9sdW1lcy4gVGh1cywgdG9nZXRoZXIgdGhlIHJhZGlvIGFuZCB0diBhZHMgaGVscCB0byBpbmNyZWFzZSB0aGUgc2FsZXMgdm9sdW1lIGJlY2F1c2UgbW9yZSBhdWRpZW5jZXMgYXJlIHJlYWNoZWQuIEFsc28sIHRoZSBtb3N0IGFtb3VudCBvZiBpbnZlc3RtZW50IG9mIHJhZGlvIGlzIGFyb3VuZCAxMDA7IGl0IHNlZW1zIHRvIGJlIHRoZSBzYW1lIGFzIFR2LiBUaHVzLCB0aGV5IHdvdWxkIGRlIGhhdmUgdGhlIHNhbWUgaW1wYWN0IG9uIHRoZSBvdmVyYWxsIHNhbGVzLiANCg0KSW4gYSBzZXBhcmF0ZSBUYWJsZWF1IHNoZWV0DQoNCjxzcGFuIHN0eWxlPSJjb2xvcjpyZWQiPg0KIyMjIyMgMkMpIENyZWF0ZSBhIHNjYXR0ZXIgcGxvdCBvZiBTYWxlcyB2ZXJzdXMgRnVlbCBWb2x1bWUuIEV4cGxhaW4gYmVoYXZpb3IuICBObyBuZWVkIGZvciBhIHNuYXBzaG90IGhlcmUuDQo8L3NwYW4+DQpGcm9tIHRoZSBzY2F0dGVyIHBsb3QsIHdlIGNhbiBzdGF0ZXMgdGhhdCB0aGVyZSBpcyBhIHBvc2l0aXZlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIFNhbGVzIGFuZCBGdWVsIHZvbHVtZS4gVGhhdCBtZWFucyB0aGUgaW5jcmVhc2UgaW4gZnVlbCB2b2x1bWUgd291bGQgcmVzdWx0IGluIHRoZSBudW1iZXIgb2Ygc2FsZXMgaW5jcmVhc2luZy4gDQoNCjxzcGFuIHN0eWxlPSJjb2xvcjpyZWQiPg0KIyMjIyMgMkQpIERyYWcgdGhlIG1lYXN1cmUgVGVtcCB0byBgQ29sb3JgICBmb3VuZCBpbiBNYXJrcy4gRm9sbG93IDFDKSB0byBlZGl0IHRoZSBjb2xvciBsZWdlbmQgZm9yIFRlbXAuIEV4cGxhaW4gdGhlIGFkZGVkIGltcGFjdCBvZiB0ZW1wZXJhdHVyZSBvbiBTYWxlcy4gTm8gbmVlZCBmb3IgYSBzbmFwc2hvdCBoZXJlLg0KPC9zcGFuPg0KDQpBZnRlciBhZGRpbmcgdGhlIHRlbXBlcmF0dXJlIGVsZW1lbnQsIHdlIGNhbiBzZWUgdGhhdCBhcyB0aGUgZnVlbCB2b2x1bW4gc29sZCBpbiBpbmNyZWFzaW5nLCB3aGVuIHRoZSB0ZW1wZXJhdHVyZSBpcyBoaWdoLCB0aGUgc2FsZXMgdm9sdW1ucyB0ZW5kIHRvIGhlIGhpZ2hlciB0aGFuIHdoZW4gdGhlIHRlbXBlcmF0dXJlIGlzIGxvd2VyLiBUaHVzLCB3ZSBjYW4gc2F5IHRoYXQgd2hlbiB0aGUgd2VhdGhlciBpcyB3YXJtZXIgKG1heWJlIGluIHN1bW1lciksIHRoZSBoaWdoZXIgdGhlIGZ1ZWwgdm9sdW1uIHNvbGQsIHRoZSBoaWdoZXIgdGhlIHNhbGVzIHZvbHVtbi4NCg0KPHNwYW4gc3R5bGU9ImNvbG9yOnJlZCI+DQojIyMjIyAyRSkgRHJhZyB0aGUgbWVhc3VyZSBIb2xpZGF5IHRvIGBMYWJlbGAgZm91bmQgaW4gTWFya3MuICBJbmNsdWRlIGEgc25hcHNob3QgaGVyZS4gIEV4cGxhaW4gdGhlIG5ldyBjb21iaW5lZCBpbXBhY3Qgb2YgVGVtcCwgSG9saWRheSwgYW5kIEZ1ZWwgVm9sdW1lIG9uIFNhbGVzLg0KPC9zcGFuPg0KIVtdKGltZ3MvNS5wbmcpDQoNCkFmdGVyIGFkZGluZyB0aGUgaG9saWRheSBlbGVtZW50LCB3ZSBjYW4gc2VlIHdoZW4gZnVlbCB2b2x1bWUgYW5kIG92ZXJhbGwgc2FsZXMgYXJlIGJvdGggaW5jcmVhc2luZyBpbiB0aGUgaGlnaCB0ZW1wZXJhdHVyZSwgdGhlcmUgYXJlIGF0IGxlYXN0IG9uZSBob2xpZGF5IGlzIGdpdmVuLiBBbHNvLCB0aGUgc2FsZXMgYXJlIGhpZ2hlciB3aGVuIHRoZXJlIGlzIGEgaG9saWRheSBpbiB0aGUgd2VlayB0aGFuIG90aGVyIHJlZ3VsYXIgb24gaG9saWRheSB3ZWVrcy4gVGh1cywgdGhlIGhvbGlkYXkgaGFzIGFuIGltcGFjdCBvbiB0aGUgb3ZlcmFsbCBzYWxlcyBhcyB3ZWxsLg0KDQoNCiAgDQogIA0KSW4gYSBzZXBhcmF0ZSBUYWJsZWF1IHNoZWV0IA0KDQo8c3BhbiBzdHlsZT0iY29sb3I6cmVkIj4NCiMjIyMjIDJGKSBDcmVhdGUgYSBUcmVlIE1hcCB0byBzaG93IHRoZSBjb21iaW5lZCBlZmZlY3Qgb2YgU2FsZXMsIFRlbXAsIEhvbGlkYXksIGFuZCBGdWVsIFZvbHVtZS4gVXNlIHRoZSBTaG93IE1lIG1lbnUgdG8gc2VsZWN0IGEgdHJlZW1hcC4gTWFrZSBzdXJlIFNhbGVzIGlzIHJlcHJlc2VudGVkIGJ5IFNpemUsIFRlbXAgYnkgQ29sb3IsIEhvbGlkYXkgYnkgTGFiZWwsIGFuZCBGdWVsIFZvbHVtZSBieSBMYWJlbC4gQSBzYW1wbGUgdHJlZW1hcCB2aWV3IGlzIHNob3duIGJlbG93LiAgWW91IG1heSB3YW50IHRvIHZpZXcgaW4gYFByZXNlbnRhdGlvbiBtb2RlYCBmb3IgbW9yZSBjbGFyaXR5LiBDb25zaWRlciB1c2luZyBhIFF1aWNrIEZpbHRlciBvbiBIb2xpZGF5IGFuZCBUZW1wIHRvIGlzb2xhdGUgYW5kIGJldHRlciBhc3Nlc3MgdGhlIGltcGFjdCBvZiBlYWNoIHZhcmlhYmxlLiBUbyBjcmVhdGUgYSBmaWx0ZXIgc2ltcGx5IGhvdmVyIHdpdGggdGhlIG1vdXNlIG92ZXIgdGhlIG1lYXN1cmUgYW5kIHNlbGVjdCBgU2hvdyBGaWx0ZXJgIGZyb20gdGhlIGRyb3AtZG93biBtZW51LiAgIEluY2x1ZGUgYSBzbmFwc2hvdCBoZXJlLg0KPC9zcGFuPg0KDQohW10oaW1ncy84LkpwZykNCg0KDQoNCjxzcGFuIHN0eWxlPSJjb2xvcjpyZWQiPg0KIyMjIyMgMkcpIFdyaXRlIGEgc21hbGwgY29pbmNpc2UgcGFyYWdyYXBoIChkYXRhIHN0b3J5KSBzdW1tYXJpemluZyB5b3VyIGZpbmRpbmdzIG9uIGhvdyB5b3UgdGhpbmsgdGhlIGRpZmZlcmVudCBtZWFzdXJlcyB3b3JrIHRvZ2V0aGVyIG9yIGluZGVwZW5kZW50bHksIGFuZCB1bmRlciB3aGF0IGNvbmRpdGlvbnMsIHRvIGFmZmVjdCBTYWxlcy4NCg0KQWZ0ZXJpbmcgY29uc2lkZXJpbmcgdGhlIGZ1ZWwgdm9sdW1uIHNvbGQsIHRoZSB0ZW1wZXJhdHVyZSBhbmQgd2hldGhlciBpZiB0aGVyZSBpcyBhIGhvbGlkYXkgaW4gYSB3ZWVrLCB0aGUgc2FsZXMgdm9sdW1uIG9mIHRoZSBjLXN0b3JlIGlzIGluZmx1ZW5jZWQgYnkgdGhlIGNvbWJpbmF0aW9uIG9mIHRoZXNlIGZhY3RzLiBUaGUgbW9zdCBpbmZsdWVudGlhbCBpcyB0ZW1wZXJhdHVyZSBpbiBteSBvcGluaW9uOyBob3dldmVyLCBob2xpZGF5IGlzIGFsc28gYW4gaW1wb3J0YW50IGZhY3Rvci4gUGVwb3BsZSB0ZW5kIHRvIGdvIG91dCBtb3JlIHdoZW4gdGhlIHdlYXRoZXIgaXMgd2FybSwgbW9zdCBsaWtlbHkgaW4gdGhlIHN1bW1lciwgYW5kIGlmIHRoZXJlIGlzIGEgaG9saWRheSB3ZWVrZW5kLCB0aGVyZSB3aWxsIGJlIG1vcmUgdHJhdmVsZXJzLiBUaHVzLCB0aGV5IHdpbGwgc3RvcCBhdCB0aGUgc3RhdGlvbiB0byBnZXQgZ2FzLCBhbmQgYXQgdGhlIHNhbWUgdGltZSwgbW9yZSBsaWtlbHkgdG8gZ28gaW50byB0aGUgc3RvcmUgYW5kIHB1cmNoYXNlIHNuYWNrcywgZHJpbmtzIGFuZCBvdGhlciBwcm9kdWN0cywgcmVzdWx0IGluIGFuIGluY3JlYXNlIGluIHNhbGVzLiBJbiBhIGNvbmNsdXNpb24sIHRoZSBiZXN0IHNhbGVzIHBlcmlvZCBpcyBpbiAic3VtbWVyIGhvbGlkYXkgc2Vhc29uIi4NCiAgDQoNCiFbXShpbWdzL3RyZWVtYXAucG5nKQ0KDQo=