Recommender System Type:
Fidelity uses a personalized investment recommender system, which
combines rule-based filtering, collaborative filtering, and machine
learning models.
How It Works:
- Personalized Portfolio Recommendations: Based on a
user’s financial goals, risk tolerance, time horizon, and investment
preferences, Fidelity recommends mutual funds, ETFs, or managed
portfolios.
- Behavioral & Account Data: Uses account
activity, past investment choices, and browsing behavior to tailor
suggestions.
- Educational Content Recommendations: Suggests
relevant financial articles, webinars, and tools based on what the user
has viewed or searched for.
Why It’s Notable:
Fidelity’s platform goes beyond basic recommendations—it integrates
with robo-advisory tools like Fidelity Go and uses AI to help users make
informed, personalized investment decisions. # Scenario Design Questions
for Fidelity’s Recommender System
1. What is the user goal or task?
- Goal: Users aim to make informed decisions
regarding their investment choices, such as selecting mutual funds,
stocks, or retirement plans. The recommender system’s goal is to provide
personalized investment suggestions based on the user’s financial goals,
risk tolerance, and investment history.
- Example: A user looking to plan for retirement
might be recommended a set of low-risk, long-term investment options,
while someone looking for growth in the short-term might receive
higher-risk investment suggestions.
2. What type of data is used to make recommendations?
- Data Used: Fidelity’s recommender system uses a
combination of financial data (such as account balances, investment
types, and transaction history), user preferences (e.g., risk tolerance,
investment goals, time horizon), and market data (e.g., performance of
different asset classes, stocks, or mutual funds). The system may also
analyze user behavior (such as how often they check their portfolio or
the types of investments they’ve shown interest in) and demographic
information (age, income, financial goals).
- Example: A user’s risk profile and age would
heavily influence the recommendations. If a user is young and willing to
take on higher risk, the system may suggest growth-focused funds. If a
user is nearing retirement, it would likely suggest more stable,
income-generating investments like bonds or index funds.
3. How are recommendations delivered or presented to users?
- Delivery Method: Recommendations are delivered in a
personalized dashboard or on the homepage of the Fidelity platform.
Users can view recommendations in various sections, such as “Recommended
Funds for You,” “Portfolio Builder,” or “Suggested Investment
Strategies.” Fidelity also provides interactive tools, such as
retirement planning calculators or portfolio analysis, to help users
evaluate the impact of different investment choices.
- Example: A user logging into Fidelity might see a
section titled “Recommended for You,” which includes curated investment
options tailored to their profile. They could also receive suggestions
through email or app notifications about new opportunities or
adjustments to their portfolio based on market trends or their evolving
financial goals.
Scenario Design for Fidelity Investments (the Organization)
1. Situation
Fidelity wants to help users find suitable investment options—such as
mutual funds, ETFs, and retirement plans—without requiring deep
financial expertise. Customers often feel overwhelmed by the large
number of investment choices.
2. Motivation
By guiding users to appropriate investments, Fidelity improves
customer satisfaction, increases product engagement, and boosts AUM
(assets under management). Recommender systems help convert undecided
visitors into loyal clients.
3. Expected Action
Fidelity expects users to engage with recommended products—view
details, compare options, and eventually invest. It also expects that
users will trust the system enough to rely on its guidance over time,
leading to repeat visits and portfolio growth.
Scenario Design for Fidelity’s Customers (the Users)
1. Situation
A user logs into Fidelity’s website or app, looking to invest for
retirement or diversify their portfolio. They have general goals but
aren’t sure which investments fit their needs, and they’re overwhelmed
by hundreds of options.
2. Motivation
The user wants to make informed financial decisions with minimal
stress. They want recommendations that are aligned with their goals
(e.g., retirement, saving for a home, maximizing returns while
minimizing risk).
3. Expected Action
The user expects to see a curated list of investment products that
match their risk profile, goals, and interests. Ideally, they’ll explore
the suggestions, feel confident in the reasoning behind them, and make
an investment decision.
Does it Make Sense to Do Both Scenario Designs?
Yes. - From Fidelity’s side, scenario design helps optimize the
recommender engine to increase engagement, retention, and revenue. -
From the user’s side, scenario design ensures the system actually meets
customer needs, builds trust, and makes financial decision-making
easier.
Understanding both perspectives ensures that the system is designed
with empathy, strategy, and effectiveness.
Recommendations for the website
After logging in, users may see investment suggestions under
categories like: - “Suggested for You” - “Top
Picks Based on Your Portfolio” - “Funds to
Consider”
Educational Content Recommendations
Fidelity also recommends blog posts, webinars, and tutorials
personalized to the user’s investment level or recent searches.
Analysis of Scenario Design
Scenario Design
This section explain the industry report.
Scenario Design
Recommendations to Improve Fidelity’s Recommender System
- Enhance Transparency and Explainability
- Why: Many users may be hesitant to trust financial
recommendations without understanding why they’re being made.
- ✅ Add “Why this was recommended” explanations next to
suggestions.
- ✅ Use plain language to describe key factors: e.g., “We
suggested this ETF because it diversifies your tech-heavy
portfolio.”
- Incorporate Real-Time Sentiment and News Data
- Why: Investors increasingly react to financial
news, social media sentiment, and global events.
- ✅ Integrate news and social sentiment (e.g., from Twitter,
Reddit, or financial blogs) into the recommendation
algorithm.
- ✅ Highlight trending funds with a sentiment score or recent
news impact.
- Introduce Goal-Based Recommendation Tracks
- Why: Not all investors think in terms of products —
many think in terms of goals (e.g., buying a house, retirement, travel).
- ✅ Let users choose or customize life goals, and deliver
recommendation “tracks” that help meet those objectives.
- ✅ Track progress visually and suggest adjustments when
market conditions shift.
- Use Collaborative Filtering Across Similar
Investors
- Why: Investors may benefit from patterns among
peers with similar goals or risk profiles.
- ✅ Recommend portfolios or strategies that people with
similar profiles have used successfully.
- ✅ Offer “community insight” anonymized data: “80% of
investors with your profile added X last quarter.”
- Improve Engagement with Adaptive Learning Systems
- Why: Fidelity can better refine recommendations the
more it learns from users.
- ✅ Let users give feedback on recommendations: “Not
interested,” “Too risky,” “Already own similar.”
- ✅ Use this to train adaptive machine learning models and
refine future suggestions.
- Personalize Educational Content More Deeply
- Why: Many new investors want to learn before
acting.
- ✅ Tie content recommendations directly to user portfolios
or missed opportunities.
- For example: “You’re underinvested in international
stocks — here’s a 3-minute read explaining the benefits.”
- Leverage Mobile Behavior for In-App
Micro-Recommendations
- Why: Many users check investments briefly on mobile
— small, timely tips can boost engagement.
- ✅ Show quick recommendations like: “Consider rebalancing —
your tech exposure rose 12%.”
- ✅ Enable “Swipe to Save” or “Remind Me Later” actions for
low-friction engagement.
LS0tDQp0aXRsZTogIkRpc2N1c3Npb24gMTFfRmlkZWxpdHkgSW52ZXN0bWVudHMgUmVjb21tZW5kZXIgU3lzdGVtIEFuYWx5c2lzIg0KYXV0aG9yOiAiTWQuIFRhbnppbCBFaHNhbiINCm91dHB1dDoNCiAgb3BlbmludHJvOjpsYWJfcmVwb3J0OiBkZWZhdWx0DQogIGh0bWxfZG9jdW1lbnQ6IGRlZmF1bHQNCi0tLQ0KDQojIyBXZWJzaXRlOiBGaWRlbGl0eSBJbnZlc3RtZW50cyxMaW5rOmh0dHBzOi8vd3d3LmZpZGVsaXR5LmNvbQ0KDQojIyMgUmVjb21tZW5kZXIgU3lzdGVtIFR5cGU6DQpGaWRlbGl0eSB1c2VzIGEgcGVyc29uYWxpemVkIGludmVzdG1lbnQgcmVjb21tZW5kZXIgc3lzdGVtLCB3aGljaCBjb21iaW5lcyBydWxlLWJhc2VkIGZpbHRlcmluZywgY29sbGFib3JhdGl2ZSBmaWx0ZXJpbmcsIGFuZCBtYWNoaW5lIGxlYXJuaW5nIG1vZGVscy4NCg0KIyMjIEhvdyBJdCBXb3JrczoNCi0gKipQZXJzb25hbGl6ZWQgUG9ydGZvbGlvIFJlY29tbWVuZGF0aW9ucyoqOiBCYXNlZCBvbiBhIHVzZXLigJlzIGZpbmFuY2lhbCBnb2FscywgcmlzayB0b2xlcmFuY2UsIHRpbWUgaG9yaXpvbiwgYW5kIGludmVzdG1lbnQgcHJlZmVyZW5jZXMsIEZpZGVsaXR5IHJlY29tbWVuZHMgbXV0dWFsIGZ1bmRzLCBFVEZzLCBvciBtYW5hZ2VkIHBvcnRmb2xpb3MuDQotICoqQmVoYXZpb3JhbCAmIEFjY291bnQgRGF0YSoqOiBVc2VzIGFjY291bnQgYWN0aXZpdHksIHBhc3QgaW52ZXN0bWVudCBjaG9pY2VzLCBhbmQgYnJvd3NpbmcgYmVoYXZpb3IgdG8gdGFpbG9yIHN1Z2dlc3Rpb25zLg0KLSAqKkVkdWNhdGlvbmFsIENvbnRlbnQgUmVjb21tZW5kYXRpb25zKio6IFN1Z2dlc3RzIHJlbGV2YW50IGZpbmFuY2lhbCBhcnRpY2xlcywgd2ViaW5hcnMsIGFuZCB0b29scyBiYXNlZCBvbiB3aGF0IHRoZSB1c2VyIGhhcyB2aWV3ZWQgb3Igc2VhcmNoZWQgZm9yLg0KDQojIyMgV2h5IEl04oCZcyBOb3RhYmxlOg0KRmlkZWxpdHnigJlzIHBsYXRmb3JtIGdvZXMgYmV5b25kIGJhc2ljIHJlY29tbWVuZGF0aW9uc+KAlGl0IGludGVncmF0ZXMgd2l0aCByb2JvLWFkdmlzb3J5IHRvb2xzIGxpa2UgRmlkZWxpdHkgR28gYW5kIHVzZXMgQUkgdG8gaGVscCB1c2VycyBtYWtlIGluZm9ybWVkLCBwZXJzb25hbGl6ZWQgaW52ZXN0bWVudCBkZWNpc2lvbnMuDQojIFNjZW5hcmlvIERlc2lnbiBRdWVzdGlvbnMgZm9yIEZpZGVsaXR5J3MgUmVjb21tZW5kZXIgU3lzdGVtDQoNCiMjIyAxLiBXaGF0IGlzIHRoZSB1c2VyIGdvYWwgb3IgdGFzaz8NCi0gKipHb2FsKio6IFVzZXJzIGFpbSB0byBtYWtlIGluZm9ybWVkIGRlY2lzaW9ucyByZWdhcmRpbmcgdGhlaXIgaW52ZXN0bWVudCBjaG9pY2VzLCBzdWNoIGFzIHNlbGVjdGluZyBtdXR1YWwgZnVuZHMsIHN0b2Nrcywgb3IgcmV0aXJlbWVudCBwbGFucy4gVGhlIHJlY29tbWVuZGVyIHN5c3RlbeKAmXMgZ29hbCBpcyB0byBwcm92aWRlIHBlcnNvbmFsaXplZCBpbnZlc3RtZW50IHN1Z2dlc3Rpb25zIGJhc2VkIG9uIHRoZSB1c2VyJ3MgZmluYW5jaWFsIGdvYWxzLCByaXNrIHRvbGVyYW5jZSwgYW5kIGludmVzdG1lbnQgaGlzdG9yeS4NCiAgLSAqKkV4YW1wbGUqKjogQSB1c2VyIGxvb2tpbmcgdG8gcGxhbiBmb3IgcmV0aXJlbWVudCBtaWdodCBiZSByZWNvbW1lbmRlZCBhIHNldCBvZiBsb3ctcmlzaywgbG9uZy10ZXJtIGludmVzdG1lbnQgb3B0aW9ucywgd2hpbGUgc29tZW9uZSBsb29raW5nIGZvciBncm93dGggaW4gdGhlIHNob3J0LXRlcm0gbWlnaHQgcmVjZWl2ZSBoaWdoZXItcmlzayBpbnZlc3RtZW50IHN1Z2dlc3Rpb25zLg0KDQojIyMgMi4gV2hhdCB0eXBlIG9mIGRhdGEgaXMgdXNlZCB0byBtYWtlIHJlY29tbWVuZGF0aW9ucz8NCi0gKipEYXRhIFVzZWQqKjogRmlkZWxpdHnigJlzIHJlY29tbWVuZGVyIHN5c3RlbSB1c2VzIGEgY29tYmluYXRpb24gb2YgZmluYW5jaWFsIGRhdGEgKHN1Y2ggYXMgYWNjb3VudCBiYWxhbmNlcywgaW52ZXN0bWVudCB0eXBlcywgYW5kIHRyYW5zYWN0aW9uIGhpc3RvcnkpLCB1c2VyIHByZWZlcmVuY2VzIChlLmcuLCByaXNrIHRvbGVyYW5jZSwgaW52ZXN0bWVudCBnb2FscywgdGltZSBob3Jpem9uKSwgYW5kIG1hcmtldCBkYXRhIChlLmcuLCBwZXJmb3JtYW5jZSBvZiBkaWZmZXJlbnQgYXNzZXQgY2xhc3Nlcywgc3RvY2tzLCBvciBtdXR1YWwgZnVuZHMpLiBUaGUgc3lzdGVtIG1heSBhbHNvIGFuYWx5emUgdXNlciBiZWhhdmlvciAoc3VjaCBhcyBob3cgb2Z0ZW4gdGhleSBjaGVjayB0aGVpciBwb3J0Zm9saW8gb3IgdGhlIHR5cGVzIG9mIGludmVzdG1lbnRzIHRoZXnigJl2ZSBzaG93biBpbnRlcmVzdCBpbikgYW5kIGRlbW9ncmFwaGljIGluZm9ybWF0aW9uIChhZ2UsIGluY29tZSwgZmluYW5jaWFsIGdvYWxzKS4NCiAgLSAqKkV4YW1wbGUqKjogQSB1c2Vy4oCZcyByaXNrIHByb2ZpbGUgYW5kIGFnZSB3b3VsZCBoZWF2aWx5IGluZmx1ZW5jZSB0aGUgcmVjb21tZW5kYXRpb25zLiBJZiBhIHVzZXIgaXMgeW91bmcgYW5kIHdpbGxpbmcgdG8gdGFrZSBvbiBoaWdoZXIgcmlzaywgdGhlIHN5c3RlbSBtYXkgc3VnZ2VzdCBncm93dGgtZm9jdXNlZCBmdW5kcy4gSWYgYSB1c2VyIGlzIG5lYXJpbmcgcmV0aXJlbWVudCwgaXQgd291bGQgbGlrZWx5IHN1Z2dlc3QgbW9yZSBzdGFibGUsIGluY29tZS1nZW5lcmF0aW5nIGludmVzdG1lbnRzIGxpa2UgYm9uZHMgb3IgaW5kZXggZnVuZHMuDQoNCiMjIyAzLiBIb3cgYXJlIHJlY29tbWVuZGF0aW9ucyBkZWxpdmVyZWQgb3IgcHJlc2VudGVkIHRvIHVzZXJzPw0KLSAqKkRlbGl2ZXJ5IE1ldGhvZCoqOiBSZWNvbW1lbmRhdGlvbnMgYXJlIGRlbGl2ZXJlZCBpbiBhIHBlcnNvbmFsaXplZCBkYXNoYm9hcmQgb3Igb24gdGhlIGhvbWVwYWdlIG9mIHRoZSBGaWRlbGl0eSBwbGF0Zm9ybS4gVXNlcnMgY2FuIHZpZXcgcmVjb21tZW5kYXRpb25zIGluIHZhcmlvdXMgc2VjdGlvbnMsIHN1Y2ggYXMg4oCcUmVjb21tZW5kZWQgRnVuZHMgZm9yIFlvdSzigJ0g4oCcUG9ydGZvbGlvIEJ1aWxkZXIs4oCdIG9yIOKAnFN1Z2dlc3RlZCBJbnZlc3RtZW50IFN0cmF0ZWdpZXMu4oCdIEZpZGVsaXR5IGFsc28gcHJvdmlkZXMgaW50ZXJhY3RpdmUgdG9vbHMsIHN1Y2ggYXMgcmV0aXJlbWVudCBwbGFubmluZyBjYWxjdWxhdG9ycyBvciBwb3J0Zm9saW8gYW5hbHlzaXMsIHRvIGhlbHAgdXNlcnMgZXZhbHVhdGUgdGhlIGltcGFjdCBvZiBkaWZmZXJlbnQgaW52ZXN0bWVudCBjaG9pY2VzLg0KICAtICoqRXhhbXBsZSoqOiBBIHVzZXIgbG9nZ2luZyBpbnRvIEZpZGVsaXR5IG1pZ2h0IHNlZSBhIHNlY3Rpb24gdGl0bGVkIOKAnFJlY29tbWVuZGVkIGZvciBZb3Us4oCdIHdoaWNoIGluY2x1ZGVzIGN1cmF0ZWQgaW52ZXN0bWVudCBvcHRpb25zIHRhaWxvcmVkIHRvIHRoZWlyIHByb2ZpbGUuIFRoZXkgY291bGQgYWxzbyByZWNlaXZlIHN1Z2dlc3Rpb25zIHRocm91Z2ggZW1haWwgb3IgYXBwIG5vdGlmaWNhdGlvbnMgYWJvdXQgbmV3IG9wcG9ydHVuaXRpZXMgb3IgYWRqdXN0bWVudHMgdG8gdGhlaXIgcG9ydGZvbGlvIGJhc2VkIG9uIG1hcmtldCB0cmVuZHMgb3IgdGhlaXIgZXZvbHZpbmcgZmluYW5jaWFsIGdvYWxzLg0KDQotLS0NCg0KIyBTY2VuYXJpbyBEZXNpZ24gZm9yIEZpZGVsaXR5IEludmVzdG1lbnRzICh0aGUgT3JnYW5pemF0aW9uKQ0KDQojIyMgMS4gU2l0dWF0aW9uDQpGaWRlbGl0eSB3YW50cyB0byBoZWxwIHVzZXJzIGZpbmQgc3VpdGFibGUgaW52ZXN0bWVudCBvcHRpb25z4oCUc3VjaCBhcyBtdXR1YWwgZnVuZHMsIEVURnMsIGFuZCByZXRpcmVtZW50IHBsYW5z4oCUd2l0aG91dCByZXF1aXJpbmcgZGVlcCBmaW5hbmNpYWwgZXhwZXJ0aXNlLiBDdXN0b21lcnMgb2Z0ZW4gZmVlbCBvdmVyd2hlbG1lZCBieSB0aGUgbGFyZ2UgbnVtYmVyIG9mIGludmVzdG1lbnQgY2hvaWNlcy4NCg0KIyMjIDIuIE1vdGl2YXRpb24NCkJ5IGd1aWRpbmcgdXNlcnMgdG8gYXBwcm9wcmlhdGUgaW52ZXN0bWVudHMsIEZpZGVsaXR5IGltcHJvdmVzIGN1c3RvbWVyIHNhdGlzZmFjdGlvbiwgaW5jcmVhc2VzIHByb2R1Y3QgZW5nYWdlbWVudCwgYW5kIGJvb3N0cyBBVU0gKGFzc2V0cyB1bmRlciBtYW5hZ2VtZW50KS4gUmVjb21tZW5kZXIgc3lzdGVtcyBoZWxwIGNvbnZlcnQgdW5kZWNpZGVkIHZpc2l0b3JzIGludG8gbG95YWwgY2xpZW50cy4NCg0KIyMjIDMuIEV4cGVjdGVkIEFjdGlvbg0KRmlkZWxpdHkgZXhwZWN0cyB1c2VycyB0byBlbmdhZ2Ugd2l0aCByZWNvbW1lbmRlZCBwcm9kdWN0c+KAlHZpZXcgZGV0YWlscywgY29tcGFyZSBvcHRpb25zLCBhbmQgZXZlbnR1YWxseSBpbnZlc3QuIEl0IGFsc28gZXhwZWN0cyB0aGF0IHVzZXJzIHdpbGwgdHJ1c3QgdGhlIHN5c3RlbSBlbm91Z2ggdG8gcmVseSBvbiBpdHMgZ3VpZGFuY2Ugb3ZlciB0aW1lLCBsZWFkaW5nIHRvIHJlcGVhdCB2aXNpdHMgYW5kIHBvcnRmb2xpbyBncm93dGguDQoNCi0tLQ0KDQojIFNjZW5hcmlvIERlc2lnbiBmb3IgRmlkZWxpdHnigJlzIEN1c3RvbWVycyAodGhlIFVzZXJzKQ0KDQojIyMgMS4gU2l0dWF0aW9uDQpBIHVzZXIgbG9ncyBpbnRvIEZpZGVsaXR54oCZcyB3ZWJzaXRlIG9yIGFwcCwgbG9va2luZyB0byBpbnZlc3QgZm9yIHJldGlyZW1lbnQgb3IgZGl2ZXJzaWZ5IHRoZWlyIHBvcnRmb2xpby4gVGhleSBoYXZlIGdlbmVyYWwgZ29hbHMgYnV0IGFyZW4ndCBzdXJlIHdoaWNoIGludmVzdG1lbnRzIGZpdCB0aGVpciBuZWVkcywgYW5kIHRoZXnigJlyZSBvdmVyd2hlbG1lZCBieSBodW5kcmVkcyBvZiBvcHRpb25zLg0KDQojIyMgMi4gTW90aXZhdGlvbg0KVGhlIHVzZXIgd2FudHMgdG8gbWFrZSBpbmZvcm1lZCBmaW5hbmNpYWwgZGVjaXNpb25zIHdpdGggbWluaW1hbCBzdHJlc3MuIFRoZXkgd2FudCByZWNvbW1lbmRhdGlvbnMgdGhhdCBhcmUgYWxpZ25lZCB3aXRoIHRoZWlyIGdvYWxzIChlLmcuLCByZXRpcmVtZW50LCBzYXZpbmcgZm9yIGEgaG9tZSwgbWF4aW1pemluZyByZXR1cm5zIHdoaWxlIG1pbmltaXppbmcgcmlzaykuDQoNCiMjIyAzLiBFeHBlY3RlZCBBY3Rpb24NClRoZSB1c2VyIGV4cGVjdHMgdG8gc2VlIGEgY3VyYXRlZCBsaXN0IG9mIGludmVzdG1lbnQgcHJvZHVjdHMgdGhhdCBtYXRjaCB0aGVpciByaXNrIHByb2ZpbGUsIGdvYWxzLCBhbmQgaW50ZXJlc3RzLiBJZGVhbGx5LCB0aGV5J2xsIGV4cGxvcmUgdGhlIHN1Z2dlc3Rpb25zLCBmZWVsIGNvbmZpZGVudCBpbiB0aGUgcmVhc29uaW5nIGJlaGluZCB0aGVtLCBhbmQgbWFrZSBhbiBpbnZlc3RtZW50IGRlY2lzaW9uLg0KDQotLS0NCg0KIyBEb2VzIGl0IE1ha2UgU2Vuc2UgdG8gRG8gQm90aCBTY2VuYXJpbyBEZXNpZ25zPw0KDQpZZXMuDQotIEZyb20gRmlkZWxpdHnigJlzIHNpZGUsIHNjZW5hcmlvIGRlc2lnbiBoZWxwcyBvcHRpbWl6ZSB0aGUgcmVjb21tZW5kZXIgZW5naW5lIHRvIGluY3JlYXNlIGVuZ2FnZW1lbnQsIHJldGVudGlvbiwgYW5kIHJldmVudWUuDQotIEZyb20gdGhlIHVzZXLigJlzIHNpZGUsIHNjZW5hcmlvIGRlc2lnbiBlbnN1cmVzIHRoZSBzeXN0ZW0gYWN0dWFsbHkgbWVldHMgY3VzdG9tZXIgbmVlZHMsIGJ1aWxkcyB0cnVzdCwgYW5kIG1ha2VzIGZpbmFuY2lhbCBkZWNpc2lvbi1tYWtpbmcgZWFzaWVyLg0KDQpVbmRlcnN0YW5kaW5nIGJvdGggcGVyc3BlY3RpdmVzIGVuc3VyZXMgdGhhdCB0aGUgc3lzdGVtIGlzIGRlc2lnbmVkIHdpdGggZW1wYXRoeSwgc3RyYXRlZ3ksIGFuZCBlZmZlY3RpdmVuZXNzLg0KDQotLS0NCg0KIyAgUmVjb21tZW5kYXRpb25zIGZvciB0aGUgd2Vic2l0ZQ0KDQpBZnRlciBsb2dnaW5nIGluLCB1c2VycyBtYXkgc2VlIGludmVzdG1lbnQgc3VnZ2VzdGlvbnMgdW5kZXIgY2F0ZWdvcmllcyBsaWtlOg0KLSAqKuKAnFN1Z2dlc3RlZCBmb3IgWW914oCdKioNCi0gKirigJxUb3AgUGlja3MgQmFzZWQgb24gWW91ciBQb3J0Zm9saW/igJ0qKg0KLSAqKuKAnEZ1bmRzIHRvIENvbnNpZGVy4oCdKioNCg0KIyMjIEd1aWRlZCBUb29scyBhbmQgUXVpenplcw0KVG9vbHMgc3VjaCBhczoNCi0gKirigJxGaW5kIHRoZSBSaWdodCBNdXR1YWwgRnVuZOKAnSBvciBFVEYgc2NyZWVuZXJzKioNCi0gKirigJxJbnZlc3RtZW50IFByb2ZpbGUgUXVlc3Rpb25uYWlyZeKAnSB0byBhc3Nlc3MgcmlzayB0b2xlcmFuY2UgYW5kIGdvYWxzKiogKFRoZXNlIHRvb2xzIGxpa2VseSBmZWVkIGludG8gdGhlIHJlY29tbWVuZGF0aW9uIGVuZ2luZS4pDQoNCiMjIyBQb3J0Zm9saW8gQW5hbHlzaXMgVG9vbHMNCi0gVGhlIOKAnEZ1bGwgVmlld+KAnSBkYXNoYm9hcmQgaW50ZWdyYXRlcyBhY2NvdW50cyBhbmQgb2ZmZXJzIHN1Z2dlc3Rpb25zIGZvciBhc3NldCBhbGxvY2F0aW9uLCBkaXZlcnNpZmljYXRpb24sIGFuZCByaXNrIGV4cG9zdXJlLg0KDQojIyMgRWR1Y2F0aW9uYWwgQ29udGVudCBSZWNvbW1lbmRhdGlvbnMNCkZpZGVsaXR5IGFsc28gcmVjb21tZW5kcyBibG9nIHBvc3RzLCB3ZWJpbmFycywgYW5kIHR1dG9yaWFscyBwZXJzb25hbGl6ZWQgdG8gdGhlIHVzZXIncyBpbnZlc3RtZW50IGxldmVsIG9yIHJlY2VudCBzZWFyY2hlcy4NCg0KIyMgQW5hbHlzaXMgb2YgU2NlbmFyaW8gRGVzaWduDQoNCg0KDQohW1NjZW5hcmlvIERlc2lnbl0oQzovVXNlcnMvdGFuemkvT25lRHJpdmUvREFUQS82MDcvV2VlayAxMS9TY2VuYXJpb0Rlc2lnbi5wbmcpDQoNCiMjIFRoaXMgc2VjdGlvbiBleHBsYWluIHRoZSBpbmR1c3RyeSByZXBvcnQuDQoNCiFbU2NlbmFyaW8gRGVzaWduXShDOi9Vc2Vycy90YW56aS9PbmVEcml2ZS9EQVRBLzYwNy9XZWVrIDExL0luZHVzdHJ5cmVvcnQucG5nKQ0KDQoNCiMgUmVjb21tZW5kYXRpb25zIHRvIEltcHJvdmUgRmlkZWxpdHnigJlzIFJlY29tbWVuZGVyIFN5c3RlbQ0KDQoxLiAqKkVuaGFuY2UgVHJhbnNwYXJlbmN5IGFuZCBFeHBsYWluYWJpbGl0eSoqDQogICAtICoqV2h5Kio6IE1hbnkgdXNlcnMgbWF5IGJlIGhlc2l0YW50IHRvIHRydXN0IGZpbmFuY2lhbCByZWNvbW1lbmRhdGlvbnMgd2l0aG91dCB1bmRlcnN0YW5kaW5nIHdoeSB0aGV54oCZcmUgYmVpbmcgbWFkZS4NCiAgICAgLSAqKuKchSBBZGQg4oCcV2h5IHRoaXMgd2FzIHJlY29tbWVuZGVk4oCdIGV4cGxhbmF0aW9ucyBuZXh0IHRvIHN1Z2dlc3Rpb25zLioqDQogICAgIC0gKirinIUgVXNlIHBsYWluIGxhbmd1YWdlIHRvIGRlc2NyaWJlIGtleSBmYWN0b3JzOiBlLmcuLCDigJxXZSBzdWdnZXN0ZWQgdGhpcyBFVEYgYmVjYXVzZSBpdCBkaXZlcnNpZmllcyB5b3VyIHRlY2gtaGVhdnkgcG9ydGZvbGlvLuKAnSoqDQoNCjIuICoqSW5jb3Jwb3JhdGUgUmVhbC1UaW1lIFNlbnRpbWVudCBhbmQgTmV3cyBEYXRhKioNCiAgIC0gKipXaHkqKjogSW52ZXN0b3JzIGluY3JlYXNpbmdseSByZWFjdCB0byBmaW5hbmNpYWwgbmV3cywgc29jaWFsIG1lZGlhIHNlbnRpbWVudCwgYW5kIGdsb2JhbCBldmVudHMuDQogICAgIC0gKirinIUgSW50ZWdyYXRlIG5ld3MgYW5kIHNvY2lhbCBzZW50aW1lbnQgKGUuZy4sIGZyb20gVHdpdHRlciwgUmVkZGl0LCBvciBmaW5hbmNpYWwgYmxvZ3MpIGludG8gdGhlIHJlY29tbWVuZGF0aW9uIGFsZ29yaXRobS4qKg0KICAgICAtICoq4pyFIEhpZ2hsaWdodCB0cmVuZGluZyBmdW5kcyB3aXRoIGEgc2VudGltZW50IHNjb3JlIG9yIHJlY2VudCBuZXdzIGltcGFjdC4qKg0KDQozLiAqKkludHJvZHVjZSBHb2FsLUJhc2VkIFJlY29tbWVuZGF0aW9uIFRyYWNrcyoqDQogICAtICoqV2h5Kio6IE5vdCBhbGwgaW52ZXN0b3JzIHRoaW5rIGluIHRlcm1zIG9mIHByb2R1Y3RzIOKAlCBtYW55IHRoaW5rIGluIHRlcm1zIG9mIGdvYWxzIChlLmcuLCBidXlpbmcgYSBob3VzZSwgcmV0aXJlbWVudCwgdHJhdmVsKS4NCiAgICAgLSAqKuKchSBMZXQgdXNlcnMgY2hvb3NlIG9yIGN1c3RvbWl6ZSBsaWZlIGdvYWxzLCBhbmQgZGVsaXZlciByZWNvbW1lbmRhdGlvbiDigJx0cmFja3PigJ0gdGhhdCBoZWxwIG1lZXQgdGhvc2Ugb2JqZWN0aXZlcy4qKg0KICAgICAtICoq4pyFIFRyYWNrIHByb2dyZXNzIHZpc3VhbGx5IGFuZCBzdWdnZXN0IGFkanVzdG1lbnRzIHdoZW4gbWFya2V0IGNvbmRpdGlvbnMgc2hpZnQuKioNCg0KNC4gKipVc2UgQ29sbGFib3JhdGl2ZSBGaWx0ZXJpbmcgQWNyb3NzIFNpbWlsYXIgSW52ZXN0b3JzKioNCiAgIC0gKipXaHkqKjogSW52ZXN0b3JzIG1heSBiZW5lZml0IGZyb20gcGF0dGVybnMgYW1vbmcgcGVlcnMgd2l0aCBzaW1pbGFyIGdvYWxzIG9yIHJpc2sgcHJvZmlsZXMuDQogICAgIC0gKirinIUgUmVjb21tZW5kIHBvcnRmb2xpb3Mgb3Igc3RyYXRlZ2llcyB0aGF0IHBlb3BsZSB3aXRoIHNpbWlsYXIgcHJvZmlsZXMgaGF2ZSB1c2VkIHN1Y2Nlc3NmdWxseS4qKg0KICAgICAtICoq4pyFIE9mZmVyIOKAnGNvbW11bml0eSBpbnNpZ2h04oCdIGFub255bWl6ZWQgZGF0YTog4oCcODAlIG9mIGludmVzdG9ycyB3aXRoIHlvdXIgcHJvZmlsZSBhZGRlZCBYIGxhc3QgcXVhcnRlci7igJ0qKg0KDQo1LiAqKkltcHJvdmUgRW5nYWdlbWVudCB3aXRoIEFkYXB0aXZlIExlYXJuaW5nIFN5c3RlbXMqKg0KICAgLSAqKldoeSoqOiBGaWRlbGl0eSBjYW4gYmV0dGVyIHJlZmluZSByZWNvbW1lbmRhdGlvbnMgdGhlIG1vcmUgaXQgbGVhcm5zIGZyb20gdXNlcnMuDQogICAgIC0gKirinIUgTGV0IHVzZXJzIGdpdmUgZmVlZGJhY2sgb24gcmVjb21tZW5kYXRpb25zOiDigJxOb3QgaW50ZXJlc3RlZCzigJ0g4oCcVG9vIHJpc2t5LOKAnSDigJxBbHJlYWR5IG93biBzaW1pbGFyLuKAnSoqDQogICAgIC0gKirinIUgVXNlIHRoaXMgdG8gdHJhaW4gYWRhcHRpdmUgbWFjaGluZSBsZWFybmluZyBtb2RlbHMgYW5kIHJlZmluZSBmdXR1cmUgc3VnZ2VzdGlvbnMuKioNCg0KNi4gKipQZXJzb25hbGl6ZSBFZHVjYXRpb25hbCBDb250ZW50IE1vcmUgRGVlcGx5KioNCiAgIC0gKipXaHkqKjogTWFueSBuZXcgaW52ZXN0b3JzIHdhbnQgdG8gbGVhcm4gYmVmb3JlIGFjdGluZy4NCiAgICAgLSAqKuKchSBUaWUgY29udGVudCByZWNvbW1lbmRhdGlvbnMgZGlyZWN0bHkgdG8gdXNlciBwb3J0Zm9saW9zIG9yIG1pc3NlZCBvcHBvcnR1bml0aWVzLioqDQogICAgIC0gKipGb3IgZXhhbXBsZSoqOiDigJxZb3XigJlyZSB1bmRlcmludmVzdGVkIGluIGludGVybmF0aW9uYWwgc3RvY2tzIOKAlCBoZXJl4oCZcyBhIDMtbWludXRlIHJlYWQgZXhwbGFpbmluZyB0aGUgYmVuZWZpdHMu4oCdDQoNCjcuICoqTGV2ZXJhZ2UgTW9iaWxlIEJlaGF2aW9yIGZvciBJbi1BcHAgTWljcm8tUmVjb21tZW5kYXRpb25zKioNCiAgIC0gKipXaHkqKjogTWFueSB1c2VycyBjaGVjayBpbnZlc3RtZW50cyBicmllZmx5IG9uIG1vYmlsZSDigJQgc21hbGwsIHRpbWVseSB0aXBzIGNhbiBib29zdCBlbmdhZ2VtZW50Lg0KICAgICAtICoq4pyFIFNob3cgcXVpY2sgcmVjb21tZW5kYXRpb25zIGxpa2U6IOKAnENvbnNpZGVyIHJlYmFsYW5jaW5nIOKAlCB5b3VyIHRlY2ggZXhwb3N1cmUgcm9zZSAxMiUu4oCdKioNCiAgICAgLSAqKuKchSBFbmFibGUg4oCcU3dpcGUgdG8gU2F2ZeKAnSBvciDigJxSZW1pbmQgTWUgTGF0ZXLigJ0gYWN0aW9ucyBmb3IgbG93LWZyaWN0aW9uIGVuZ2FnZW1lbnQuKioNCg0KLS0tDQoNCg==