The data were collected from the Taiwan Economic Journal for the years 1999 to 2009. Company bankruptcy was defined based on the business regulations of the Taiwan Stock Exchange https://www.kaggle.com/fedesoriano/company-bankruptcy-prediction

OBJECTIVE: To identify risk variables that could trigger for a company to go bankrupt. Through this analysis one can create initiatives of prevention and risk assessment to ultimately secure the companies existence

Prepared by: Dodgecarl Incila

DATA RETRIEVAL

bankrupt <- read.csv("bankrupt.csv")

bankrupt_yes <- bankrupt %>%  filter(Bankrupt.==1)
bankrupt_no <- bankrupt %>%  filter(Bankrupt.==0)
bankrupt <- bankrupt %>% mutate(bankrupt_yn= ifelse(Bankrupt.==1,"yes","no"))

WORKING CAPITAL

bankrupt %>% ggplot(aes(Working.Capital.to.Total.Assets, fill=bankrupt_yn)) + geom_density(alpha=0.2) + ggtitle("Working Capital to Asset")


bankrupt %>% group_by(bankrupt_yn) %>%  summarise(average=mean(Working.Capital.to.Total.Assets))

Companies with high amounts of working capital possess sufficient liquid funds needed to meet their short-term obligations. Working capital, also called “net working capital,” is a liquidity metric used in corporate finance to assess a business’ operational efficiency. It is calculated by subtracting a company’s current liabilities from its current assets.

If the proportion of the Working Capital to Total Assets is less than 0.75, One might need to review the assets and liabilities.

#+ scale_y_continuous(labels=scales::comma)

TAX RATE

bankrupt %>% ggplot(aes(Tax.rate..A., fill=bankrupt_yn)) + geom_density(alpha=0.2) + ggtitle("Tax Rate")


bankrupt %>% group_by(bankrupt_yn) %>%  summarise(average=mean(Tax.rate..A.))

A tax rate is the percentage at which an individual or corporation is taxed.

DEBT RATIO

bankrupt %>% ggplot(aes(Debt.ratio.., fill=bankrupt_yn)) + geom_density(alpha=0.2) + ggtitle("Debt Ratio")


bankrupt %>% group_by(bankrupt_yn) %>%  summarise(average=mean(Debt.ratio..))

The debt ratio is a financial ratio that measures the extent of a company’s leverage. The debt ratio is defined as the ratio of total debt to total assets, expressed as a decimal or percentage. It can be interpreted as the proportion of a company’s assets that are financed by debt.

A ratio greater than 1 shows that a considerable portion of debt is funded by assets. In other words, the company has more liabilities than assets. A high ratio also indicates that a company may be putting itself at risk of default on its loans if interest rates were to rise suddenly.

INVENTORY TURN OVER RATE

bankrupt %>% ggplot(aes(Inventory.Turnover.Rate..times., fill=bankrupt_yn)) + geom_density(alpha=0.2) + ggtitle("Inventory Turnover Rate")


bankrupt %>% group_by(bankrupt_yn) %>%  summarise(average=mean(Inventory.Turnover.Rate..times.))

Inventory turnover is a financial ratio showing how many times a company has sold and replaced inventory during a given period. … Calculating inventory turnover can help businesses make better decisions on pricing, manufacturing, marketing, and purchasing new inventory

TOTAL ASSET TURNOVER

bankrupt %>% ggplot(aes(Total.Asset.Turnover, fill=bankrupt_yn)) + geom_density(alpha=0.2)  + ggtitle("Total Asset Turnover")


bankrupt %>% group_by(bankrupt_yn) %>%  summarise(average=mean(Total.Asset.Turnover))

cor(bankrupt$Inventory.Turnover.Rate..times.,bankrupt$Total.Asset.Turnover) 
[1] -0.1522983

The Asset turnover ratio measures the efficiency of a company’s assets in generating revenue or sales. It compares the money amount of sales (revenues) to its total assets as an annualized percentage. Thus, to calculate the asset turnover ratio, divide net sales or revenue by the average total assets

CASH TO TOTAL ASSETS RATIO

bankrupt %>% ggplot(aes(Cash.Total.Assets, fill=bankrupt_yn)) + geom_density(alpha=0.2) + ggtitle("Cash Total Asset Ratio")


bankrupt %>% group_by(bankrupt_yn) %>%  summarise(average=mean(Cash.Total.Assets))

Cash asset ratio is the current value of marketable securities and cash, divided by the company’s current liabilities. Also known as the cash ratio, the cash asset ratio compares the amount of highly liquid assets (such as cash and marketable securities) to the amount of short-term liabilities

Ideally, this ratio should be 1:1. If it is higher, the company may keep too much cash on hand or have a poor collection program for accounts receivable. If it is lower, it may indicate that the company relies too heavily on inventory to meet its obligations

CURRENT LIABILITY TO ASSETS

bankrupt %>% ggplot(aes(Current.Liability.to.Assets, fill=bankrupt_yn)) + geom_density(alpha=0.2) + ggtitle("Current Liability to Assets")


bankrupt %>% group_by(bankrupt_yn) %>%  summarise(average=mean(Current.Liability.to.Assets))
NA

Total-debt-to-total-assets is a leverage ratio that defines the total amount of debt relative to assets owned by a company. Using this metric, analysts can compare one company’s leverage with that of other companies in the same industry. This information can reflect how financially stable a company is. The higher the ratio, the higher the degree of leverage (DoL) and, consequently, the higher the risk of investing in that company.

TOTAL EXPENSE TO ASSETS RATIO

bankrupt %>% ggplot(aes(Total.expense.Assets, fill=bankrupt_yn)) + geom_density(alpha=0.2) 


bankrupt %>% group_by(bankrupt_yn) %>%  summarise(average=mean(Total.expense.Assets))

An expense ratio (ER), also sometimes known as the management expense ratio (MER), measures how much of a fund’s assets are used for administrative and other operating expenses.

A good expense ratio, from the investor’s viewpoint, is around 0.5% to 0.75% for an actively managed portfolio. An expense ratio greater than 1.5% is considered high.

bankrupt %>% ggplot(aes(Cash.Turnover.Rate, fill=bankrupt_yn)) + geom_density(alpha=0.2) 

bankrupt %>% ggplot(aes(Net.Income.to.Total.Assets, fill=bankrupt_yn)) + geom_density(alpha=0.2) 

bankrupt %>% ggplot(aes(ROA.A..before.interest.and...after.tax, fill=bankrupt_yn)) + geom_density(alpha=0.2) 


bankrupt %>% ggplot(aes(ROA.B..before.interest.and.depreciation.after.tax, fill=bankrupt_yn)) + geom_density(alpha=0.2) 


bankrupt %>% ggplot(aes(ROA.C..before.interest.and.depreciation.before.interest, fill=bankrupt_yn)) + geom_density(alpha=0.2) 

NA
NA
bankrupt %>% ggplot(aes(Operating.Expense.Rate, fill=bankrupt_yn)) + geom_density(alpha=0.2) 

LS0tDQp0aXRsZTogIkJ1c2luZXNzIEFuYWx5c2lzOiBHbyBCYW5rcnVwdCINCm91dHB1dDogaHRtbF9ub3RlYm9vaw0KLS0tDQoNClRoZSBkYXRhIHdlcmUgY29sbGVjdGVkIGZyb20gdGhlIFRhaXdhbiBFY29ub21pYyBKb3VybmFsIGZvciB0aGUgeWVhcnMgMTk5OSB0byAyMDA5LiBDb21wYW55IGJhbmtydXB0Y3kgd2FzIGRlZmluZWQgYmFzZWQgb24gdGhlIGJ1c2luZXNzIHJlZ3VsYXRpb25zIG9mIHRoZSBUYWl3YW4gU3RvY2sgRXhjaGFuZ2UNCmh0dHBzOi8vd3d3LmthZ2dsZS5jb20vZmVkZXNvcmlhbm8vY29tcGFueS1iYW5rcnVwdGN5LXByZWRpY3Rpb24NCg0KDQpPQkpFQ1RJVkU6IFRvIGlkZW50aWZ5IHJpc2sgdmFyaWFibGVzIHRoYXQgY291bGQgdHJpZ2dlciBmb3IgYSBjb21wYW55IHRvIGdvIGJhbmtydXB0LiBUaHJvdWdoIHRoaXMgYW5hbHlzaXMgb25lIGNhbiBjcmVhdGUgaW5pdGlhdGl2ZXMgb2YgcHJldmVudGlvbiBhbmQgcmlzayBhc3Nlc3NtZW50IHRvIHVsdGltYXRlbHkgc2VjdXJlIHRoZSBjb21wYW5pZXMgZXhpc3RlbmNlDQoNClByZXBhcmVkIGJ5OiBEb2RnZWNhcmwgSW5jaWxhDQoNCg0KREFUQSBSRVRSSUVWQUwNCmBgYHtyfQ0KYmFua3J1cHQgPC0gcmVhZC5jc3YoImJhbmtydXB0LmNzdiIpDQoNCmJhbmtydXB0X3llcyA8LSBiYW5rcnVwdCAlPiUgIGZpbHRlcihCYW5rcnVwdC49PTEpDQpiYW5rcnVwdF9ubyA8LSBiYW5rcnVwdCAlPiUgIGZpbHRlcihCYW5rcnVwdC49PTApDQoNCmBgYA0KDQoNCg0KYGBge3J9DQpiYW5rcnVwdCA8LSBiYW5rcnVwdCAlPiUgbXV0YXRlKGJhbmtydXB0X3luPSBpZmVsc2UoQmFua3J1cHQuPT0xLCJ5ZXMiLCJubyIpKQ0KYGBgDQoNCg0KV09SS0lORyBDQVBJVEFMDQpgYGB7cn0NCmJhbmtydXB0ICU+JSBnZ3Bsb3QoYWVzKFdvcmtpbmcuQ2FwaXRhbC50by5Ub3RhbC5Bc3NldHMsIGZpbGw9YmFua3J1cHRfeW4pKSArIGdlb21fZGVuc2l0eShhbHBoYT0wLjIpICsgZ2d0aXRsZSgiV29ya2luZyBDYXBpdGFsIHRvIEFzc2V0IikNCg0KYmFua3J1cHQgJT4lIGdyb3VwX2J5KGJhbmtydXB0X3luKSAlPiUgIHN1bW1hcmlzZShhdmVyYWdlPW1lYW4oV29ya2luZy5DYXBpdGFsLnRvLlRvdGFsLkFzc2V0cykpDQpgYGANCkNvbXBhbmllcyB3aXRoIGhpZ2ggYW1vdW50cyBvZiB3b3JraW5nIGNhcGl0YWwgcG9zc2VzcyBzdWZmaWNpZW50IGxpcXVpZCBmdW5kcyBuZWVkZWQgdG8gbWVldCB0aGVpciBzaG9ydC10ZXJtIG9ibGlnYXRpb25zLiBXb3JraW5nIGNhcGl0YWwsIGFsc28gY2FsbGVkICJuZXQgd29ya2luZyBjYXBpdGFsLCIgaXMgYSBsaXF1aWRpdHkgbWV0cmljIHVzZWQgaW4gY29ycG9yYXRlIGZpbmFuY2UgdG8gYXNzZXNzIGEgYnVzaW5lc3MnIG9wZXJhdGlvbmFsIGVmZmljaWVuY3kuIEl0IGlzIGNhbGN1bGF0ZWQgYnkgc3VidHJhY3RpbmcgYSBjb21wYW55J3MgY3VycmVudCBsaWFiaWxpdGllcyBmcm9tIGl0cyBjdXJyZW50IGFzc2V0cy4NCg0KSWYgdGhlIHByb3BvcnRpb24gb2YgdGhlIFdvcmtpbmcgQ2FwaXRhbCB0byBUb3RhbCBBc3NldHMgaXMgbGVzcyB0aGFuIDAuNzUsIE9uZSBtaWdodCBuZWVkIHRvIHJldmlldyB0aGUgYXNzZXRzIGFuZCBsaWFiaWxpdGllcy4NCg0KDQpgYGB7cn0NCiMrIHNjYWxlX3lfY29udGludW91cyhsYWJlbHM9c2NhbGVzOjpjb21tYSkNCmBgYA0KDQoNClRBWCBSQVRFDQpgYGB7cn0NCmJhbmtydXB0ICU+JSBnZ3Bsb3QoYWVzKFRheC5yYXRlLi5BLiwgZmlsbD1iYW5rcnVwdF95bikpICsgZ2VvbV9kZW5zaXR5KGFscGhhPTAuMikgKyBnZ3RpdGxlKCJUYXggUmF0ZSIpDQoNCmJhbmtydXB0ICU+JSBncm91cF9ieShiYW5rcnVwdF95bikgJT4lICBzdW1tYXJpc2UoYXZlcmFnZT1tZWFuKFRheC5yYXRlLi5BLikpDQpgYGANCkEgdGF4IHJhdGUgaXMgdGhlIHBlcmNlbnRhZ2UgYXQgd2hpY2ggYW4gaW5kaXZpZHVhbCBvciBjb3Jwb3JhdGlvbiBpcyB0YXhlZC4NCg0KREVCVCBSQVRJTw0KYGBge3J9DQpiYW5rcnVwdCAlPiUgZ2dwbG90KGFlcyhEZWJ0LnJhdGlvLi4sIGZpbGw9YmFua3J1cHRfeW4pKSArIGdlb21fZGVuc2l0eShhbHBoYT0wLjIpICsgZ2d0aXRsZSgiRGVidCBSYXRpbyIpDQoNCmJhbmtydXB0ICU+JSBncm91cF9ieShiYW5rcnVwdF95bikgJT4lICBzdW1tYXJpc2UoYXZlcmFnZT1tZWFuKERlYnQucmF0aW8uLikpDQpgYGANCg0KVGhlIGRlYnQgcmF0aW8gaXMgYSBmaW5hbmNpYWwgcmF0aW8gdGhhdCBtZWFzdXJlcyB0aGUgZXh0ZW50IG9mIGEgY29tcGFueeKAmXMgbGV2ZXJhZ2UuIFRoZSBkZWJ0IHJhdGlvIGlzIGRlZmluZWQgYXMgdGhlIHJhdGlvIG9mIHRvdGFsIGRlYnQgdG8gdG90YWwgYXNzZXRzLCBleHByZXNzZWQgYXMgYSBkZWNpbWFsIG9yIHBlcmNlbnRhZ2UuIEl0IGNhbiBiZSBpbnRlcnByZXRlZCBhcyB0aGUgcHJvcG9ydGlvbiBvZiBhIGNvbXBhbnnigJlzIGFzc2V0cyB0aGF0IGFyZSBmaW5hbmNlZCBieSBkZWJ0Lg0KDQpBIHJhdGlvIGdyZWF0ZXIgdGhhbiAxIHNob3dzIHRoYXQgYSBjb25zaWRlcmFibGUgcG9ydGlvbiBvZiBkZWJ0IGlzIGZ1bmRlZCBieSBhc3NldHMuIEluIG90aGVyIHdvcmRzLCB0aGUgY29tcGFueSBoYXMgbW9yZSBsaWFiaWxpdGllcyB0aGFuIGFzc2V0cy4gQSBoaWdoIHJhdGlvIGFsc28gaW5kaWNhdGVzIHRoYXQgYSBjb21wYW55IG1heSBiZSBwdXR0aW5nIGl0c2VsZiBhdCByaXNrIG9mIGRlZmF1bHQgb24gaXRzIGxvYW5zIGlmIGludGVyZXN0IHJhdGVzIHdlcmUgdG8gcmlzZSBzdWRkZW5seS4NCg0KDQoNCklOVkVOVE9SWSBUVVJOIE9WRVIgUkFURQ0KYGBge3J9DQpiYW5rcnVwdCAlPiUgZ2dwbG90KGFlcyhJbnZlbnRvcnkuVHVybm92ZXIuUmF0ZS4udGltZXMuLCBmaWxsPWJhbmtydXB0X3luKSkgKyBnZW9tX2RlbnNpdHkoYWxwaGE9MC4yKSArIGdndGl0bGUoIkludmVudG9yeSBUdXJub3ZlciBSYXRlIikNCg0KYmFua3J1cHQgJT4lIGdyb3VwX2J5KGJhbmtydXB0X3luKSAlPiUgIHN1bW1hcmlzZShhdmVyYWdlPW1lYW4oSW52ZW50b3J5LlR1cm5vdmVyLlJhdGUuLnRpbWVzLikpDQpgYGANCkludmVudG9yeSB0dXJub3ZlciBpcyBhIGZpbmFuY2lhbCByYXRpbyBzaG93aW5nIGhvdyBtYW55IHRpbWVzIGEgY29tcGFueSBoYXMgc29sZCBhbmQgcmVwbGFjZWQgaW52ZW50b3J5IGR1cmluZyBhIGdpdmVuIHBlcmlvZC4gLi4uIENhbGN1bGF0aW5nIGludmVudG9yeSB0dXJub3ZlciBjYW4gaGVscCBidXNpbmVzc2VzIG1ha2UgYmV0dGVyIGRlY2lzaW9ucyBvbiBwcmljaW5nLCBtYW51ZmFjdHVyaW5nLCBtYXJrZXRpbmcsIGFuZCBwdXJjaGFzaW5nIG5ldyBpbnZlbnRvcnkNCg0KVE9UQUwgQVNTRVQgVFVSTk9WRVINCmBgYHtyfQ0KYmFua3J1cHQgJT4lIGdncGxvdChhZXMoVG90YWwuQXNzZXQuVHVybm92ZXIsIGZpbGw9YmFua3J1cHRfeW4pKSArIGdlb21fZGVuc2l0eShhbHBoYT0wLjIpICArIGdndGl0bGUoIlRvdGFsIEFzc2V0IFR1cm5vdmVyIikNCg0KYmFua3J1cHQgJT4lIGdyb3VwX2J5KGJhbmtydXB0X3luKSAlPiUgIHN1bW1hcmlzZShhdmVyYWdlPW1lYW4oVG90YWwuQXNzZXQuVHVybm92ZXIpKQ0KDQpjb3IoYmFua3J1cHQkSW52ZW50b3J5LlR1cm5vdmVyLlJhdGUuLnRpbWVzLixiYW5rcnVwdCRUb3RhbC5Bc3NldC5UdXJub3ZlcikgDQpgYGANCiAgVGhlIEFzc2V0IHR1cm5vdmVyIHJhdGlvIG1lYXN1cmVzIHRoZSBlZmZpY2llbmN5IG9mIGEgY29tcGFueSdzIGFzc2V0cyBpbiBnZW5lcmF0aW5nIHJldmVudWUgb3Igc2FsZXMuIEl0IGNvbXBhcmVzIHRoZSBtb25leSBhbW91bnQgb2Ygc2FsZXMgKHJldmVudWVzKSB0byBpdHMgdG90YWwgYXNzZXRzIGFzIGFuIGFubnVhbGl6ZWQgcGVyY2VudGFnZS4gVGh1cywgdG8gY2FsY3VsYXRlIHRoZSBhc3NldCB0dXJub3ZlciByYXRpbywgZGl2aWRlIG5ldCBzYWxlcyBvciByZXZlbnVlIGJ5IHRoZSBhdmVyYWdlIHRvdGFsIGFzc2V0cw0KDQoNCg0KDQoNCkNBU0ggVE8gVE9UQUwgQVNTRVRTIFJBVElPDQpgYGB7cn0NCmJhbmtydXB0ICU+JSBnZ3Bsb3QoYWVzKENhc2guVG90YWwuQXNzZXRzLCBmaWxsPWJhbmtydXB0X3luKSkgKyBnZW9tX2RlbnNpdHkoYWxwaGE9MC4yKSArIGdndGl0bGUoIkNhc2ggVG90YWwgQXNzZXQgUmF0aW8iKQ0KDQpiYW5rcnVwdCAlPiUgZ3JvdXBfYnkoYmFua3J1cHRfeW4pICU+JSAgc3VtbWFyaXNlKGF2ZXJhZ2U9bWVhbihDYXNoLlRvdGFsLkFzc2V0cykpDQpgYGANCkNhc2ggYXNzZXQgcmF0aW8gaXMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgbWFya2V0YWJsZSBzZWN1cml0aWVzIGFuZCBjYXNoLCBkaXZpZGVkIGJ5IHRoZSBjb21wYW55J3MgY3VycmVudCBsaWFiaWxpdGllcy4gQWxzbyBrbm93biBhcyB0aGUgY2FzaCByYXRpbywgdGhlIGNhc2ggYXNzZXQgcmF0aW8gY29tcGFyZXMgdGhlIGFtb3VudCBvZiBoaWdobHkgbGlxdWlkIGFzc2V0cyAoc3VjaCBhcyBjYXNoIGFuZCBtYXJrZXRhYmxlIHNlY3VyaXRpZXMpIHRvIHRoZSBhbW91bnQgb2Ygc2hvcnQtdGVybSBsaWFiaWxpdGllcw0KDQpJZGVhbGx5LCB0aGlzIHJhdGlvIHNob3VsZCBiZSAxOjEuIElmIGl0IGlzIGhpZ2hlciwgdGhlIGNvbXBhbnkgbWF5IGtlZXAgdG9vIG11Y2ggY2FzaCBvbiBoYW5kIG9yIGhhdmUgYSBwb29yIGNvbGxlY3Rpb24gcHJvZ3JhbSBmb3IgYWNjb3VudHMgcmVjZWl2YWJsZS4gSWYgaXQgaXMgbG93ZXIsIGl0IG1heSBpbmRpY2F0ZSB0aGF0IHRoZSBjb21wYW55IHJlbGllcyB0b28gaGVhdmlseSBvbiBpbnZlbnRvcnkgdG8gbWVldCBpdHMgb2JsaWdhdGlvbnMNCg0KQ1VSUkVOVCBMSUFCSUxJVFkgVE8gQVNTRVRTDQpgYGB7cn0NCmJhbmtydXB0ICU+JSBnZ3Bsb3QoYWVzKEN1cnJlbnQuTGlhYmlsaXR5LnRvLkFzc2V0cywgZmlsbD1iYW5rcnVwdF95bikpICsgZ2VvbV9kZW5zaXR5KGFscGhhPTAuMikgKyBnZ3RpdGxlKCJDdXJyZW50IExpYWJpbGl0eSB0byBBc3NldHMiKQ0KDQpiYW5rcnVwdCAlPiUgZ3JvdXBfYnkoYmFua3J1cHRfeW4pICU+JSAgc3VtbWFyaXNlKGF2ZXJhZ2U9bWVhbihDdXJyZW50LkxpYWJpbGl0eS50by5Bc3NldHMpKQ0KDQpgYGANClRvdGFsLWRlYnQtdG8tdG90YWwtYXNzZXRzIGlzIGEgbGV2ZXJhZ2UgcmF0aW8gdGhhdCBkZWZpbmVzIHRoZSB0b3RhbCBhbW91bnQgb2YgZGVidCByZWxhdGl2ZSB0byBhc3NldHMgb3duZWQgYnkgYSBjb21wYW55LiBVc2luZyB0aGlzIG1ldHJpYywgYW5hbHlzdHMgY2FuIGNvbXBhcmUgb25lIGNvbXBhbnkncyBsZXZlcmFnZSB3aXRoIHRoYXQgb2Ygb3RoZXIgY29tcGFuaWVzIGluIHRoZSBzYW1lIGluZHVzdHJ5LiBUaGlzIGluZm9ybWF0aW9uIGNhbiByZWZsZWN0IGhvdyBmaW5hbmNpYWxseSBzdGFibGUgYSBjb21wYW55IGlzLiBUaGUgaGlnaGVyIHRoZSByYXRpbywgdGhlIGhpZ2hlciB0aGUgZGVncmVlIG9mIGxldmVyYWdlIChEb0wpIGFuZCwgY29uc2VxdWVudGx5LCB0aGUgaGlnaGVyIHRoZSByaXNrIG9mIGludmVzdGluZyBpbiB0aGF0IGNvbXBhbnkuDQoNClRPVEFMIEVYUEVOU0UgVE8gQVNTRVRTIFJBVElPDQpgYGB7cn0NCmJhbmtydXB0ICU+JSBnZ3Bsb3QoYWVzKFRvdGFsLmV4cGVuc2UuQXNzZXRzLCBmaWxsPWJhbmtydXB0X3luKSkgKyBnZW9tX2RlbnNpdHkoYWxwaGE9MC4yKSANCg0KYmFua3J1cHQgJT4lIGdyb3VwX2J5KGJhbmtydXB0X3luKSAlPiUgIHN1bW1hcmlzZShhdmVyYWdlPW1lYW4oVG90YWwuZXhwZW5zZS5Bc3NldHMpKQ0KYGBgDQpBbiBleHBlbnNlIHJhdGlvIChFUiksIGFsc28gc29tZXRpbWVzIGtub3duIGFzIHRoZSBtYW5hZ2VtZW50IGV4cGVuc2UgcmF0aW8gKE1FUiksIG1lYXN1cmVzIGhvdyBtdWNoIG9mIGEgZnVuZCdzIGFzc2V0cyBhcmUgdXNlZCBmb3IgYWRtaW5pc3RyYXRpdmUgYW5kIG90aGVyIG9wZXJhdGluZyBleHBlbnNlcy4NCg0KQSBnb29kIGV4cGVuc2UgcmF0aW8sIGZyb20gdGhlIGludmVzdG9yJ3Mgdmlld3BvaW50LCBpcyBhcm91bmQgMC41JSB0byAwLjc1JSBmb3IgYW4gYWN0aXZlbHkgbWFuYWdlZCBwb3J0Zm9saW8uIEFuIGV4cGVuc2UgcmF0aW8gZ3JlYXRlciB0aGFuIDEuNSUgaXMgY29uc2lkZXJlZCBoaWdoLg0KDQoNCmBgYHtyfQ0KYmFua3J1cHQgJT4lIGdncGxvdChhZXMoQ2FzaC5UdXJub3Zlci5SYXRlLCBmaWxsPWJhbmtydXB0X3luKSkgKyBnZW9tX2RlbnNpdHkoYWxwaGE9MC4yKSANCg0KYGBgDQoNCg0KDQpgYGB7cn0NCmJhbmtydXB0ICU+JSBnZ3Bsb3QoYWVzKE5ldC5JbmNvbWUudG8uVG90YWwuQXNzZXRzLCBmaWxsPWJhbmtydXB0X3luKSkgKyBnZW9tX2RlbnNpdHkoYWxwaGE9MC4yKSANCg0KYGBgDQoNCg0KDQoNCmBgYHtyfQ0KYmFua3J1cHQgJT4lIGdncGxvdChhZXMoUk9BLkEuLmJlZm9yZS5pbnRlcmVzdC5hbmQuLi5hZnRlci50YXgsIGZpbGw9YmFua3J1cHRfeW4pKSArIGdlb21fZGVuc2l0eShhbHBoYT0wLjIpIA0KDQpiYW5rcnVwdCAlPiUgZ2dwbG90KGFlcyhST0EuQi4uYmVmb3JlLmludGVyZXN0LmFuZC5kZXByZWNpYXRpb24uYWZ0ZXIudGF4LCBmaWxsPWJhbmtydXB0X3luKSkgKyBnZW9tX2RlbnNpdHkoYWxwaGE9MC4yKSANCg0KYmFua3J1cHQgJT4lIGdncGxvdChhZXMoUk9BLkMuLmJlZm9yZS5pbnRlcmVzdC5hbmQuZGVwcmVjaWF0aW9uLmJlZm9yZS5pbnRlcmVzdCwgZmlsbD1iYW5rcnVwdF95bikpICsgZ2VvbV9kZW5zaXR5KGFscGhhPTAuMikgDQoNCg0KYGBgDQoNCg0KDQpgYGB7cn0NCmJhbmtydXB0ICU+JSBnZ3Bsb3QoYWVzKE9wZXJhdGluZy5FeHBlbnNlLlJhdGUsIGZpbGw9YmFua3J1cHRfeW4pKSArIGdlb21fZGVuc2l0eShhbHBoYT0wLjIpIA0KDQpgYGANCg0KDQoNCg0KYGBge3J9DQoNCmBgYA0KDQoNCg0KYGBge3J9DQoNCmBgYA0KDQoNCg0KDQpgYGB7cn0NCg0KYGBgDQoNCg0KDQoNCmBgYHtyfQ0KDQpgYGANCg0KDQoNCmBgYHtyfQ0KDQpgYGANCg0KDQoNCg0KYGBge3J9DQoNCmBgYA0KDQoNCg0KYGBge3J9DQoNCmBgYA0KDQoNCg0KDQo=