What are Red Flags of Fraud ?

Frauds can be detected, a particularly effective and inexpensive way is to identify fraudsters by scrutinizing personnel behaviour for peculiarities typical of fraudsters.

checklist of behavioural red flags of fraud based on data collected, 16 different behavioural red flags exhibited by fraudsters. An examination of frequencies indicates that strong ambition, extended working hours, social aloofness, dissatisfaction with current job and living standard disproportionate to current means are the most frequently displayed behavioural red flags of fraud.

It is important to understand that behavioural red flags of fraud are not stereotypes, nor are they hard and fast rules.

Crowe (2011) found CEO involvement in 89 per cent of corporate frauds and prepared a list of CEO- related red flags: bully attitude, ego and autocratic style of operation.

McFadden (2016) contended that many behavioural red flags, such as insomnia, relationship problems, troubled relationships with co-workers and drug abuse, suggest an employee’s participation in workplace fraud. lying, lack of cooperation during audits, cleverness and arrogance may indicate an attempt to conceal fraud (McFadden, 2016).

living beyond means, financial difficulties, close associations with vendors, unwillingness to share duties, unscrupulous behaviour and recent divorce/family problems are the most commonly displayed behavioural red flags of fraud (ACFE, 2012, 2014, 2016).

KPMG (2014) suggests that gambling and living beyond means are the most frequently displayed red flags of fraud

Conclusion

Analysis of the articulations of the respondents helped identify as many as 16 different behavioural red flags of fraud exhibited by fraud perpetrators before the detection of the fraud. Of these 16 behavioural red flags, strong ambition, extended working hours, social aloofness, dissatisfaction with current job and living standard disproportionate to current means are the most frequently displayed red flags. The less frequently exhibited behavioural red flags are rude and autocratic behaviour, personal problems, justifying unethical/dishonest behaviour, employment-related problems, interpersonal collusion, refusing promotions/postings/leave, close relations with clients/customers, substance abuse, territorial behaviour, history of legal problems and sexual harassment.

Financial Statement Red Flags

Red flags as a method is viewed as a means for managing audit risk and detecting fraud or error. Red flags can be used as an early warning system by both auditors and other stakeholders to assess the risk of financial statement fraud. The probability of fraud should be evaluated on a combination of red flags rather than being limited to one or two indicators.

Table 1 (a) most important red flags
1. dishonest or unethical management
2. Frequent changes of legal counsel, auditors or external board
3. Management is dominated by one person (or a small group) and no effective overseeing board or committee
4. Suspension or delisting from stock exchange
5. management reputation in the business community is poor
6. Continuous problems with regulatory agencies.
7. Internal or external factors raise substantial doubt about the the entity ability to continue is a concern
8. Inability to generate cash flows from operations while reporting earnings and earnings growth
9. There has been a breakdown in accounting and control systems as reflected by the late issuing of financial statements or a qualified audit report
10. There is a high turnover rate of key top management, particularly financial executives

ranking of least important

  1. Pressure is exerted on accounting personnel to complete financial statements in an unusually short period as reflected by approval date of financial statements.
  2. Rapid expansion into new product lines.
  3. Unusually long business cycle.
  4. Key executives feel undue family, peer, or community pressure to succeed.
  5. The entity has a significant investment in an industry or product line noted for rapid change.
  6. Key executives with perceived inadequate incomes relative to industry.
  7. Limited collateral available.
  8. Adverse political, social or environmental impact.
  9. Declining demand for products.
  10. The entity is heavily dependent on one or a few products, customers or suppliers.

“dishonest and unethical management” has been identified as the most important red flag

Extra Red Flags 🚩

  • Merger and de-merger of group companies.

  • Significant presence of financial executives in the top management echelon.

  • A change in financial year-ends (making accounting results incomparable).

  • Size of the auditing firm in relation to the client.

  • Limited management overseeing of remote operations.

  • Unskilled, inexperienced executives promoted into positions prematurely.

  • Frequent corporate restructuring.

  • Significant changes in the structure of the income, fees and interest.

  • Good news that is too good to be true.

  • Wide fluctuations in financial ratios from year to year.

  • Share options being re-priced.

Conclusion

To manage the risk of fraud, including financial statement fraud, an entity should address the problem holistically. Measures to prevent, detect and investigate fraud should be in place. The risk of financial statement fraud is clearly a responsibility of the board of directors, or its equivalent in other organisational structures, especially the non-executive members.

Loan Management Red Flags

Five steps that lenders should take when confronting a problem loan, including:

  1. Know the facts about the borrower.
  2. Identify the company’s and the bank’s problems with the loan.
  3. Determine possible courses of action.
  4. Create a proactive, objective-based action plan.
  5. Establish a program to monitor the firm.

“Red flags almost always appear before there is a payment default”

Red flags-indicators that a business might be having problems:

Lenders:

V & C Framework

“V” stands for company viability. “C” stands for collateral and asset values.

viability collateral meaning
( - ) ( - ) distressed sale or a liquidation, foreclosure, or wind-down scenario
( - ) ( + ) orderly sale or liquidation
( + ) ( - ) potential for a turnaround or restructuring.
( + ) ( + ) likely false alarm, firm is healthy

General Principles

  • Make sure the documentation Is accurate and complete.
  • Communicate clearly and effectively with your customer.
  • Evaluate a firm’s management to determine if it needs help or should be replaced.
  • Remember that the bank controls the loan, but it doesn’t control the borrower.
  • Get value in return for loan waivers or amendments.
  • Avoid putting new money into a lender with a troubled loan.
  • Work closely with third parties: other lenders, guarantors, or equity holders.

Tips for Success

  • Stay close to the borrower. Make sure you understand the key issues and what’s going on. Refuse to be ignorant.
  • Don’t let personal relationships cloud your judgment. You need to stay objective. You need to stay smart. Communicate In a clear and honest way.
  • Minimize bad publicity and be sensitive to lender liability and Community Reinvestment Act issues.
  • Maintain attention to detail while keeping the overall action plan in view.
  • Be vigilant for red flags that indicate borrower troubles.
  • Stay up-to-date on industry-wide issues that affect your borrowers, as well as their internal operational and financial issues.
  • Understand the legal issues.
  • Make sure your action plan fits the facts and solves your problems and those of the borrower.
  • Show a sense of urgency. Time can work against you, so you need to move quickly.
  • Focus on better loan and collateral control and be mindful of your risks.
  • Always be fair and professional with your customer.

Falsified Financial Statements

A recent trend in the fraud detection at financial statements is the use of automated processes with potential additional analytical procedures using multicriteria decision aid analysis, neural networks, machine learning techniques, data mining methods, support vector machines or in general, computational intelligence-based methods (Spathis et al. 2002; Kotsiantis et al. 2006; West and Bhattacharya 2016; Sadasivam et al. 2016; Omar et al. 2017; Jan 2018).

Auditors identified 19 cases that imply falsifications, analysis of these cases detected 73 manipulations. The highest falsifications:

Of the sampled firms, fraud occurred mainly in these sectors:

Data Mining Analysis

The study did data mining on texts, removed stopwords and compared: total assets, shareholders funds, net income, operating revenue, cash flow (TASSE, SFUND, NETIN, OPREV, CFLOW). All p-values are above 0.245. FFS is falsified.

  • TASSE mean FFS vs Mean non-FFS 1272 : 277
  • SFUND mean FFS vs Mean non-FFS 404 : 123
  • NETIN mean FFS vs Mean non-FFS -27 : -8.8
  • CFLOW mean FFS vs Mean non-FFS 7.7 : -3.8

The graph plots, falsified vs control show nearly double the vocabulary of the control vocabulary. One explanation is that the auditors try to describe in many different words and word pairs the abnormalities they find in falsified financial statements.

Falsified texts largely use single words, such as:

  • “evaluation, plan, problems, VAT, taxation, prerequisites, compliance, long term, loans, should_have, reformed, mistakes, banks, conciliation, rises, creditors, restructure”, etc.

Fraud Red Flags Evidence

Surveyed 194 experienced, nonprofessional investors to examine the relations between their perceptions of the frequency of financial reporting fraud, their use of financial statement information, the importance they place on conducting their own fraud risk assessments, and their use of fraud red flags.

Red flags commonly relied upon include SEC investigations, pending litigation, violations of debt covenants, and high management turnover. Investors rely less on company size and age, the need for external financing, and the use of a non-Big 4 auditor.

Prior research identifies three factors that are typically present when fraud occurs. “fraud triangle,” are incentives, opportunities, and attitudes.

Investors and red flags

  1. when individuals perceive increased risk of monetary loss from some action they invest additional effort in activities to self-insure against that loss
  2. investors can choose from various sources of information including financial data that is provided directly by firm management
  3. investors who are savvy enough to read financial statements may seek to assess the likelihood of fraud as part of their financial statement analyses.
  4. investors who choose information from secondary sources may do so because they lack confidence in their own ability to comprehend and analyze complex accounting information found in a firm’s financial statements#

With respect to financial statement information, investors rely more on balance sheet data and less on footnotes to the financial statements. In relation to other information sources, investors rely more on stock price, advice from professionals, and company risk. They rely less on nonfinancial information related to operations, advice from the media, and advice from nonprofessionals.

Investors rely more on regulators, external auditors, and analysts to detect and report fraud. Investors rely less on upper management, low/mid-level employees, the media, and short sellers to uncover fraud.

Reference

LS0tCnRpdGxlOiAiUmVkIEZsYWdzIG9mIEZyYXVkIgpvdXRwdXQ6IAogIGh0bWxfbm90ZWJvb2s6IAogICAgdG9jOiB5ZXMKICBodG1sX2RvY3VtZW50OgogICAgY29kZV9mb2xkaW5nOiBzaG93CiAgICB0aGVtZToKICAgICAgYmc6ICIjMjAyMTIzIgogICAgICBmZzogIiNCOEJDQzIiCiAgICAgIHByaW1hcnk6ICIjRUE4MEZDIgogICAgICBzZWNvbmRhcnk6ICIjMDBEQUM2IgogICAgICBiYXNlX2ZvbnQ6CiAgICAgICAgZ29vZ2xlOiBMYXRvCiAgICAgIGhlYWRpbmdfZm9udDoKICAgICAgICBnb29nbGU6IExhdG8KICBwZGZfZG9jdW1lbnQ6IAogICAgdG9jOiB5ZXMKLS0tCgpgYGB7ciBzZXR1cCwgaW5jbHVkZT1GQUxTRX0KaWYgKHJlcXVpcmVOYW1lc3BhY2UoInRoZW1hdGljIikpIAogIHRoZW1hdGljOjp0aGVtYXRpY19ybWQoZm9udCA9ICJhdXRvIikKYGBgCgoKIyMgV2hhdCBhcmUgUmVkIEZsYWdzIG9mIEZyYXVkID8KCgpGcmF1ZHMgY2FuIGJlIGRldGVjdGVkLCBhIHBhcnRpY3VsYXJseSBlZmZlY3RpdmUgYW5kCmluZXhwZW5zaXZlIHdheSBpcyB0byBpZGVudGlmeSBmcmF1ZHN0ZXJzIGJ5IHNjcnV0aW5pemluZyBwZXJzb25uZWwgYmVoYXZpb3VyIGZvciBwZWN1bGlhcml0aWVzIHR5cGljYWwgb2YKZnJhdWRzdGVycy4gCgoKY2hlY2tsaXN0IG9mIGJlaGF2aW91cmFsIHJlZCBmbGFncyBvZiBmcmF1ZCBiYXNlZCBvbiBkYXRhIGNvbGxlY3RlZCwgCjE2IGRpZmZlcmVudCBiZWhhdmlvdXJhbCByZWQgZmxhZ3MgZXhoaWJpdGVkIGJ5IGZyYXVkc3RlcnMuIEFuIGV4YW1pbmF0aW9uIG9mCmZyZXF1ZW5jaWVzIGluZGljYXRlcyB0aGF0IHN0cm9uZyBhbWJpdGlvbiwgZXh0ZW5kZWQgd29ya2luZyBob3Vycywgc29jaWFsIGFsb29mbmVzcywgZGlzc2F0aXNmYWN0aW9uIHdpdGgKY3VycmVudCBqb2IgYW5kIGxpdmluZyBzdGFuZGFyZCBkaXNwcm9wb3J0aW9uYXRlIHRvIGN1cnJlbnQgbWVhbnMgYXJlIHRoZSBtb3N0IGZyZXF1ZW50bHkgZGlzcGxheWVkCmJlaGF2aW91cmFsIHJlZCBmbGFncyBvZiBmcmF1ZC4KCkl0IGlzIGltcG9ydGFudCB0byB1bmRlcnN0YW5kIHRoYXQgYmVoYXZpb3VyYWwgcmVkIGZsYWdzIG9mIGZyYXVkIGFyZSBub3Qgc3RlcmVvdHlwZXMsIG5vciBhcmUgdGhleSBoYXJkIGFuZCBmYXN0IHJ1bGVzLgoKCkNyb3dlICgyMDExKSBmb3VuZCBDRU8gaW52b2x2ZW1lbnQgaW4gODkgcGVyIGNlbnQgb2YgY29ycG9yYXRlIGZyYXVkcyBhbmQgcHJlcGFyZWQgYSBsaXN0IG9mIENFTy0KcmVsYXRlZCByZWQgZmxhZ3M6IGJ1bGx5IGF0dGl0dWRlLCBlZ28gYW5kIGF1dG9jcmF0aWMgc3R5bGUgb2Ygb3BlcmF0aW9uLiAKCgpNY0ZhZGRlbiAoMjAxNikgY29udGVuZGVkIHRoYXQgbWFueSBiZWhhdmlvdXJhbCByZWQgZmxhZ3MsIHN1Y2ggYXMgaW5zb21uaWEsIHJlbGF0aW9uc2hpcCBwcm9ibGVtcywgdHJvdWJsZWQKcmVsYXRpb25zaGlwcyB3aXRoIGNvLXdvcmtlcnMgYW5kIGRydWcgYWJ1c2UsIHN1Z2dlc3QgYW4gZW1wbG95ZWXigJlzIHBhcnRpY2lwYXRpb24gaW4gd29ya3BsYWNlIGZyYXVkLiBseWluZywgbGFjayBvZiBjb29wZXJhdGlvbiBkdXJpbmcgYXVkaXRzLCBjbGV2ZXJuZXNzIGFuZCBhcnJvZ2FuY2UgbWF5IGluZGljYXRlIGFuIGF0dGVtcHQgdG8KY29uY2VhbCBmcmF1ZCAoTWNGYWRkZW4sIDIwMTYpLgoKCmxpdmluZyBiZXlvbmQgbWVhbnMsIGZpbmFuY2lhbCBkaWZmaWN1bHRpZXMsIGNsb3NlIGFzc29jaWF0aW9ucyB3aXRoIHZlbmRvcnMsIHVud2lsbGluZ25lc3MgdG8gc2hhcmUgZHV0aWVzLCB1bnNjcnVwdWxvdXMgYmVoYXZpb3VyIGFuZCByZWNlbnQgZGl2b3JjZS9mYW1pbHkgcHJvYmxlbXMgYXJlIHRoZSBtb3N0IGNvbW1vbmx5IGRpc3BsYXllZCBiZWhhdmlvdXJhbCByZWQgZmxhZ3Mgb2YgZnJhdWQgKEFDRkUsIDIwMTIsIDIwMTQsIDIwMTYpLgoKCktQTUcgKDIwMTQpIHN1Z2dlc3RzIHRoYXQgZ2FtYmxpbmcgYW5kIGxpdmluZyBiZXlvbmQgbWVhbnMgYXJlIHRoZSBtb3N0IGZyZXF1ZW50bHkgZGlzcGxheWVkIHJlZCBmbGFncyBvZiBmcmF1ZAoKCgoKIyMjIENvbmNsdXNpb24KCkFuYWx5c2lzIG9mIHRoZSBhcnRpY3VsYXRpb25zIG9mIHRoZSByZXNwb25kZW50cyBoZWxwZWQgaWRlbnRpZnkgYXMgbWFueSBhcyAxNiBkaWZmZXJlbnQgYmVoYXZpb3VyYWwgcmVkIGZsYWdzIG9mIGZyYXVkIGV4aGliaXRlZCBieSBmcmF1ZCBwZXJwZXRyYXRvcnMgYmVmb3JlIHRoZSBkZXRlY3Rpb24gb2YgdGhlIGZyYXVkLiBPZiB0aGVzZSAxNiBiZWhhdmlvdXJhbCByZWQgZmxhZ3MsIHN0cm9uZyBhbWJpdGlvbiwgZXh0ZW5kZWQgd29ya2luZyBob3Vycywgc29jaWFsIGFsb29mbmVzcywgZGlzc2F0aXNmYWN0aW9uIHdpdGggY3VycmVudCBqb2IgYW5kIGxpdmluZyBzdGFuZGFyZCBkaXNwcm9wb3J0aW9uYXRlIHRvIGN1cnJlbnQgbWVhbnMgYXJlIHRoZSBtb3N0IGZyZXF1ZW50bHkgZGlzcGxheWVkIHJlZCBmbGFncy4gVGhlIGxlc3MgZnJlcXVlbnRseSBleGhpYml0ZWQgYmVoYXZpb3VyYWwgcmVkIGZsYWdzIGFyZSBydWRlIGFuZCBhdXRvY3JhdGljIGJlaGF2aW91ciwgcGVyc29uYWwgcHJvYmxlbXMsIGp1c3RpZnlpbmcgdW5ldGhpY2FsL2Rpc2hvbmVzdCBiZWhhdmlvdXIsIGVtcGxveW1lbnQtcmVsYXRlZCBwcm9ibGVtcywgaW50ZXJwZXJzb25hbCBjb2xsdXNpb24sIHJlZnVzaW5nIHByb21vdGlvbnMvcG9zdGluZ3MvbGVhdmUsIGNsb3NlIHJlbGF0aW9ucyB3aXRoIGNsaWVudHMvY3VzdG9tZXJzLCBzdWJzdGFuY2UgYWJ1c2UsIHRlcnJpdG9yaWFsIGJlaGF2aW91ciwgaGlzdG9yeSBvZiBsZWdhbCBwcm9ibGVtcyBhbmQgc2V4dWFsIGhhcmFzc21lbnQuCgpgYGB7ciBlY2hvPUZBTFNFLCBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFfQpsaWJyYXJ5KHRpZHl2ZXJzZSkKbGlicmFyeShwYWxldHRlZXIpCgpkZiA9IHRpYmJsZSgKICBjaGFyID0gYygnc3Ryb25nIGFtYml0aW9uJywnZXh0ZW5kZWQgd29ya2luZyBob3VycycsJ3NvY2lhbCBhbG9vZm5lc3MnLCdkaXNzYXRpc2ZhY3Rpb24gd2l0aCBjdXJyZW50IGpvYicsJ2xpdmluZyBiZXlvbmQgbWVhbnMnLCdydWRlICYgYXV0b2NyYXRpYyBiZWhhdmlvdXInLCdwZXJzb25hbCBwcm9ibGVtcycsJ2Rpc2hvbmVzdCBiZWhhdmlvdXInLCdlbXBsb3ltZW50IHJlbGF0ZWQgcHJvYmxlbXMnLCdpbnRlcnBlcnNvbmFsIGNvbGx1c2lvbicsJ3JlZnVzaW5nIHByb21vdGlvbnMgZXRjJywnY2xvc2UgcmVsYXRpb25zIHdpdGggY2xpZW50cycsJ3N1YnN0YW5jZSBhYnVzZScsJ3Rlcml0b3JpYWwgYmVoYXZpb3VyJywnaGlzdG9yeSBvZiBsZWdhbCBwcm9ibGVtcycsJ3NleHVhbCBoYXJhc3NtZW50JyksCiAgcGVyY2VudGFnZSA9IGMoNDEuNSwgNDEuNSwgMjkuMywgMjkuMywgMjkuMywgMjQuNCwgMjQuNCwgMTkuNSwgMTcuMSwgMTQuNiwgMTIuMiwgOS44LCA3LjMsIDQuOSwgNC45LCAyLjQpCikKCmRmICU+JSAKICBnZ3Bsb3QoIGFlcyh4PSBwZXJjZW50YWdlLCAKICAgICAgICAgICAgICB5PSBmY3RfcmVvcmRlcihmYWN0b3IoY2hhciksIHBlcmNlbnRhZ2UpLAogICAgICAgICAgICAgIGZpbGw9IHBlcmNlbnRhZ2UKICAgICAgICAgICAgICApCiAgICAgICAgICApKwogIGdlb21fY29sKCkrCiAgc2NhbGVfZmlsbF9wYWxldHRlZXJfYyhgImdndGhlbWVzOjpSZWQiYCkrCiAgY29vcmRfY2FydGVzaWFuKGV4cGFuZCA9IEYpKwogIGxhYnMoeT0iIiwgdGl0bGUgPSAiQmVoYXZpb3VyYWwgUmVkIEZsYWdzIG9mIEZyYXVkIiwgY2FwdGlvbiA9ICIoU2FuZGh1LCAyMDE5KSIpKwogIHRoZW1lKHBsb3QuY2FwdGlvbiA9IGVsZW1lbnRfdGV4dChoanVzdCA9IDAuNSkpCiAgCgoKCmBgYAoKCgojIyBGaW5hbmNpYWwgU3RhdGVtZW50IFJlZCBGbGFncwoKClJlZCBmbGFncyBhcyBhIG1ldGhvZCBpcyB2aWV3ZWQgYXMgYSBtZWFucyBmb3IgbWFuYWdpbmcgYXVkaXQgcmlzayBhbmQKZGV0ZWN0aW5nIGZyYXVkIG9yIGVycm9yLiBSZWQgZmxhZ3MgY2FuIGJlIHVzZWQgYXMgYW4gZWFybHkgd2FybmluZyBzeXN0ZW0gYnkKYm90aCBhdWRpdG9ycyBhbmQgb3RoZXIgc3Rha2Vob2xkZXJzIHRvIGFzc2VzcyB0aGUgcmlzayBvZiBmaW5hbmNpYWwgc3RhdGVtZW50CmZyYXVkLiBUaGUgcHJvYmFiaWxpdHkgb2YgZnJhdWQgc2hvdWxkIGJlIGV2YWx1YXRlZCBvbiBhIGNvbWJpbmF0aW9uIG9mIHJlZCBmbGFncyAKcmF0aGVyIHRoYW4gYmVpbmcgbGltaXRlZCB0byBvbmUgb3IgdHdvIGluZGljYXRvcnMuIAoKCgp8IFRhYmxlIDEgKGEpIG1vc3QgaW1wb3J0YW50IHJlZCBmbGFncyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgCnwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAp8IDEuIGRpc2hvbmVzdCBvciB1bmV0aGljYWwgbWFuYWdlbWVudCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCAyLiBGcmVxdWVudCBjaGFuZ2VzIG9mIGxlZ2FsIGNvdW5zZWwsIGF1ZGl0b3JzIG9yIGV4dGVybmFsIGJvYXJkICB8CnwgMy4gTWFuYWdlbWVudCBpcyBkb21pbmF0ZWQgYnkgb25lIHBlcnNvbiAob3IgYSBzbWFsbCBncm91cCkgYW5kIG5vIGVmZmVjdGl2ZSBvdmVyc2VlaW5nIGJvYXJkIG9yIGNvbW1pdHRlZSB8CnwgNC4gU3VzcGVuc2lvbiBvciBkZWxpc3RpbmcgZnJvbSBzdG9jayBleGNoYW5nZSAgICAgICAgICAgICAgICAgICAgfAp8IDUuIG1hbmFnZW1lbnQgcmVwdXRhdGlvbiBpbiB0aGUgYnVzaW5lc3MgY29tbXVuaXR5IGlzIHBvb3IgICAgICAgIHwKfCA2LiBDb250aW51b3VzIHByb2JsZW1zIHdpdGggcmVndWxhdG9yeSBhZ2VuY2llcy4gICAgICAgICAgICAgICAgICB8CnwgNy4gSW50ZXJuYWwgb3IgZXh0ZXJuYWwgZmFjdG9ycyByYWlzZSBzdWJzdGFudGlhbCBkb3VidCBhYm91dCB0aGUgdGhlIGVudGl0eSBhYmlsaXR5IHRvIGNvbnRpbnVlIGlzIGEgY29uY2VybiB8CnwgOC4gSW5hYmlsaXR5IHRvIGdlbmVyYXRlIGNhc2ggZmxvd3MgZnJvbSBvcGVyYXRpb25zIHdoaWxlIHJlcG9ydGluZyBlYXJuaW5ncyBhbmQgZWFybmluZ3MgZ3Jvd3RoIHwKfCA5LiBUaGVyZSBoYXMgYmVlbiBhIGJyZWFrZG93biBpbiBhY2NvdW50aW5nIGFuZCBjb250cm9sIHN5c3RlbXMgYXMgcmVmbGVjdGVkIGJ5IHRoZSBsYXRlIGlzc3Vpbmcgb2YgZmluYW5jaWFsIHN0YXRlbWVudHMgb3IgYSBxdWFsaWZpZWQgYXVkaXQgcmVwb3J0IHwKfCAxMC4gVGhlcmUgaXMgYSBoaWdoIHR1cm5vdmVyIHJhdGUgb2Yga2V5IHRvcCBtYW5hZ2VtZW50LCBwYXJ0aWN1bGFybHkgZmluYW5jaWFsIGV4ZWN1dGl2ZXMgIHwKCgoqICoqTm90ZSoqOiBUaGVzZSAxMCBtb3N0IGltcG9ydGFudCByZWQgZmxhZ3MgYXBwbHkgdG8gTGVuZGVycyBhbmQgSW52ZXN0b3JzIGFzIHdlbGwKCgojIyMjIHJhbmtpbmcgb2YgbGVhc3QgaW1wb3J0YW50IAoKMS4gUHJlc3N1cmUgaXMgZXhlcnRlZCBvbiBhY2NvdW50aW5nIHBlcnNvbm5lbCB0byBjb21wbGV0ZSBmaW5hbmNpYWwgc3RhdGVtZW50cyBpbiBhbiB1bnVzdWFsbHkgc2hvcnQgcGVyaW9kIGFzIHJlZmxlY3RlZCBieSBhcHByb3ZhbCBkYXRlIG9mIGZpbmFuY2lhbCBzdGF0ZW1lbnRzLgoyLiBSYXBpZCBleHBhbnNpb24gaW50byBuZXcgcHJvZHVjdCBsaW5lcy4KMy4gVW51c3VhbGx5IGxvbmcgYnVzaW5lc3MgY3ljbGUuCjQuIEtleSBleGVjdXRpdmVzIGZlZWwgdW5kdWUgZmFtaWx5LCBwZWVyLCBvciBjb21tdW5pdHkgcHJlc3N1cmUgdG8Kc3VjY2VlZC4KNS4gVGhlIGVudGl0eSBoYXMgYSBzaWduaWZpY2FudCBpbnZlc3RtZW50IGluIGFuIGluZHVzdHJ5IG9yIHByb2R1Y3QKbGluZSBub3RlZCBmb3IgcmFwaWQgY2hhbmdlLgo2LiBLZXkgZXhlY3V0aXZlcyB3aXRoIHBlcmNlaXZlZCBpbmFkZXF1YXRlIGluY29tZXMgcmVsYXRpdmUgdG8KaW5kdXN0cnkuCjcuIExpbWl0ZWQgY29sbGF0ZXJhbCBhdmFpbGFibGUuCjguIEFkdmVyc2UgcG9saXRpY2FsLCBzb2NpYWwgb3IgZW52aXJvbm1lbnRhbCBpbXBhY3QuCjkuIERlY2xpbmluZyBkZW1hbmQgZm9yIHByb2R1Y3RzLgoxMC4gVGhlIGVudGl0eSBpcyBoZWF2aWx5IGRlcGVuZGVudCBvbiBvbmUgb3IgYSBmZXcgcHJvZHVjdHMsIGN1c3RvbWVycyBvciBzdXBwbGllcnMuCgoKCj4gImRpc2hvbmVzdCBhbmQgdW5ldGhpY2FsIG1hbmFnZW1lbnQiIGhhcyBiZWVuIGlkZW50aWZpZWQgYXMgX3RoZV8gbW9zdCBpbXBvcnRhbnQgcmVkIGZsYWcKCgoKIyMjIEV4dHJhIFJlZCBGbGFncyDwn5qpCgotIE1lcmdlciBhbmQgZGUtbWVyZ2VyIG9mIGdyb3VwIGNvbXBhbmllcy4KCi0gU2lnbmlmaWNhbnQgcHJlc2VuY2Ugb2YgZmluYW5jaWFsIGV4ZWN1dGl2ZXMgaW4gdGhlIHRvcCBtYW5hZ2VtZW50IGVjaGVsb24uCgotIEEgY2hhbmdlIGluIGZpbmFuY2lhbCB5ZWFyLWVuZHMgKG1ha2luZyBhY2NvdW50aW5nIHJlc3VsdHMgaW5jb21wYXJhYmxlKS4KCi0gU2l6ZSBvZiB0aGUgYXVkaXRpbmcgZmlybSBpbiByZWxhdGlvbiB0byB0aGUgY2xpZW50LgoKLSBMaW1pdGVkIG1hbmFnZW1lbnQgb3ZlcnNlZWluZyBvZiByZW1vdGUgb3BlcmF0aW9ucy4KCi0gVW5za2lsbGVkLCBpbmV4cGVyaWVuY2VkIGV4ZWN1dGl2ZXMgcHJvbW90ZWQgaW50byBwb3NpdGlvbnMgcHJlbWF0dXJlbHkuCgotIEZyZXF1ZW50IGNvcnBvcmF0ZSByZXN0cnVjdHVyaW5nLgoKLSBTaWduaWZpY2FudCBjaGFuZ2VzIGluIHRoZSBzdHJ1Y3R1cmUgb2YgdGhlIGluY29tZSwgZmVlcyBhbmQgaW50ZXJlc3QuCgotIEdvb2QgbmV3cyB0aGF0IGlzIHRvbyBnb29kIHRvIGJlIHRydWUuCgotIFdpZGUgZmx1Y3R1YXRpb25zIGluIGZpbmFuY2lhbCByYXRpb3MgZnJvbSB5ZWFyIHRvIHllYXIuCgotIFNoYXJlIG9wdGlvbnMgYmVpbmcgcmUtcHJpY2VkLgoKCiMjIyBDb25jbHVzaW9uCgpUbyBtYW5hZ2UgdGhlIHJpc2sgb2YgZnJhdWQsIGluY2x1ZGluZyBmaW5hbmNpYWwgc3RhdGVtZW50IGZyYXVkLCBhbiBlbnRpdHkgc2hvdWxkIGFkZHJlc3MgdGhlIHByb2JsZW0gaG9saXN0aWNhbGx5LiBNZWFzdXJlcyB0byBwcmV2ZW50LCBkZXRlY3QgYW5kIGludmVzdGlnYXRlIGZyYXVkIHNob3VsZCBiZSBpbiBwbGFjZS4gVGhlIHJpc2sgb2YgZmluYW5jaWFsIHN0YXRlbWVudCBmcmF1ZCBpcyBjbGVhcmx5IGEgcmVzcG9uc2liaWxpdHkgb2YgdGhlIGJvYXJkIG9mIGRpcmVjdG9ycywgb3IgaXRzIGVxdWl2YWxlbnQgaW4gb3RoZXIgb3JnYW5pc2F0aW9uYWwgc3RydWN0dXJlcywgZXNwZWNpYWxseSB0aGUgbm9uLWV4ZWN1dGl2ZSBtZW1iZXJzLiAKCgoKCgoKCgojIyBMb2FuIE1hbmFnZW1lbnQgUmVkIEZsYWdzCgoKRml2ZSBzdGVwcyB0aGF0IGxlbmRlcnMgc2hvdWxkIHRha2Ugd2hlbiBjb25mcm9udGluZyBhIHByb2JsZW0gbG9hbiwgaW5jbHVkaW5nOiAKCjEuIEtub3cgdGhlIGZhY3RzIGFib3V0IHRoZSBib3Jyb3dlci4gCjIuIElkZW50aWZ5IHRoZSBjb21wYW554oCZcyBhbmQgdGhlIGJhbmsncyBwcm9ibGVtcyB3aXRoIHRoZSBsb2FuLiAKMy4gRGV0ZXJtaW5lIHBvc3NpYmxlIGNvdXJzZXMgb2YgYWN0aW9uLiAKNC4gQ3JlYXRlIGEgcHJvYWN0aXZlLCBvYmplY3RpdmUtYmFzZWQgYWN0aW9uIHBsYW4uIAo1LiBFc3RhYmxpc2ggYSBwcm9ncmFtIHRvIG1vbml0b3IgdGhlIGZpcm0uCgoKCi0gRmluZCByZWQgZmxhZ3MgYnkgZXhhbWluaW5nIHRoZSBmaXJtJ3MgZmluYW5jaWFsIHN0YXRlbWVudHMsIG9ic2VydmluZyB0aGUgY29tcGFueSdzIGludGVybmFsIG9wZXJhdGlvbnMsIGFuZCB1bmRlcnN0YW5kaW5nIHRoZSBib3Jyb3dlcidzIGluZHVzdHJ5LgoKCj4gIlJlZCBmbGFncyBhbG1vc3QgYWx3YXlzIGFwcGVhciBiZWZvcmUgdGhlcmUgaXMgYSBwYXltZW50IGRlZmF1bHTigJ0KCgpSZWQgZmxhZ3MtaW5kaWNhdG9ycyB0aGF0IGEgYnVzaW5lc3MgbWlnaHQgYmUgaGF2aW5nIHByb2JsZW1zOgoKLSBleGFtaW5pbmcgdGhlIGZpcm0ncyBmaW5hbmNpYWwgc3RhdGVtZW50cwotIG9ic2VydmluZyB0aGUgY29tcGFueSdzIGludGVybmFsIG9wZXJhdGlvbnMKLSB1bmRlcnN0YW5kaW5nIHRoZSBib3Jyb3dlcidzIGluZHVzdHJ5LgoKCkxlbmRlcnM6CgotIGxvb2sgZm9yIGluZGljYXRvcnMgdGhhdCBoYXZlIHRoZSBncmVhdGVzdCBpbXBhY3Qgb24gZmluYW5jaWFsIHBlcmZvcm1hbmNlLCBzdWNoIGFzIGNhc2ggZmxvdywKYXNzZXQgdmFsdWVzLCBvciBjb2xsYXRlcmFsIGNvdmVyYWdlLCBhbmQgY29ubmVjdCB0aGUgZG90cyBiZXR3ZWVuIHRoZW0gdG8gZ2V0IGEgZnVsbCBmaW5hbmNpYWwgcGljdHVyZS4KCgoKCiMjIyBWICYgQyBGcmFtZXdvcmsgCgoiViIgc3RhbmRzIGZvciBjb21wYW55IHZpYWJpbGl0eS4gIkMiIHN0YW5kcyBmb3IgY29sbGF0ZXJhbCBhbmQgYXNzZXQgdmFsdWVzLgoKfCB2aWFiaWxpdHkgfCBjb2xsYXRlcmFsIHwgbWVhbmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IDotLS0tLS0tLSB8IDotLS0tLS0tLS0gfCA6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8CnwgKCAtICkgICAgIHwgKCAtICkgICAgICB8IGRpc3RyZXNzZWQgc2FsZSBvciBhIGxpcXVpZGF0aW9uLCBmb3JlY2xvc3VyZSwgb3Igd2luZC1kb3duIHNjZW5hcmlvIHwKfCAoIC0gKSAgICAgfCAoICsgKSAgICAgIHwgb3JkZXJseSBzYWxlIG9yIGxpcXVpZGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8ICggKyApICAgICB8ICggLSApICAgICAgfCBwb3RlbnRpYWwgZm9yIGEgdHVybmFyb3VuZCBvciByZXN0cnVjdHVyaW5nLiAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgKCArICkgICAgIHwgKCArICkgICAgICB8IGxpa2VseSBmYWxzZSBhbGFybSwgZmlybSBpcyBoZWFsdGh5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKCgoKIyMjIEdlbmVyYWwgUHJpbmNpcGxlcwoKKiBNYWtlIHN1cmUgdGhlIGRvY3VtZW50YXRpb24gSXMgYWNjdXJhdGUgYW5kIGNvbXBsZXRlLgoqIENvbW11bmljYXRlIGNsZWFybHkgYW5kIGVmZmVjdGl2ZWx5IHdpdGggeW91ciBjdXN0b21lci4KKiBFdmFsdWF0ZSBhIGZpcm0ncyBtYW5hZ2VtZW50IHRvIGRldGVybWluZSBpZiBpdCBuZWVkcyBoZWxwIG9yIHNob3VsZCBiZSByZXBsYWNlZC4KKiBSZW1lbWJlciB0aGF0IHRoZSBiYW5rIGNvbnRyb2xzIHRoZSBsb2FuLCBidXQgaXQgZG9lc24ndCBjb250cm9sIHRoZSBib3Jyb3dlci4KKiBHZXQgdmFsdWUgaW4gcmV0dXJuIGZvciBsb2FuIHdhaXZlcnMgb3IgYW1lbmRtZW50cy4KKiBBdm9pZCBwdXR0aW5nIG5ldyBtb25leSBpbnRvIGEgbGVuZGVyIHdpdGggYSB0cm91YmxlZCBsb2FuLgoqIFdvcmsgY2xvc2VseSB3aXRoIHRoaXJkIHBhcnRpZXM6IG90aGVyIGxlbmRlcnMsIGd1YXJhbnRvcnMsIG9yIGVxdWl0eSBob2xkZXJzLgoKCiMjIyBUaXBzIGZvciBTdWNjZXNzCgoqIFN0YXkgY2xvc2UgdG8gdGhlIGJvcnJvd2VyLiBNYWtlIHN1cmUgeW91IHVuZGVyc3RhbmQgdGhlIGtleSBpc3N1ZXMgYW5kIHdoYXQncyBnb2luZyBvbi4gUmVmdXNlIHRvIGJlIGlnbm9yYW50LgoqIERvbid0IGxldCBwZXJzb25hbCByZWxhdGlvbnNoaXBzIGNsb3VkIHlvdXIganVkZ21lbnQuIFlvdSBuZWVkIHRvIHN0YXkgb2JqZWN0aXZlLiBZb3UgbmVlZCB0byBzdGF5IHNtYXJ0LiBDb21tdW5pY2F0ZSBJbiBhIGNsZWFyIGFuZCBob25lc3Qgd2F5LgoqIE1pbmltaXplIGJhZCBwdWJsaWNpdHkgYW5kIGJlIHNlbnNpdGl2ZSB0byBsZW5kZXIgbGlhYmlsaXR5IGFuZCBDb21tdW5pdHkgUmVpbnZlc3RtZW50IEFjdCBpc3N1ZXMuCiogTWFpbnRhaW4gYXR0ZW50aW9uIHRvIGRldGFpbCB3aGlsZSBrZWVwaW5nIHRoZSBvdmVyYWxsIGFjdGlvbiBwbGFuIGluIHZpZXcuCiogQmUgdmlnaWxhbnQgZm9yIHJlZCBmbGFncyB0aGF0IGluZGljYXRlIGJvcnJvd2VyIHRyb3VibGVzLgoqIFN0YXkgdXAtdG8tZGF0ZSBvbiBpbmR1c3RyeS13aWRlIGlzc3VlcyB0aGF0IGFmZmVjdCB5b3VyIGJvcnJvd2VycywgYXMgd2VsbCBhcyB0aGVpciBpbnRlcm5hbCBvcGVyYXRpb25hbCBhbmQgZmluYW5jaWFsIGlzc3Vlcy4KKiBVbmRlcnN0YW5kIHRoZSBsZWdhbCBpc3N1ZXMuCiogTWFrZSBzdXJlIHlvdXIgYWN0aW9uIHBsYW4gZml0cyB0aGUgZmFjdHMgYW5kIHNvbHZlcyB5b3VyIHByb2JsZW1zIGFuZCB0aG9zZSBvZiB0aGUgYm9ycm93ZXIuCiogU2hvdyBhIHNlbnNlIG9mIHVyZ2VuY3kuIFRpbWUgY2FuIHdvcmsgYWdhaW5zdCB5b3UsIHNvIHlvdSBuZWVkIHRvIG1vdmUgcXVpY2tseS4KKiBGb2N1cyBvbiBiZXR0ZXIgbG9hbiBhbmQgY29sbGF0ZXJhbCBjb250cm9sIGFuZCBiZSBtaW5kZnVsIG9mIHlvdXIgcmlza3MuCiogQWx3YXlzIGJlIGZhaXIgYW5kIHByb2Zlc3Npb25hbCB3aXRoIHlvdXIgY3VzdG9tZXIuCgoKCgojIyBGYWxzaWZpZWQgRmluYW5jaWFsIFN0YXRlbWVudHMKCkEgcmVjZW50IHRyZW5kIGluIHRoZSBmcmF1ZCBkZXRlY3Rpb24gYXQgZmluYW5jaWFsIHN0YXRlbWVudHMgaXMgdGhlIHVzZSBvZiBhdXRvbWF0ZWQgcHJvY2Vzc2VzIHdpdGggcG90ZW50aWFsIGFkZGl0aW9uYWwgYW5hbHl0aWNhbCBwcm9jZWR1cmVzIHVzaW5nIG11bHRpY3JpdGVyaWEgZGVjaXNpb24gYWlkIGFuYWx5c2lzLCBuZXVyYWwgbmV0d29ya3MsIG1hY2hpbmUgbGVhcm5pbmcgdGVjaG5pcXVlcywgZGF0YSBtaW5pbmcgbWV0aG9kcywgc3VwcG9ydCB2ZWN0b3IgbWFjaGluZXMgb3IgaW4gZ2VuZXJhbCwgY29tcHV0YXRpb25hbCBpbnRlbGxpZ2VuY2UtYmFzZWQgbWV0aG9kcyAoU3BhdGhpcyBldCBhbC4gMjAwMjsgS290c2lhbnRpcyBldCBhbC4gMjAwNjsgV2VzdCBhbmQgQmhhdHRhY2hhcnlhIDIwMTY7IFNhZGFzaXZhbSBldCBhbC4gMjAxNjsgT21hciBldCBhbC4gMjAxNzsgSmFuIDIwMTgpLgoKCkF1ZGl0b3JzIGlkZW50aWZpZWQgMTkgY2FzZXMgdGhhdCBpbXBseSBmYWxzaWZpY2F0aW9ucywgYW5hbHlzaXMgb2YgdGhlc2UgY2FzZXMgZGV0ZWN0ZWQgNzMgbWFuaXB1bGF0aW9ucy4gClRoZSBoaWdoZXN0IGZhbHNpZmljYXRpb25zOiAKCi0gUHJvdmlzaW9ucyB3aXRoIDI0LjclCi0gTGlhYmlsaXRpZXMgKGxvbmctIG9yIHNob3J0LXRlcm0pIHdpdGggMjAuNSUKLSBBc3NldCBEZXByZWNpYXRpb24gKDEzLjclCi0gSW52ZW50b3JpZXMgKDEyLjMlKQotIFJldmVudWVzICgxMS4lKQotIEV4cGVuc2VzICg5LjYlKQoKCk9mIHRoZSBzYW1wbGVkIGZpcm1zLCBmcmF1ZCBvY2N1cnJlZCBtYWlubHkgaW4gdGhlc2Ugc2VjdG9yczoKCi0gY29uc3RydWN0aW9ucyAoMjYuMCUpCi0gbWFudWZhY3R1cmluZyAoMjQuNyUpCi0gY29tbWVyY2lhbCAoMjAuNSUpCi0gc2hpcHBpbmcgKDE2LjQlKQotIHRlY2hub2xvZ3kgKDYuOSUpCi0gcmVuZXdhYmxlIGVuZXJneSBzb3VyY2VzICg1LjUlKQoKIyMjIERhdGEgTWluaW5nIEFuYWx5c2lzCgpUaGUgc3R1ZHkgZGlkIGRhdGEgbWluaW5nIG9uIHRleHRzLCByZW1vdmVkIHN0b3B3b3JkcyBhbmQgY29tcGFyZWQ6IHRvdGFsIGFzc2V0cywgIHNoYXJlaG9sZGVycyBmdW5kcywgbmV0IGluY29tZSwgb3BlcmF0aW5nIHJldmVudWUsIGNhc2ggZmxvdyAoVEFTU0UsIFNGVU5ELCBORVRJTiwgT1BSRVYsIENGTE9XKS4gQWxsIHAtdmFsdWVzIGFyZSBhYm92ZSAwLjI0NS4gRkZTIGlzIGZhbHNpZmllZC4KCi0gVEFTU0UgbWVhbiBGRlMgdnMgTWVhbiBub24tRkZTICAgIDEyNzIgOiAyNzcKLSBTRlVORCBtZWFuIEZGUyB2cyBNZWFuIG5vbi1GRlMgICAgNDA0IDogMTIzCi0gTkVUSU4gbWVhbiBGRlMgdnMgTWVhbiBub24tRkZTICAgIC0yNyA6IC04LjgKLSBDRkxPVyBtZWFuIEZGUyB2cyBNZWFuIG5vbi1GRlMgICAgNy43IDogLTMuOAoKVGhlIGdyYXBoIHBsb3RzLCBmYWxzaWZpZWQgdnMgY29udHJvbCBzaG93IG5lYXJseSBkb3VibGUgdGhlIHZvY2FidWxhcnkgb2YgdGhlIGNvbnRyb2wgdm9jYWJ1bGFyeS4gT25lIGV4cGxhbmF0aW9uIGlzIHRoYXQgdGhlIGF1ZGl0b3JzIHRyeSB0byBkZXNjcmliZSBpbiBtYW55IGRpZmZlcmVudCB3b3JkcyBhbmQgd29yZCBwYWlycyB0aGUgYWJub3JtYWxpdGllcyB0aGV5IGZpbmQgaW4gZmFsc2lmaWVkIGZpbmFuY2lhbCBzdGF0ZW1lbnRzLiAKCkZhbHNpZmllZCB0ZXh0cyBsYXJnZWx5IHVzZSBzaW5nbGUgd29yZHMsIHN1Y2ggYXM6IAoKLSDigJxldmFsdWF0aW9uLCBwbGFuLCBwcm9ibGVtcywgVkFULCB0YXhhdGlvbiwgcHJlcmVxdWlzaXRlcywgY29tcGxpYW5jZSwgbG9uZyB0ZXJtLCBsb2Fucywgc2hvdWxkX2hhdmUsIHJlZm9ybWVkLCBtaXN0YWtlcywgYmFua3MsIGNvbmNpbGlhdGlvbiwgcmlzZXMsIGNyZWRpdG9ycywgcmVzdHJ1Y3R1cmXigJ0sIGV0Yy4KCgoKCiMjIEZyYXVkIFJlZCBGbGFncyBFdmlkZW5jZQoKClN1cnZleWVkIDE5NCBleHBlcmllbmNlZCwgbm9ucHJvZmVzc2lvbmFsIGludmVzdG9ycyB0byBleGFtaW5lIHRoZSByZWxhdGlvbnMgYmV0d2VlbiB0aGVpciBwZXJjZXB0aW9ucyBvZiB0aGUgZnJlcXVlbmN5IG9mIGZpbmFuY2lhbCByZXBvcnRpbmcgZnJhdWQsIHRoZWlyIHVzZSBvZiBmaW5hbmNpYWwgc3RhdGVtZW50IGluZm9ybWF0aW9uLCB0aGUgaW1wb3J0YW5jZSB0aGV5IHBsYWNlIG9uIGNvbmR1Y3RpbmcgdGhlaXIgb3duIGZyYXVkIHJpc2sgYXNzZXNzbWVudHMsIGFuZCB0aGVpciB1c2Ugb2YgZnJhdWQgcmVkIGZsYWdzLgoKClJlZCBmbGFncyBjb21tb25seSByZWxpZWQgdXBvbiBpbmNsdWRlIFNFQyBpbnZlc3RpZ2F0aW9ucywgcGVuZGluZyBsaXRpZ2F0aW9uLCB2aW9sYXRpb25zIG9mIGRlYnQgY292ZW5hbnRzLCBhbmQgaGlnaCBtYW5hZ2VtZW50IHR1cm5vdmVyLiBJbnZlc3RvcnMgcmVseSBsZXNzIG9uIGNvbXBhbnkgc2l6ZSBhbmQgYWdlLCB0aGUgbmVlZCBmb3IgZXh0ZXJuYWwgZmluYW5jaW5nLCBhbmQgdGhlIHVzZSBvZiBhIG5vbi1CaWcgNCBhdWRpdG9yLgoKUHJpb3IgcmVzZWFyY2ggaWRlbnRpZmllcyB0aHJlZSBmYWN0b3JzIHRoYXQgYXJlIHR5cGljYWxseSBwcmVzZW50IHdoZW4gZnJhdWQgb2NjdXJzLiAiZnJhdWQgdHJpYW5nbGUsIiBhcmUgaW5jZW50aXZlcywgb3Bwb3J0dW5pdGllcywgYW5kIGF0dGl0dWRlcy4KCiMjIyBJbnZlc3RvcnMgYW5kIHJlZCBmbGFncwoKMS4gd2hlbiBpbmRpdmlkdWFscyBwZXJjZWl2ZSBpbmNyZWFzZWQgcmlzayBvZiBtb25ldGFyeSBsb3NzIGZyb20gc29tZSBhY3Rpb24gdGhleSBpbnZlc3QgYWRkaXRpb25hbCBlZmZvcnQgaW4gYWN0aXZpdGllcyB0byBzZWxmLWluc3VyZSBhZ2FpbnN0IHRoYXQgbG9zcyAKMi4gaW52ZXN0b3JzIGNhbiBjaG9vc2UgZnJvbSB2YXJpb3VzIHNvdXJjZXMgb2YgaW5mb3JtYXRpb24gaW5jbHVkaW5nIGZpbmFuY2lhbCBkYXRhIHRoYXQgaXMgcHJvdmlkZWQgZGlyZWN0bHkgYnkgZmlybSBtYW5hZ2VtZW50CjMuIGludmVzdG9ycyB3aG8gYXJlIHNhdnZ5IGVub3VnaCB0byByZWFkIGZpbmFuY2lhbCBzdGF0ZW1lbnRzIG1heSBzZWVrIHRvIGFzc2VzcyB0aGUgbGlrZWxpaG9vZCBvZiBmcmF1ZCBhcyBwYXJ0IG9mIHRoZWlyIGZpbmFuY2lhbCBzdGF0ZW1lbnQgYW5hbHlzZXMuCjQuIGludmVzdG9ycyB3aG8gY2hvb3NlIGluZm9ybWF0aW9uIGZyb20gc2Vjb25kYXJ5IHNvdXJjZXMgbWF5IGRvIHNvIGJlY2F1c2UgdGhleSBsYWNrIGNvbmZpZGVuY2UgaW4gdGhlaXIgb3duIGFiaWxpdHkgdG8gY29tcHJlaGVuZCBhbmQgYW5hbHl6ZSBjb21wbGV4IGFjY291bnRpbmcgaW5mb3JtYXRpb24gZm91bmQgaW4gYSBmaXJt4oCZcyBmaW5hbmNpYWwgc3RhdGVtZW50cyMKCgpXaXRoIHJlc3BlY3QgdG8gZmluYW5jaWFsIHN0YXRlbWVudCBpbmZvcm1hdGlvbiwgaW52ZXN0b3JzIHJlbHkgbW9yZSBvbiBiYWxhbmNlIHNoZWV0IGRhdGEgYW5kIGxlc3Mgb24gZm9vdG5vdGVzIHRvIHRoZSBmaW5hbmNpYWwgc3RhdGVtZW50cy4gSW4gcmVsYXRpb24gdG8gb3RoZXIgaW5mb3JtYXRpb24gc291cmNlcywgaW52ZXN0b3JzIHJlbHkgbW9yZSBvbiBzdG9jayBwcmljZSwgYWR2aWNlIGZyb20gcHJvZmVzc2lvbmFscywgYW5kIGNvbXBhbnkgcmlzay4gVGhleSByZWx5IGxlc3Mgb24gbm9uZmluYW5jaWFsIGluZm9ybWF0aW9uIHJlbGF0ZWQgdG8gb3BlcmF0aW9ucywgYWR2aWNlIGZyb20gdGhlIG1lZGlhLCBhbmQgYWR2aWNlIGZyb20gbm9ucHJvZmVzc2lvbmFscy4KCgpJbnZlc3RvcnMgcmVseSBtb3JlIG9uIHJlZ3VsYXRvcnMsIGV4dGVybmFsIGF1ZGl0b3JzLCBhbmQgYW5hbHlzdHMgdG8gZGV0ZWN0IGFuZCByZXBvcnQgZnJhdWQuIEludmVzdG9ycyByZWx5IGxlc3Mgb24gdXBwZXIgbWFuYWdlbWVudCwgbG93L21pZC1sZXZlbCBlbXBsb3llZXMsIHRoZSBtZWRpYSwgYW5kIHNob3J0IHNlbGxlcnMgdG8gdW5jb3ZlciBmcmF1ZC4KCgoKCgouLi4KCgojIFJlZmVyZW5jZQoKLSBTYW5kaHUsIE5hbXJhdGEuIDIwMjAuIF9CZWhhdmlvdXJhbCBSZWQgRmxhZ3Mgb2YgRnJhdWQ6IEFuIEV4IFBvc3QgQXNzZXNzbWVudCBvZiBUeXBlcyBhbmQgRnJlcXVlbmNpZXMuXyBHbG9iYWwgQnVzaW5lc3MgUmV2aWV3LCAyMSgyKSA1MDctNTI1LiBET0k6IDEwLjExNzcvMDk3MjE1MDkxOTg1MDQxMAoKLSBLb29ybmhvZiwgQy4gMjAwMC4gX1JlZCBmbGFnZ2luZyBhcyBhbiBpbmRpY2F0b3Igb2YgZmluYW5jaWFsIHN0YXRlbWVudCBmcmF1ZDogVGhlIHBlcnNwZWN0aXZlIG9mIGludmVzdG9ycyBhbmQgbGVuZGVyc18uIERlcGFydG1lbnQgb2YgQWNjb3VudGluZyBhbmQgRmluYW5jZSwgVW5pdmVyc2l0eSBvZiBQcmV0b3JpYS4gTWVkaXRhcmkgQWNjb3VudGluZyBSZXNlYXJjaCwgdm9sLjggMjAwMCwgNjktOTMKCi0gTWNMYXVnaGxpbiwgS2V2aW4uIDIwMDkuIF9Qcm9ibGVtIExvYW4gTWFuYWdlbWVudDogS25vdyB0aGUgUmVkIEZsYWdzIGFuZCBNb3ZlIFF1aWNrbHlfLiBUaGUgUk1BIEpvdXJuYWwsIFBoaWxhZGVscGhpYS4gVm9sIDkxLCBpc3N1ZSAxMC4gNjYtNjguCgotIEt5ZHJvcywgRGltaXRyaW9zLCBQYXphcnNraXMsIE1pY2hhaWwgJiBLYXJha2l0c2lvdSwgQXRoYW5hc2lhLiAyMDIyLiBfQSBmcmFtZXdvcmtmb3IgaWRlbnRpZnlpbmcgdGhlIGZhbHNpZmllZCBmaW5hbmNpYWwgc3RhdGVtZW50cyB1c2luZyBuZXR3b3JrIHRleHR1YWwgYW5hbHlzaXM6IGEgZ2VuZXJhbCBtb2RlbCBhbmQgdGhlIEdyZWVrIGV4YW1wbGVfLiBBbm5hbHMgb2YgT3BlcmF0aW9ucyBSZXNlYXJjaC4gMzE2OjUxMy01MjcuIGh0dHBzOi8vZG9pLm9yZy8xMC4xMDA3L3MxMDQ3OS0wMjEtMDQwODYtMAoKCi0gQnJhemVsLCBKb3NlcGggRi4sIEpvbmVzLCBLZWl0aCBMLiwgVGhheWVyLCBKYW5lICYgV2FybmUsIFJpY2sgQy4gMjAxNS4gX1VuZGVyc3RhbmRpbmcgaW52ZXN0b3IgcGVyY2VwdGlvbnMgb2YgZmluYW5jaWFsIGZyYXVkIGFuZCB0aGVpciB1c2Ugb2YgcmVkIGZsYWdzOiBldmlkZW5jZSBmcm9tIHRoZSBmaWVsZF8uIFJldiBBY2NvdW50IFN0dWQgMjA6IDEzNzMtMTQwNi4gRE9JIDEwLjEwMDcvczExMTQyLTAxNS05MzI2LXkKCgoKCgoK