@adonoustech/bacon-tax 2.5.22 → 2.5.24
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/action-tems/action-tax-fragments.js +104 -1
- package/dist/cjs/action-tems/action-tax-subjects.js +7 -1
- package/dist/cjs/form-models/i-investment-income-model.js +1 -1
- package/dist/es/action-tems/action-tax-fragments.js +31 -1
- package/dist/es/action-tems/action-tax-subjects.js +7 -1
- package/dist/es/form-models/i-investment-income-model.js +1 -1
- package/dist/types/action-tems/action-tax-subjects.d.ts +7 -1
- package/dist/types/form-models/i-investment-income-model.d.ts +1 -1
- package/package.json +2 -2
- package/src/action-tems/action-tax-fragments.ts +107 -0
- package/src/action-tems/action-tax-subjects.ts +7 -1
- package/src/form-models/i-investment-income-model.ts +1 -1
|
@@ -334,6 +334,109 @@ exports.ActionTaxFragments = [
|
|
|
334
334
|
<p>This information is crucial for us to accurately represent your earnings and to calculate any potential deductions correctly. Your prompt attention to this request will help ensure that your tax returns are prepared in a timely and efficient manner.</p>
|
|
335
335
|
<p>If you have any questions or need further clarification on what is required, please do not hesitate to contact us. We are here to assist you through every step of this process.</p>
|
|
336
336
|
<p>Thank you for your cooperation and prompt attention to this matter.</p>`
|
|
337
|
+
},
|
|
338
|
+
{
|
|
339
|
+
actionTaxSubject: "Interest Income",
|
|
340
|
+
actionTitle: "Interest Income",
|
|
341
|
+
actionInstructions: `<p>In reviewing your financial activities for the tax year, you indicated receiving interest income. To accurately determine the taxability of this income and ensure compliance with tax regulations, we require additional details. Kindly provide the following information:</p>
|
|
342
|
+
<ol>
|
|
343
|
+
<li><b>Source of Interest Income:</b> Please specify the institution(s) or entity(ies) from which you received interest income (e.g., banks, credit unions).</li>
|
|
344
|
+
<li><b>Amount Received:</b> Confirm the total amount of interest income received from each source during the tax year.</li>
|
|
345
|
+
<li><b>Account Types:</b> Identify the type of accounts that generated the interest (e.g., savings, checking, certificates of deposit).</li>
|
|
346
|
+
<li><b>Tax Forms Received:</b> List any tax forms you have received related to interest income, such as Form 1099-INT or Form 1099-OID.</li>
|
|
347
|
+
<li><b>Foreign Interest:</b> If any interest income was earned from foreign accounts or sources, please provide details, including the country of origin.</li>
|
|
348
|
+
</ol>
|
|
349
|
+
<p>Providing these details will enable us to accurately assess the tax implications of your interest income and ensure your tax return is complete and correct. You can attach the requested documents and information by replying to this email or uploading them directly to our secure client portal.</p>
|
|
350
|
+
<p>If you have any questions or require assistance in gathering this information, do not hesitate to contact us.</p>
|
|
351
|
+
<p>Thank you for your prompt attention to this matter.</p>`
|
|
352
|
+
},
|
|
353
|
+
{
|
|
354
|
+
actionTaxSubject: "Bank Account Opening Gifts",
|
|
355
|
+
actionTitle: "Bank Account Opening Gifts",
|
|
356
|
+
actionInstructions: `<p>We are in the process of reviewing your tax situation and have noted that you received a gift for opening an account at a financial institution. To accurately determine the taxability of this income, we kindly request the following information:</p>
|
|
357
|
+
<ol>
|
|
358
|
+
<li>The name of the financial institution where the account was opened.</li>
|
|
359
|
+
<li>The date the account was opened.</li>
|
|
360
|
+
<li>A detailed description of the gift received (e.g., cash, merchandise, or services).</li>
|
|
361
|
+
<li>The fair market value of the gift at the time it was received.</li>
|
|
362
|
+
<li>Any documentation provided by the financial institution regarding the gift (e.g., a letter, email confirmation, or statement indicating the value of the gift).</li>
|
|
363
|
+
<li>Confirmation if you have received more than one gift for opening accounts within the same tax year, and if so, the details for each.</li>
|
|
364
|
+
</ol>
|
|
365
|
+
<p>Please provide this information at your earliest convenience to ensure we can accurately assess the tax implications and comply with all IRS requirements.</p>
|
|
366
|
+
<p>Thank you for your prompt attention to this matter.</p>`
|
|
367
|
+
},
|
|
368
|
+
{
|
|
369
|
+
actionTaxSubject: "CD Interest",
|
|
370
|
+
actionTitle: "CD Interest",
|
|
371
|
+
actionInstructions: `<p>To ensure accurate reporting of your income from Certificates of Deposit (CDs) for the tax year, we kindly request the following information. This is essential to comply with IRS regulations and to potentially optimize your tax benefits.</p>
|
|
372
|
+
<ol>
|
|
373
|
+
<li><strong>Name of the Bank or Financial Institution:</strong> Where the CD is held.</li>
|
|
374
|
+
<li><strong>Account Number:</strong> This helps in identifying the specific CD.</li>
|
|
375
|
+
<li><strong>Total Interest Earned:</strong> The amount of interest earned from the CD during the tax year.</li>
|
|
376
|
+
<li><strong>CD Term:</strong> The duration or term of the CD (e.g., 6 months, 1 year).</li>
|
|
377
|
+
<li><strong>Date of Purchase:</strong> When you originally acquired the CD.</li>
|
|
378
|
+
<li><strong>Maturity Date:</strong> When the CD reached or will reach its full term.</li>
|
|
379
|
+
<li><strong>1099-INT Forms:</strong> If received, please include copies of any 1099-INT forms associated with the CD interest.</li>
|
|
380
|
+
</ol>
|
|
381
|
+
<p>Please provide this information at your earliest convenience to ensure accurate and timely preparation of your tax documents. You may upload the documents directly through our secure client portal or arrange for a meeting to provide them in person.</p>
|
|
382
|
+
<p>If you have any questions or need further assistance, do not hesitate to contact us.</p>
|
|
383
|
+
<p>Thank you for your prompt attention to this matter.</p>`
|
|
384
|
+
},
|
|
385
|
+
{
|
|
386
|
+
actionTaxSubject: "Tax Exempt Interest",
|
|
387
|
+
actionTitle: "Tax Exempt Interest",
|
|
388
|
+
actionInstructions: `<p>We understand that you have received tax-exempt interest during the tax year, possibly from municipal bonds or similar investments. To accurately prepare your tax returns and ensure compliance with tax regulations, we kindly request the following information:</p>
|
|
389
|
+
<ol>
|
|
390
|
+
<li><strong>Statements of Tax-Exempt Interest:</strong> Please provide all 1099-INT forms or equivalent statements that detail your tax-exempt interest income for the tax year.</li>
|
|
391
|
+
<li><strong>Details of Issuing Entities:</strong> A list or statement identifying the entities that issued the bonds or similar investments. This includes municipal, state, or federal entities.</li>
|
|
392
|
+
<li><strong>Investment Detail:</strong> A breakdown of the investments contributing to tax-exempt interest. This should include the purchase date, purchase amounts, and any related maturity dates.</li>
|
|
393
|
+
<li><strong>Brokerage Account Statements:</strong> Copies of your brokerage account statements that detail transactions and holdings in tax-exempt investments.</li>
|
|
394
|
+
<li><strong>AMT (Alternative Minimum Tax) Consideration:</strong> If available, documentation indicating whether any of the tax-exempt interest is subject to the Alternative Minimum Tax.</li>
|
|
395
|
+
</ol>
|
|
396
|
+
<p>This information is crucial for an accurate and efficient tax preparation process. Please forward the requested documents at your earliest convenience. If you have any questions or need assistance in gathering this information, do not hesitate to contact us.</p>
|
|
397
|
+
<p>Thank you for your cooperation and prompt attention to this matter.</p>`
|
|
398
|
+
},
|
|
399
|
+
{
|
|
400
|
+
actionTaxSubject: "Educational Savings Bond Interest",
|
|
401
|
+
actionTitle: "Educational Savings Bond Interest",
|
|
402
|
+
actionInstructions: `<p>We hope this message finds you well. As part of our continued effort to provide you with the best tax preparation services, we are reaching out to gather necessary documentation related to the interest you may have received from redeeming an Educational Savings Bond.</p>
|
|
403
|
+
|
|
404
|
+
<p>To accurately assess the eligibility for exemption and to ensure compliance with the IRS, we kindly request you provide the following information:</p>
|
|
405
|
+
<ol>
|
|
406
|
+
<li>A copy of Form 1099-INT or similar statement provided by the financial institution, indicating the amount of interest received from the Educational Savings Bond.</li>
|
|
407
|
+
<li>Detailed records of the Educational Savings Bonds redeemed during the tax year, including:
|
|
408
|
+
<ul>
|
|
409
|
+
<li>Bond serial numbers</li>
|
|
410
|
+
<li>Issue dates</li>
|
|
411
|
+
<li>Redemption dates</li>
|
|
412
|
+
<li>Amounts</li>
|
|
413
|
+
</ul>
|
|
414
|
+
</li>
|
|
415
|
+
<li>Receipts or documentation for qualified educational expenses paid during the year, including:
|
|
416
|
+
<ul>
|
|
417
|
+
<li>Tuition and fees</li>
|
|
418
|
+
<li>Course materials</li>
|
|
419
|
+
<li>Any other required expenses for enrollment or attendance at an eligible educational institution</li>
|
|
420
|
+
</ul>
|
|
421
|
+
</li>
|
|
422
|
+
<li>Proof of enrollment from an eligible educational institution for the beneficiary of the bond.</li>
|
|
423
|
+
</ol>
|
|
424
|
+
<p>This information is crucial for determining the taxability of the interest income and potentially maximizing your tax benefits. We appreciate your prompt attention to this request and recommend compiling these documents at your earliest convenience.</p>
|
|
425
|
+
<p>If you have any questions or need further assistance, please do not hesitate to contact our office directly.</p>
|
|
426
|
+
<p>Thank you for your cooperation and trust in our services.</p>`
|
|
427
|
+
},
|
|
428
|
+
{
|
|
429
|
+
actionTaxSubject: "Dividend Income",
|
|
430
|
+
actionTitle: "Dividend Income",
|
|
431
|
+
actionInstructions: `<p>We are currently in the process of preparing your tax returns and have noted that you indicated receiving dividend income over the past tax year. To ensure we accurately report this income and optimize your tax situation, we kindly request the following documentation and information:</p>
|
|
432
|
+
<ol>
|
|
433
|
+
<li>All 1099-DIV forms received from corporations or mutual funds. This includes distributions of cash, stock, or other property.</li>
|
|
434
|
+
<li>If applicable, details regarding any foreign dividends including the amount in foreign currency, the country of origin, and any foreign tax paid.</li>
|
|
435
|
+
<li>For dividends reinvested, please provide statements or confirmations showing these transactions.</li>
|
|
436
|
+
<li>Any other relevant documentation or information regarding dividends not covered by a 1099-DIV.</li>
|
|
437
|
+
</ol>
|
|
438
|
+
<p>Please ensure all documents are clear and legible to avoid any processing delays. We recommend securely uploading the requested information through our client portal or arranging a secure email transmission.</p>
|
|
439
|
+
<p>Your prompt response is appreciated as it will help us in completing your tax preparations efficiently. If you have any questions or need clarification, do not hesitate to contact us.</p>`
|
|
337
440
|
}
|
|
338
441
|
];
|
|
339
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLXRheC1mcmFnbWVudHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYWN0aW9uLXRlbXMvYWN0aW9uLXRheC1mcmFnbWVudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQWEsUUFBQSxrQkFBa0IsR0FBRztJQUNoQztRQUNFLGdCQUFnQixFQUFFLHdCQUF3QjtRQUMxQyxXQUFXLEVBQUUsZ0NBQWdDO1FBQzdDLGtCQUFrQixFQUFFOzs7Ozs7OzsrSUFRdUg7S0FDNUk7SUFDRDtRQUNFLGdCQUFnQixFQUFFLHNCQUFzQjtRQUN4QyxXQUFXLEVBQUUseURBQXlEO1FBQ3RFLGtCQUFrQixFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7dVBBMkIrTjtLQUNwUDtJQUNEO1FBQ0UsZ0JBQWdCLEVBQUUsWUFBWTtRQUM5QixXQUFXLEVBQUUsbUNBQW1DO1FBQ2hELGtCQUFrQixFQUFFOzs7Ozs7Ozs7Ozs7OzhKQWFzSTtLQUMzSjtJQUNEO1FBQ0UsZ0JBQWdCLEVBQUUsbUJBQW1CO1FBQ3JDLFdBQVcsRUFBRSwwQkFBMEI7UUFDdkMsa0JBQWtCLEVBQUU7Ozs7Ozs7Ozs7Ozs7a1BBYTBOO0tBQy9PO0lBQ0Q7UUFDRSxnQkFBZ0IsRUFBRSxrQkFBa0I7UUFDcEMsV0FBVyxFQUFFLGlDQUFpQztRQUM5QyxrQkFBa0IsRUFBRTs7Ozs7Ozs7Ozs7OzsySEFhbUc7S0FDeEg7SUFDRDtRQUNFLGdCQUFnQixFQUFFLGtCQUFrQjtRQUNwQyxXQUFXLEVBQUUsMEJBQTBCO1FBQ3ZDLGtCQUFrQixFQUFFOzs7Ozs7Ozs7Ozs2T0FXcU47S0FDMU87SUFDRDtRQUNFLGdCQUFnQixFQUFFLGlCQUFpQjtRQUNuQyxXQUFXLEVBQUUsaUJBQWlCO1FBQzlCLGtCQUFrQixFQUFFOzs7Ozs7Ozs7Q0FTdkI7S0FDRTtJQUNEO1FBQ0UsZ0JBQWdCLEVBQUUsMEJBQTBCO1FBQzVDLFdBQVcsRUFBRSwwQkFBMEI7UUFDdkMsa0JBQWtCLEVBQUU7Ozs7Ozs7Ozs7Ozs4SkFZc0k7S0FDM0o7SUFDRDtRQUNFLGdCQUFnQixFQUFFLDhCQUE4QjtRQUNoRCxXQUFXLEVBQUUsOEJBQThCO1FBQzNDLGtCQUFrQixFQUFFOzs7Ozs7Ozs7NE5BU29NO0tBQ3pOO0lBQ0Q7UUFDRSxnQkFBZ0IsRUFBRSxrQkFBa0I7UUFDcEMsV0FBVyxFQUFFLGtCQUFrQjtRQUMvQixrQkFBa0IsRUFBRTs7Ozs7Ozs7dUtBUStJO0tBQ3BLO0lBQ0Q7UUFDRSxnQkFBZ0IsRUFBRSxpQ0FBaUM7UUFDbkQsV0FBVyxFQUFFLG9DQUFvQztRQUNqRCxrQkFBa0IsRUFBRTs7Ozs7Ozs7OztvUkFVNFA7S0FDalI7SUFDRDtRQUNFLGdCQUFnQixFQUFFLDJCQUEyQjtRQUM3QyxXQUFXLEVBQUUsMkJBQTJCO1FBQ3hDLGtCQUFrQixFQUFFOzs7Ozs7Ozs7K0RBU3VDO0tBQzVEO0lBQ0Q7UUFDRSxnQkFBZ0IsRUFBRSx5QkFBeUI7UUFDM0MsV0FBVyxFQUFFLHlCQUF5QjtRQUN0QyxrQkFBa0IsRUFBRTs7Ozs7Ozs7Ozs7cUdBVzZFO0tBQ2xHO0lBQ0Q7UUFDRSxnQkFBZ0IsRUFBRSw2QkFBNkI7UUFDL0MsV0FBVyxFQUFFLDZCQUE2QjtRQUMxQyxrQkFBa0IsRUFBRTs7Ozs7Ozs7OztrTEFVMEo7S0FDL0s7SUFDRDtRQUNFLGdCQUFnQixFQUFFLGtCQUFrQjtRQUNwQyxXQUFXLEVBQUUsYUFBYTtRQUMxQixrQkFBa0IsRUFBRTs7Ozs7Ozs7Ozt5TEFVaUs7S0FDdEw7SUFDRDtRQUNFLGdCQUFnQixFQUFFLHlCQUF5QjtRQUMzQyxXQUFXLEVBQUUseUJBQXlCO1FBQ3RDLGtCQUFrQixFQUFFOzs7Ozs7Ozs7O2tIQVUwRjtLQUMvRztJQUNEO1FBQ0UsZ0JBQWdCLEVBQUUsMEJBQTBCO1FBQzVDLFdBQVcsRUFBRSwwQkFBMEI7UUFDdkMsa0JBQWtCLEVBQUU7Ozs7Ozs7Ozt5R0FTaUY7S0FDdEc7SUFDRDtRQUNFLGdCQUFnQixFQUFFLCtCQUErQjtRQUNqRCxXQUFXLEVBQUUsK0JBQStCO1FBQzVDLGtCQUFrQixFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztvS0FvQjRJO0tBQ2pLO0lBQ0Q7UUFDRSxnQkFBZ0IsRUFBRSxnQ0FBZ0M7UUFDbEQsV0FBVyxFQUFFLGdDQUFnQztRQUM3QyxrQkFBa0IsRUFBRTs7Ozs7Ozs7Ozt3SkFVZ0k7S0FDcko7SUFDRDtRQUNFLGdCQUFnQixFQUFFLGNBQWM7UUFDaEMsV0FBVyxFQUFFLGNBQWM7UUFDM0Isa0JBQWtCLEVBQUU7Ozs7Ozs7Ozs7OytFQVd1RDtLQUM1RTtDQWFGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgQWN0aW9uVGF4RnJhZ21lbnRzID0gW1xyXG4gIHtcclxuICAgIGFjdGlvblRheFN1YmplY3Q6IFwiUHJpb3IgWWVhciBUYXggUmV0dXJuc1wiLFxyXG4gICAgYWN0aW9uVGl0bGU6IGBQcm92aWRlIFByaW9yIFllYXIgVGF4IFJldHVybnNgLFxyXG4gICAgYWN0aW9uSW5zdHJ1Y3Rpb25zOiBgPHA+V2UgYXJlIGluIHRoZSBwcm9jZXNzIG9mIHByZXBhcmluZyB5b3VyIHRheCByZXR1cm5zIGFuZCByZXF1aXJlIHlvdXIgYXNzaXN0YW5jZSB0byBlbnN1cmUgYWNjdXJhY3kgYW5kIGNvbXBsZXRlbmVzcy4gT25lIGNyaXRpY2FsIHBpZWNlIG9mIGluZm9ybWF0aW9uIHdlIG5lZWQgaXMgeW91ciA8c3Ryb25nPlByaW9yIFllYXIgVGF4IFJldHVybnM8L3N0cm9uZz4uIFRoaXMgZG9jdW1lbnQgaXMgZXNzZW50aWFsIGZvciBzZXZlcmFsIHJlYXNvbnMsIGluY2x1ZGluZyBidXQgbm90IGxpbWl0ZWQgdG86IHZlcmlmeWluZyBjYXJyeS1mb3J3YXJkIGFtb3VudHMsIGNvbXBhcmluZyB5ZWFyLW92ZXIteWVhciBpbmNvbWUgYW5kIGRlZHVjdGlvbnMsIGFuZCBlbnN1cmluZyBjb21wbGlhbmNlIHdpdGggdGF4IGxhd3MuPC9wPlxyXG4gICAgPHA+VG8gZmFjaWxpdGF0ZSB5b3VyIHRheCBwcmVwYXJhdGlvbiwgcGxlYXNlIHByb3ZpZGUgdGhlIGZvbGxvd2luZzo8L3A+XHJcbiAgICA8b2w+XHJcbiAgICAgICAgPGxpPkEgY29weSBvZiB5b3VyIDxzdHJvbmc+RmVkZXJhbCB0YXggcmV0dXJuPC9zdHJvbmc+IGZvciB0aGUgbGFzdCB0YXggeWVhci48L2xpPlxyXG4gICAgICAgIDxsaT5BIGNvcHkgb2YgeW91ciA8c3Ryb25nPlN0YXRlIHRheCByZXR1cm48L3N0cm9uZz4gZm9yIHRoZSBsYXN0IHRheCB5ZWFyLCBpZiBhcHBsaWNhYmxlLjwvbGk+XHJcbiAgICAgICAgPGxpPkFueSA8c3Ryb25nPm5vdGljZXMgb3IgYW1lbmRtZW50czwvc3Ryb25nPiByZWxhdGVkIHRvIHlvdXIgcHJpb3IgeWVhciB0YXggcmV0dXJucy48L2xpPlxyXG4gICAgPC9vbD5cclxuICAgIDxwPklmIHlvdSBoYXZlIGFueSBkaWZmaWN1bHR5IGluIGdhdGhlcmluZyB0aGVzZSBkb2N1bWVudHMsIHBsZWFzZSBsZXQgdXMga25vdyBhcyBzb29uIGFzIHBvc3NpYmxlIHNvIHdlIGNhbiBkaXNjdXNzIGFsdGVybmF0aXZlIHNvbHV0aW9ucy48L3A+XHJcbiAgICA8cD5XZSBhcHByZWNpYXRlIHlvdXIgcHJvbXB0IGF0dGVudGlvbiB0byB0aGlzIHJlcXVlc3QuIFByb3ZpZGluZyB0aGVzZSB3aWxsIGVuYWJsZSB1cyB0byBjb21wbGV0ZSB5b3VyIHRheCBwcmVwYXJhdGlvbiB3aXRob3V0IGRlbGF5LjwvcD5gLFxyXG4gIH0sXHJcbiAge1xyXG4gICAgYWN0aW9uVGF4U3ViamVjdDogXCJTdGF0dXRvcnkgRXh0ZW5zaW9uc1wiLFxyXG4gICAgYWN0aW9uVGl0bGU6IGBEZXRlcm1pbmluZyBFbGlnaWJpbGl0eSBmb3IgU3RhdHV0b3J5IEZpbGluZyBFeHRlbnNpb25zYCxcclxuICAgIGFjdGlvbkluc3RydWN0aW9uczogYDxwPlRvIGVuc3VyZSB0aGF0IHdlIGNhbiBhY2N1cmF0ZWx5IGRldGVybWluZSBpZiB5b3UgcXVhbGlmeSBmb3Igc3RhdHV0b3J5IGZpbGluZyBleHRlbnNpb25zIGZvciB5b3VyIHRheCByZXR1cm5zLCB3ZSByZXF1aXJlIHNwZWNpZmljIGluZm9ybWF0aW9uIGZyb20geW91LiBQbGVhc2Ugc2VlIGJlbG93IHRoZSBjYXRlZ29yaWVzIG9mIGluZm9ybWF0aW9uIG5lZWRlZCBiYXNlZCBvbiBkaWZmZXJlbnQgZWxpZ2liaWxpdHkgY3JpdGVyaWE6PC9wPlxyXG4gICAgPG9sPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPkZlZGVyYWwgRGlzYXN0ZXIgQXJlYXM8L3N0cm9uZz5cclxuICAgICAgICAgICAgPHVsPlxyXG4gICAgICAgICAgICAgICAgPGxpPkNvbmZpcm1hdGlvbiBvZiB5b3VyIHByaW1hcnkgcmVzaWRlbmNlIGxvY2F0aW9uIGR1cmluZyB0aGUgdGF4IHllYXIuPC9saT5cclxuICAgICAgICAgICAgICAgIDxsaT5Bbnkgb2ZmaWNpYWwgZG9jdW1lbnRhdGlvbiBvciBjb3JyZXNwb25kZW5jZSByZWNlaXZlZCByZWdhcmRpbmcgZGlzYXN0ZXIgZGVjbGFyYXRpb25zIGluIHlvdXIgYXJlYS48L2xpPlxyXG4gICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgIDwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+TGl2aW5nIEFicm9hZDwvc3Ryb25nPlxyXG4gICAgICAgICAgICA8dWw+XHJcbiAgICAgICAgICAgICAgICA8bGk+UHJvb2Ygb2YgcmVzaWRlbmNlIG91dHNpZGUgdGhlIFVuaXRlZCBTdGF0ZXMgZm9yIG1vcmUgdGhhbiAzMzAgZnVsbCBkYXlzIHdpdGhpbiBhIDEyLW1vbnRoIHBlcmlvZC48L2xpPlxyXG4gICAgICAgICAgICAgICAgPGxpPkRvY3VtZW50YXRpb24gc3VwcG9ydGluZyB5b3VyIHBoeXNpY2FsIHByZXNlbmNlIG9yIGJvbmEgZmlkZSByZXNpZGVuY2UgaW4gYSBmb3JlaWduIGNvdW50cnkuPC9saT5cclxuICAgICAgICAgICAgPC91bD5cclxuICAgICAgICA8L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPkFjdGl2ZSBNaWxpdGFyeTwvc3Ryb25nPlxyXG4gICAgICAgICAgICA8dWw+XHJcbiAgICAgICAgICAgICAgICA8bGk+RG9jdW1lbnRhdGlvbiBpbmRpY2F0aW5nIGFjdGl2ZSBkdXR5IHN0YXR1cywgaW5jbHVkaW5nIGRhdGVzIG9mIHNlcnZpY2Ugd2l0aGluIHRoZSB0YXggeWVhci48L2xpPlxyXG4gICAgICAgICAgICAgICAgPGxpPklmIGFwcGxpY2FibGUsIG9yZGVycyBmb3Igb3ZlcnNlYXMgZGVwbG95bWVudC48L2xpPlxyXG4gICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgIDwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+Q29tYmF0IFpvbmU8L3N0cm9uZz5cclxuICAgICAgICAgICAgPHVsPlxyXG4gICAgICAgICAgICAgICAgPGxpPk9mZmljaWFsIG9yZGVycyBkZW1vbnN0cmF0aW5nIHlvdXIgZGVwbG95bWVudCB0byBhIGNvbWJhdCB6b25lLCBpbmNsdWRpbmcgdGhlIHNwZWNpZmljIGRhdGVzLjwvbGk+XHJcbiAgICAgICAgICAgICAgICA8bGk+QW55IHJlbGV2YW50IGNvbW11bmljYXRpb24gZnJvbSB0aGUgRGVwYXJ0bWVudCBvZiBEZWZlbnNlIG9yIG90aGVyIG9mZmljaWFsIGJvZGllcyByZWdhcmRpbmcgeW91ciBzZXJ2aWNlIGluIGEgY29tYmF0IHpvbmUuPC9saT5cclxuICAgICAgICAgICAgPC91bD5cclxuICAgICAgICA8L2xpPlxyXG4gICAgPC9vbD5cclxuICAgIDxwPlBsZWFzZSBlbnN1cmUgdGhhdCB5b3UgcHJvdmlkZSB0aGlzIGluZm9ybWF0aW9uIGF0IHlvdXIgZWFybGllc3QgY29udmVuaWVuY2UgdG8gZmFjaWxpdGF0ZSB0aGUgYWNjdXJhdGUgYW5kIHRpbWVseSBwcmVwYXJhdGlvbiBvZiB5b3VyIHRheCByZXR1cm5zLiBJZiB5b3UgaGF2ZSBhbnkgcXVlc3Rpb25zIG9yIG5lZWQgZnVydGhlciBjbGFyaWZpY2F0aW9uLCBkbyBub3QgaGVzaXRhdGUgdG8gY29udGFjdCB1cy48L3A+YFxyXG4gIH0sXHJcbiAge1xyXG4gICAgYWN0aW9uVGF4U3ViamVjdDogXCJEZXBlbmRlbnRzXCIsXHJcbiAgICBhY3Rpb25UaXRsZTogXCJSZXF1ZXN0IGZvciBEZXBlbmRlbnQgSW5mb3JtYXRpb25cIixcclxuICAgIGFjdGlvbkluc3RydWN0aW9uczogYDxwPldlIGFyZSBpbiB0aGUgcHJvY2VzcyBvZiBwcmVwYXJpbmcgeW91ciB0YXggZG9jdW1lbnRzIGFuZCBuZWVkIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gcmVnYXJkaW5nIHlvdXIgZGVwZW5kZW50cy4gVGhpcyBpbmZvcm1hdGlvbiBpcyBjcnVjaWFsIGZvciBhcHBseWluZyB0aGUgbW9zdCBiZW5lZmljaWFsIGRlcGVuZGVuY3kgdGVzdHMsIGluY2x1ZGluZyBxdWFsaWZpY2F0aW9ucyBmb3IgSGVhZCBvZiBIb3VzZWhvbGQgKEhPSCksIENoaWxkIFRheCBDcmVkaXQsIGFuZCBvdGhlciByZWxhdGVkIGJlbmVmaXRzLiBQbGVhc2UgcHJvdmlkZSB0aGUgZm9sbG93aW5nIGRldGFpbHMgZm9yIGVhY2ggb2YgeW91ciBjbGFpbWVkIGRlcGVuZGVudHM6PC9wPlxyXG4gICAgPG9sPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPkZ1bGwgTmFtZTo8L3N0cm9uZz4gVGhlIGNvbXBsZXRlIGxlZ2FsIG5hbWUgb2YgdGhlIGRlcGVuZGVudC48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPlNvY2lhbCBTZWN1cml0eSBOdW1iZXIgKFNTTikgb3IgVGF4cGF5ZXIgSWRlbnRpZmljYXRpb24gTnVtYmVyIChUSU4pOjwvc3Ryb25nPiBUaGlzIGlzIG5lY2Vzc2FyeSBmb3IgaWRlbnRpZmljYXRpb24gcHVycG9zZXMuPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5EYXRlIG9mIEJpcnRoOjwvc3Ryb25nPiBIZWxwcyB0byBkZXRlcm1pbmUgZWxpZ2liaWxpdHkgZm9yIGNlcnRhaW4gY3JlZGl0cyBsaWtlIHRoZSBDaGlsZCBUYXggQ3JlZGl0LjwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+UmVsYXRpb25zaGlwIHRvIFlvdTo8L3N0cm9uZz4gU3BlY2lmeSB0aGUgZGVwZW5kZW50J3MgcmVsYXRpb25zaGlwIChzb24sIGRhdWdodGVyLCBzdGVwY2hpbGQsIGZvc3RlciBjaGlsZCwgYnJvdGhlciwgc2lzdGVyLCBldGMuKSB0byB5b3UuPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5SZXNpZGVuY3k6PC9zdHJvbmc+IENvbmZpcm0gdGhlIGRlcGVuZGVudCBsaXZlZCB3aXRoIHlvdSBmb3IgbW9yZSB0aGFuIGhhbGYgdGhlIHllYXIuPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5GaW5hbmNpYWwgU3VwcG9ydDo8L3N0cm9uZz4gQ29uZmlybSB5b3UgcHJvdmlkZWQgbW9yZSB0aGFuIGhhbGYgb2YgdGhlIGRlcGVuZGVudOKAmXMgZmluYW5jaWFsIHN1cHBvcnQgZm9yIHRoZSB5ZWFyLjwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+Q2l0aXplbnNoaXA6PC9zdHJvbmc+IENvbmZpcm0gdGhlIGRlcGVuZGVudCBpcyBhIFUuUy4gY2l0aXplbiwgVS5TLiBuYXRpb25hbCwgb3IgYSByZXNpZGVudCBhbGllbi48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPk1hcml0YWwgU3RhdHVzOjwvc3Ryb25nPiBJbmRpY2F0ZSB3aGV0aGVyIHRoZSBkZXBlbmRlbnQgaXMgbWFycmllZCBhbmQsIGlmIHNvLCB3aGV0aGVyIHRoZXkgYXJlIGZpbGluZyBqb2ludGx5LjwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+SW5jb21lIEluZm9ybWF0aW9uOjwvc3Ryb25nPiBJZiBhcHBsaWNhYmxlLCBwcm92aWRlIGRldGFpbHMgcmVnYXJkaW5nIGFueSBpbmNvbWUgdGhlIGRlcGVuZGVudCBtYXkgaGF2ZSBlYXJuZWQgb3IgcmVjZWl2ZWQuPC9saT5cclxuICAgIDwvb2w+XHJcbiAgICA8cD5QbGVhc2UgZW5zdXJlIHlvdSBwcm92aWRlIGNvbXBsZXRlIGFuZCBhY2N1cmF0ZSBpbmZvcm1hdGlvbiB0byBhdm9pZCBhbnkgZGVsYXlzIGluIHRoZSBwcm9jZXNzaW5nIG9mIHlvdXIgdGF4IHJldHVybi48L3A+XHJcbiAgICA8cD5UaGFuayB5b3UgZm9yIHlvdXIgcHJvbXB0IGF0dGVudGlvbiB0byB0aGlzIG1hdHRlci4gSWYgeW91IGhhdmUgYW55IHF1ZXN0aW9ucyBvciByZXF1aXJlIGZ1cnRoZXIgYXNzaXN0YW5jZSwgcGxlYXNlIGRvIG5vdCBoZXNpdGF0ZSB0byBjb250YWN0IHVzLjwvcD5gXHJcbiAgfSxcclxuICB7XHJcbiAgICBhY3Rpb25UYXhTdWJqZWN0OiBcIkhlYWQgb2YgSG91c2Vob2xkXCIsXHJcbiAgICBhY3Rpb25UaXRsZTogXCJIZWFkIG9mIEhvdXNlaG9sZCBGaWxpbmdcIixcclxuICAgIGFjdGlvbkluc3RydWN0aW9uczogYDxwPlRvIGVuc3VyZSBhY2N1cmF0ZSBhbmQgY29tcGxpYW50IHRheCBmaWxpbmcgdW5kZXIgdGhlIFwiSGVhZCBvZiBIb3VzZWhvbGRcIiBzdGF0dXMsIHdlIGtpbmRseSByZXF1ZXN0IHRoZSBmb2xsb3dpbmcgaW5mb3JtYXRpb24uIFRoaXMgc3RhdHVzIGNhbiBwcm92aWRlIHNpZ25pZmljYW50IHRheCBiZW5lZml0cywgYW5kIGl0IGlzIGNydWNpYWwgdGhhdCBhbGwgSVJTIHJlcXVpcmVtZW50cyBhcmUgbWV0LiBQbGVhc2UgcHJvdmlkZTo8L3A+XHJcbiAgICA8b2w+XHJcbiAgICA8bGk+PHN0cm9uZz5NYXJpdGFsIFN0YXR1czo8L3N0cm9uZz4gQ29uZmlybWF0aW9uIG9mIHlvdXIgbWFyaXRhbCBzdGF0dXMgYXMgb2YgdGhlIGxhc3QgZGF5IG9mIHRoZSB0YXggeWVhciAoZS5nLiwgc2luZ2xlLCBkaXZvcmNlZCwgbGVnYWxseSBzZXBhcmF0ZWQpLjwvbGk+XHJcbiAgICA8bGk+PHN0cm9uZz5Ib3VzZWhvbGQgRXhwZW5zZXM6PC9zdHJvbmc+IERldGFpbGVkIHJlY29yZHMgaW5kaWNhdGluZyB0aGF0IHlvdSBwYWlkIG1vcmUgdGhhbiBoYWxmIG9mIHRoZSBjb3N0cyBvZiBrZWVwaW5nIHVwIGEgaG9tZSBmb3IgdGhlIHRheCB5ZWFyLiBUaGlzIGluY2x1ZGVzIHJlbnQsIG1vcnRnYWdlIGludGVyZXN0LCBwcm9wZXJ0eSB0YXhlcywgdXRpbGl0aWVzLCByZXBhaXJzLCBtYWludGVuYW5jZSwgYW5kIGdyb2Nlcmllcy48L2xpPlxyXG4gICAgPGxpPjxzdHJvbmc+UXVhbGlmeWluZyBQZXJzb246PC9zdHJvbmc+IEluZm9ybWF0aW9uIG9uIHRoZSBxdWFsaWZ5aW5nIHBlcnNvbihzKSB3aG8gbGl2ZWQgd2l0aCB5b3UgaW4gdGhlIGhvbWUgZm9yIG1vcmUgdGhhbiBoYWxmIG9mIHRoZSB5ZWFyLCBleGNlcHQgZm9yIHRlbXBvcmFyeSBhYnNlbmNlcyBzdWNoIGFzIHNjaG9vbC4gUGxlYXNlIGluY2x1ZGU6XHJcbiAgICAgIDx1bD5cclxuICAgICAgPGxpPkZ1bGwgbmFtZSBhbmQgcmVsYXRpb25zaGlwIHRvIHlvdSAoZS5nLiwgY2hpbGQsIHBhcmVudCwgc2libGluZykuPC9saT5cclxuICAgICAgPGxpPkR1cmF0aW9uIG9mIHJlc2lkZW5jeSBhdCB5b3VyIGhvbWUgZHVyaW5nIHRoZSB0YXggeWVhci48L2xpPlxyXG4gICAgICA8bGk+U3VwcG9ydGluZyBkb2N1bWVudHMgKGJpcnRoIGNlcnRpZmljYXRlcywgc2Nob29sIHJlY29yZHMsIGV0Yy4pIHByb3ZpbmcgdGhlIHJlc2lkZW5jeSBhbmQgcmVsYXRpb25zaGlwLjwvbGk+XHJcbiAgICAgIDwvdWw+XHJcbiAgICA8L2xpPlxyXG4gICAgPGxpPjxzdHJvbmc+QWRkaXRpb25hbCBTdXBwb3J0Ojwvc3Ryb25nPiBBbnkgZnVydGhlciBkb2N1bWVudGF0aW9uIHRoYXQgY2FuIHN1cHBvcnQgeW91ciBjbGFpbSBmb3IgdGhlIEhlYWQgb2YgSG91c2Vob2xkIGZpbGluZyBzdGF0dXMuPC9saT5cclxuICAgIDwvb2w+XHJcbiAgICA8cD5QbGVhc2Ugbm90ZSB0aGF0IHByb3ZpZGluZyBhY2N1cmF0ZSBhbmQgY29tcGxldGUgaW5mb3JtYXRpb24gaXMgZXNzZW50aWFsIGZvciB5b3VyIGJlbmVmaXQgYW5kIHRvIGNvbXBseSB3aXRoIHRheCBsYXdzLiBTaG91bGQgeW91IGhhdmUgYW55IHF1ZXN0aW9ucyBvciByZXF1aXJlIGFzc2lzdGFuY2UgaW4gZ2F0aGVyaW5nIHRoZXNlIGRldGFpbHMsIGRvIG5vdCBoZXNpdGF0ZSB0byBjb250YWN0IHVzLjwvcD5gXHJcbiAgfSxcclxuICB7XHJcbiAgICBhY3Rpb25UYXhTdWJqZWN0OiBcIlJlc2lkZW5jeSBTdGF0dXNcIixcclxuICAgIGFjdGlvblRpdGxlOiBcIkluZm9ybWF0aW9uIG9uIFJlc2lkZW5jeSBTdGF0dXNcIixcclxuICAgIGFjdGlvbkluc3RydWN0aW9uczogYDxwPldlIHVuZGVyc3RhbmQgdGhhdCBlaXRoZXIgeW91IG9yIHlvdXIgc3BvdXNlIGlzIG5vdCBhIFUuUy4gY2l0aXplbi4gVG8gYWNjdXJhdGVseSBkZXRlcm1pbmUgeW91ciB0YXggc3RhdHVzLCB3ZSBuZWVkIHRvIGFwcGx5IHRoZSBuZWNlc3NhcnkgVGF4IFJlc2lkZW5jeSBUZXN0cywgd2hpY2ggaW5jbHVkZSB0aGUgPHN0cm9uZz5HcmVlbiBDYXJkIFRlc3Q8L3N0cm9uZz4gYW5kIHRoZSA8c3Ryb25nPlN1YnN0YW50aWFsIFByZXNlbmNlIFRlc3Q8L3N0cm9uZz4uIFRoaXMgd2lsbCBoZWxwIHVzIGVuc3VyZSB5b3VyIHRheCByZXR1cm5zIGFyZSBjb21wbGV0ZWQgY29ycmVjdGx5IGFuZCBjb21wbHkgd2l0aCBVLlMuIHJlZ3VsYXRpb25zLjwvcD5cclxuXHJcbiAgICA8cD5UbyBwcm9jZWVkLCB3ZSBraW5kbHkgYXNrIHlvdSB0byBwcm92aWRlIHRoZSBmb2xsb3dpbmcgaW5mb3JtYXRpb246PC9wPlxyXG4gICAgPG9sPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPkdyZWVuIENhcmQgU3RhdHVzOjwvc3Ryb25nPiBQbGVhc2UgY29uZmlybSBpZiB5b3Ugb3IgeW91ciBzcG91c2UgaGF2ZSBiZWVuIGlzc3VlZCBhIFUuUy4gZ3JlZW4gY2FyZCAoTGF3ZnVsIFBlcm1hbmVudCBSZXNpZGVudCBDYXJkKSBhdCBhbnkgcG9pbnQgZHVyaW5nIHRoZSB0YXggeWVhci4gSWYgeWVzLCBwcm92aWRlIGEgY29weSBvZiB0aGUgZ3JlZW4gY2FyZCBvciB0aGUgb2ZmaWNpYWwgZG9jdW1lbnQgY29uZmlybWluZyB0aGUgc3RhdHVzLjwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+RGF0ZSBvZiBBcnJpdmFsIGluIHRoZSBVLlMuOjwvc3Ryb25nPiBUaGUgZXhhY3QgZGF0ZXMgd2hlbiB5b3UgYW5kL29yIHlvdXIgc3BvdXNlIGZpcnN0IGFycml2ZWQgaW4gdGhlIFUuUy4gZHVyaW5nIHRoZSB0YXggeWVhci48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPlRyYXZlbCBIaXN0b3J5Ojwvc3Ryb25nPiBBIGRldGFpbGVkIGxpc3Qgb2YgYWxsIHRoZSBkYXRlcyB5b3UgYW5kL29yIHlvdXIgc3BvdXNlIGVudGVyZWQgYW5kIGxlZnQgdGhlIFUuUy4gZHVyaW5nIHRoZSB0YXggeWVhci4gVGhpcyBpbmZvcm1hdGlvbiBpcyBjcnVjaWFsIGZvciB0aGUgU3Vic3RhbnRpYWwgUHJlc2VuY2UgVGVzdC48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPlZpc2EgVHlwZTo8L3N0cm9uZz4gSWYgeW91IG9yIHlvdXIgc3BvdXNlIGFyZSBvbiBhIHZpc2EsIHBsZWFzZSBzcGVjaWZ5IHRoZSB0eXBlIGFuZCBwcm92aWRlIGEgY29weSBvZiB0aGUgdmlzYS48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPlByZXZpb3VzIFllYXIgVGF4IEZpbGluZ3M6PC9zdHJvbmc+IENvcGllcyBvZiBsYXN0IHllYXIncyB0YXggcmV0dXJucywgaWYgYXBwbGljYWJsZS4gVGhpcyBpbmZvcm1hdGlvbiBjYW4gcHJvdmlkZSBjb250ZXh0IGFuZCBoZWxwIGRldGVybWluZSByZXNpZGVuY3kgc3RhdHVzIG1vcmUgYWNjdXJhdGVseS48L2xpPlxyXG4gICAgPC9vbD5cclxuXHJcbiAgICA8cD5QbGVhc2UgZW5zdXJlIGFsbCBkb2N1bWVudHMgYXJlIGNsZWFyIGFuZCBsZWdpYmxlLiBZb3UgY2FuIHNlbmQgdGhlbSB0byB1cyB2aWEgZW1haWwgb3IgdGhyb3VnaCBvdXIgc2VjdXJlIGNsaWVudCBwb3J0YWwuIEZvciBhbnkgcXVlc3Rpb25zIG9yIGFzc2lzdGFuY2UsIGZlZWwgZnJlZSB0byBjb250YWN0IHVzIGRpcmVjdGx5LjwvcD5cclxuXHJcbiAgICA8cD5XZSBhcHByZWNpYXRlIHlvdXIgcHJvbXB0IGF0dGVudGlvbiB0byB0aGlzIG1hdHRlciBhbmQgbG9vayBmb3J3YXJkIHRvIGFzc2lzdGluZyB5b3Ugd2l0aCB5b3VyIHRheCBwcmVwYXJhdGlvbi48L3A+YFxyXG4gIH0sXHJcbiAge1xyXG4gICAgYWN0aW9uVGF4U3ViamVjdDogXCJKb2ludCBUYXggUmVsaWVmXCIsXHJcbiAgICBhY3Rpb25UaXRsZTogXCJKb2ludCBUYXggUmVsaWVmIERldGFpbHNcIixcclxuICAgIGFjdGlvbkluc3RydWN0aW9uczogYDxwPlRvIGFzc2lzdCB5b3UgZWZmZWN0aXZlbHkgd2l0aCB5b3VyIHJlcXVlc3QgZm9yIGpvaW50IHRheCByZWxpZWYsIHdlIG5lZWQgdG8gY29sbGVjdCBzcGVjaWZpYyBpbmZvcm1hdGlvbiB0byB1bmRlcnN0YW5kIHlvdXIgc2l0dWF0aW9uIHRob3JvdWdobHkuIFRoaXMgd2lsbCBoZWxwIHVzIGRldGVybWluZSB0aGUgbW9zdCBzdWl0YWJsZSB0eXBlIG9mIHJlbGllZiBmb3IgeW91ciBjaXJjdW1zdGFuY2VzLCB3aGljaCBtYXkgaW5jbHVkZSBJbm5vY2VudCBTcG91c2UgUmVsaWVmLCBJbmp1cmVkIFNwb3VzZSBBbGxvY2F0aW9uLCBTZXBhcmF0aW9uIG9mIExpYWJpbGl0eSBSZWxpZWYsIG9yIEVxdWl0YWJsZSBSZWxpZWYuIFBsZWFzZSBwcm92aWRlIHRoZSBmb2xsb3dpbmcgZG9jdW1lbnRzIGFuZCBpbmZvcm1hdGlvbiBhdCB5b3VyIGVhcmxpZXN0IGNvbnZlbmllbmNlOjwvcD5cclxuICAgIDxvbD5cclxuICAgICAgPGxpPjxzdHJvbmc+Q29tcGxldGUgVGF4IFJldHVybnM6PC9zdHJvbmc+IENvcGllcyBvZiBhbGwgdGF4IHJldHVybnMgZm9yIHRoZSB5ZWFycyB5b3UgYXJlIHJlcXVlc3RpbmcgcmVsaWVmLjwvbGk+XHJcbiAgICAgIDxsaT48c3Ryb25nPkRldGFpbGVkIFN0YXRlbWVudDo8L3N0cm9uZz4gQSB3cml0dGVuIHN0YXRlbWVudCBleHBsYWluaW5nIHdoeSB5b3UgYmVsaWV2ZSB5b3UgcXVhbGlmeSBmb3IgcmVsaWVmLCBpbmNsdWRpbmcgYW55IHNwZWNpZmljIGV2ZW50cyBvciBjaXJjdW1zdGFuY2VzIHlvdSB3YW50IHVzIHRvIGNvbnNpZGVyLjwvbGk+XHJcbiAgICAgIDxsaT48c3Ryb25nPkluY29tZSBEb2N1bWVudGF0aW9uOjwvc3Ryb25nPiBQcm9vZiBvZiB5b3VyIGN1cnJlbnQgaW5jb21lIGFuZCB0aGF0IG9mIHlvdXIgc3BvdXNlIGlmIGFwcGxpY2FibGUsIHN1Y2ggYXMgcmVjZW50IHBheSBzdHVicywgVy0yIGZvcm1zLCBvciBvdGhlciBpbmNvbWUgc3RhdGVtZW50cy48L2xpPlxyXG4gICAgICA8bGk+PHN0cm9uZz5Qcm9vZiBvZiBGaW5hbmNpYWwgU2l0dWF0aW9uOjwvc3Ryb25nPiBEb2N1bWVudHMgc2hvd2luZyB5b3VyIGN1cnJlbnQgZmluYW5jaWFsIHNpdHVhdGlvbiwgaW5jbHVkaW5nIGJhbmsgc3RhdGVtZW50cywgbW9udGhseSBiaWxscywgYW5kIGFueSBvdGhlciBsaWFiaWxpdGllcy48L2xpPlxyXG4gICAgICA8bGk+PHN0cm9uZz5Eb2N1bWVudGF0aW9uIG9mIE1hcml0YWwgU3RhdHVzOjwvc3Ryb25nPiBJZiBhcHBsaWNhYmxlLCBsZWdhbCBkb2N1bWVudHMgcmVsYXRlZCB0byBzZXBhcmF0aW9uLCBkaXZvcmNlLCBvciBhbm51bG1lbnQuPC9saT5cclxuICAgICAgPGxpPjxzdHJvbmc+UHJvb2Ygb2YgUmVzaWRlbmNlOjwvc3Ryb25nPiBEb2N1bWVudHMgdGhhdCBwcm92ZSB3aGVyZSBlYWNoIG9mIHlvdSBoYXMgbGl2ZWQgZHVyaW5nIHRoZSB0YXggeWVhcnMgaW4gcXVlc3Rpb24uPC9saT5cclxuICAgICAgPGxpPjxzdHJvbmc+QW55IENvcnJlc3BvbmRlbmNlIGZyb20gdGhlIElSUzo8L3N0cm9uZz4gSWYgeW91IGhhdmUgcmVjZWl2ZWQgYW55IG5vdGljZXMgb3IgbGV0dGVycyBmcm9tIHRoZSBJUlMgcmVnYXJkaW5nIHlvdXIgam9pbnQgdGF4IGxpYWJpbGl0eSwgcGxlYXNlIGluY2x1ZGUgY29waWVzLjwvbGk+XHJcbiAgICA8L29sPlxyXG4gICAgPHA+UGxlYXNlIGVuc3VyZSBhbGwgZG9jdW1lbnRzIGFyZSBjbGVhcmx5IGxlZ2libGUuIFlvdSBtYXkgc2VuZCB0aGVtIHZpYSBlbWFpbCwgb3IgdXBsb2FkLiBJZiB5b3UgaGF2ZSBhbnkgcXVlc3Rpb25zIG9yIG5lZWQgZnVydGhlciBjbGFyaWZpY2F0aW9uIG9uIHdoYXQgdG8gcHJvdmlkZSwgZG9uJ3QgaGVzaXRhdGUgdG8gcmVhY2ggb3V0LjwvcD5cclxuICAgIDxwPldlIHVuZGVyc3RhbmQgdGhhdCB0aGlzIHByb2Nlc3MgY2FuIGJlIGNvbXBsZXgsIGJ1dCB3ZSBhcmUgaGVyZSB0byBndWlkZSB5b3UgdGhyb3VnaCBpdC4gT3VyIGdvYWwgaXMgdG8gZW5zdXJlIHdlIGhhdmUgYSBjb21wcmVoZW5zaXZlIHVuZGVyc3RhbmRpbmcgb2YgeW91ciBzaXR1YXRpb24gdG8gYWR2b2NhdGUgZm9yIHRoZSBtb3N0IGZhdm9yYWJsZSBvdXRjb21lIG9uIHlvdXIgYmVoYWxmLjwvcD5gXHJcbiAgfSxcclxuICB7XHJcbiAgICBhY3Rpb25UYXhTdWJqZWN0OiBcIjEwOTkgTkVDIEluY29tZVwiLFxyXG4gICAgYWN0aW9uVGl0bGU6IFwiMTA5OSBORUMgSW5jb21lXCIsXHJcbiAgICBhY3Rpb25JbnN0cnVjdGlvbnM6IGA8cD5XZSBhcmUgaW4gdGhlIHByb2Nlc3Mgb2YgcHJlcGFyaW5nIHlvdXIgdGF4IHJldHVybiBhbmQgcmVxdWlyZSBhIGNvbXByZWhlbnNpdmUgdW5kZXJzdGFuZGluZyBvZiBhbGwgeW91ciBzb3VyY2VzIG9mIGluY29tZS4gU3BlY2lmaWNhbGx5LCB3ZSBuZWVkIHRvIGFjY291bnQgZm9yIHlvdXIgMTA5OSBORUMgSW5jb21lLiBUaGUgMTA5OS1ORUMgZm9ybSBpcyBjcnVjaWFsIGZvciBjb3JyZWN0bHkgcmVwb3J0aW5nIHlvdXIgbm9uLWVtcGxveWVlIGNvbXBlbnNhdGlvbi48L3A+XHJcbiAgICA8cD5UbyBlbnN1cmUgYSB0aG9yb3VnaCBhbmQgYWNjdXJhdGUgdGF4IHByZXBhcmF0aW9uLCBwbGVhc2UgcHJvdmlkZSB1cyB3aXRoIHRoZSBmb2xsb3dpbmc6PC9wPlxyXG4gICAgPG9sPlxyXG4gICAgICAgIDxsaT48Yj5BbGwgMTA5OS1ORUMgZm9ybXM8L2I+IHlvdSByZWNlaXZlZCBmb3IgdGhlIHRheCB5ZWFyLjwvbGk+XHJcbiAgICAgICAgPGxpPkRldGFpbHMgb2YgYW55IDxiPmFkZGl0aW9uYWwgbm9uLWVtcGxveWVlIGNvbXBlbnNhdGlvbjwvYj4gbm90IHJlcG9ydGVkIG9uIGEgMTA5OS1ORUMgZm9ybS48L2xpPlxyXG4gICAgICAgIDxsaT5JbmZvcm1hdGlvbiByZWdhcmRpbmcgPGI+ZXhwZW5zZXMgcmVsYXRlZCB0byB5b3VyIDEwOTkgTkVDIGluY29tZTwvYj4sIGlmIGFwcGxpY2FibGUuPC9saT5cclxuICAgIDwvb2w+XHJcbiAgICA8cD5JZiB5b3UgaGF2ZSBub3QgeWV0IHJlY2VpdmVkIGFsbCB5b3VyIDEwOTktTkVDIGZvcm1zLCBwbGVhc2UgbGV0IHVzIGtub3csIGFuZCBwcm92aWRlIGFuIGVzdGltYXRlIG9mIHdoZW4geW91IGV4cGVjdCB0byByZWNlaXZlIHRoZW0uIFRoaXMgaW5mb3JtYXRpb24gaXMgY3JpdGljYWwgZm9yIGFjY3VyYXRlbHkgcmVwb3J0aW5nIHlvdXIgaW5jb21lIGFuZCBhdm9pZGluZyBwb3RlbnRpYWwgcGVuYWx0aWVzIG9yIGF1ZGl0cyBmcm9tIHRoZSBJUlMuPC9wPlxyXG4gICAgPHA+UGxlYXNlIHJlYWNoIG91dCB0byB1cyBkaXJlY3RseSBzaG91bGQgeW91IGhhdmUgYW55IHF1ZXN0aW9ucyBvciBuZWVkIGZ1cnRoZXIgY2xhcmlmaWNhdGlvbi4gWW91ciBwcm9tcHQgcmVzcG9uc2UgaXMgZ3JlYXRseSBhcHByZWNpYXRlZCB0byBlbnN1cmUgeW91ciB0YXggcmV0dXJuIGlzIHByb2Nlc3NlZCBlZmZpY2llbnRseSBhbmQgYWNjdXJhdGVseS48L3A+XHJcbmBcclxuICB9LFxyXG4gIHtcclxuICAgIGFjdGlvblRheFN1YmplY3Q6IFwiU2NoZWR1bGUgSy0xIEluZm9ybWF0aW9uXCIsXHJcbiAgICBhY3Rpb25UaXRsZTogXCJTY2hlZHVsZSBLLTEgSW5mb3JtYXRpb25cIixcclxuICAgIGFjdGlvbkluc3RydWN0aW9uczogYDxwPldlIHVuZGVyc3RhbmQgdGhhdCB5b3UgaGF2ZSBpbmRpY2F0ZWQgdGhlIHByZXNlbmNlIG9mIFNjaGVkdWxlIEsgaW5jb21lIGZvciB0aGUgY3VycmVudCB0YXggeWVhci4gSW4gb3JkZXIgdG8gZW5zdXJlIHRoZSBhY2N1cmFjeSBhbmQgY29tcGxldGVuZXNzIG9mIHlvdXIgdGF4IHJldHVybiwgaXQgaXMgaW1wZXJhdGl2ZSB0aGF0IHdlIGdhdGhlciBhbGwgbmVjZXNzYXJ5IGRvY3VtZW50cyByZWxhdGVkIHRvIHRoaXMgaW5jb21lLjwvcD5cclxuICAgIDxwPklmIHdlIGFyZSBwcmVwYXJpbmcgeW91ciBidXNpbmVzcyByZXR1cm4sIHJlc3QgYXNzdXJlZCB0aGF0IHdlIHdpbGwgZ2VuZXJhdGUgdGhlIGFwcGxpY2FibGUgU2NoZWR1bGUgSy0xKHMpIGZvciB5b3VyIGJ1c2luZXNzIGludGVyZXN0cy4gSG93ZXZlciwgaXQgaXMgZXNzZW50aWFsIHRoYXQgd2UgY29sbGVjdCBjb3BpZXMgb2YgPHN0cm9uZz5hbGwgb3RoZXIgU2NoZWR1bGUgSy0xczwvc3Ryb25nPiB5b3UgbWF5IGhhdmUgcmVjZWl2ZWQgdG8gaW5jb3Jwb3JhdGUgaW50byB5b3VyIHBlcnNvbmFsIHRheCByZXR1cm4uPC9wPiAgXHJcbiAgICA8aDM+U3BlY2lmaWMgRG9jdW1lbnQgUmVxdWVzdDo8L2gzPlxyXG4gICAgPG9sPlxyXG4gICAgICAgIDxsaT5BbnkgYW5kIGFsbCBTY2hlZHVsZSBLLTEocykgeW91IGhhdmUgcmVjZWl2ZWQgZnJvbTo8L2xpPlxyXG4gICAgICAgIDx1bD5cclxuICAgICAgICAgICAgPGxpPlBhcnRuZXJzaGlwczwvbGk+XHJcbiAgICAgICAgICAgIDxsaT5TIENvcnBvcmF0aW9uczwvbGk+XHJcbiAgICAgICAgICAgIDxsaT5Fc3RhdGUgb3IgVHJ1c3RzPC9saT5cclxuICAgICAgICA8L3VsPlxyXG4gICAgPC9vbD5cclxuICAgIDxwPlBsZWFzZSBlbnN1cmUgdGhhdCBhbGwgZG9jdW1lbnRzIGFyZSA8c3Ryb25nPmNsZWFyIGFuZCBsZWdpYmxlPC9zdHJvbmc+IHRvIHByZXZlbnQgYW55IGRlbGF5cyBpbiBwcm9jZXNzaW5nIHlvdXIgcmV0dXJuLiBZb3UgbWF5IHN1Ym1pdCB0aGVzZSBkb2N1bWVudHMgdGhyb3VnaCBvdXIgc2VjdXJlIGNsaWVudCBwb3J0YWwsIG9yIGNvbnRhY3QgdXMgdG8gbWFrZSBhbHRlcm5hdGl2ZSBhcnJhbmdlbWVudHMgaWYgbmVjZXNzYXJ5LjwvcD5cclxuICAgIDxwPldlIGFwcHJlY2lhdGUgeW91ciBwcm9tcHQgYXR0ZW50aW9uIHRvIHRoaXMgcmVxdWVzdC4gU2hvdWxkIHlvdSBoYXZlIGFueSBxdWVzdGlvbnMgb3IgcmVxdWlyZSBhbnkgYXNzaXN0YW5jZSwgcGxlYXNlIGRvIG5vdCBoZXNpdGF0ZSB0byByZWFjaCBvdXQuPC9wPmBcclxuICB9LFxyXG4gIHtcclxuICAgIGFjdGlvblRheFN1YmplY3Q6IFwiT3RoZXIgU2VsZi1FbXBsb3ltZW50IEluY29tZVwiLFxyXG4gICAgYWN0aW9uVGl0bGU6IFwiT3RoZXIgU2VsZi1FbXBsb3ltZW50IEluY29tZVwiLFxyXG4gICAgYWN0aW9uSW5zdHJ1Y3Rpb25zOiBgPHA+V2UgYXJlIGluIHRoZSBwcm9jZXNzIG9mIHByZXBhcmluZyB5b3VyIHRheGVzIGFuZCBoYXZlIG5vdGVkIHRoYXQgeW91IGhhdmUgaW5kaWNhdGVkIHRoZSBwcmVzZW5jZSBvZiBzZWxmLWVtcGxveW1lbnQgaW5jb21lIG5vdCByZXBvcnRlZCB0aHJvdWdoIDEwOTktTkVDIGZvcm1zIG9yIGEgU2NoZWR1bGUgSy0xLiBUbyBlbnN1cmUgeW91ciB0YXggcmV0dXJuIGlzIGFjY3VyYXRlIGFuZCBtYXhpbWl6ZXMgeW91ciBiZW5lZml0cywgaXQncyBjcnVjaWFsIHdlIGdhdGhlciBtb3JlIGRldGFpbHMgYWJvdXQgdGhlc2Ugc291cmNlcyBvZiBpbmNvbWUuIFBsZWFzZSBwcm92aWRlIHRoZSBmb2xsb3dpbmcgaW5mb3JtYXRpb246PC9wPlxyXG4gICAgPG9sPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPkRlc2NyaXB0aW9uIG9mIGVhY2ggc2VsZi1lbXBsb3ltZW50IGFjdGl2aXR5Ojwvc3Ryb25nPiBCcmllZmx5IGRlc2NyaWJlIHRoZSBuYXR1cmUgb2YgZWFjaCBhY3Rpdml0eSBmcm9tIHdoaWNoIHlvdSBkZXJpdmUgc2VsZi1lbXBsb3ltZW50IGluY29tZS48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPkRhdGVzIG9mIG9wZXJhdGlvbjo8L3N0cm9uZz4gRm9yIGVhY2ggc2VsZi1lbXBsb3ltZW50IGFjdGl2aXR5LCBzcGVjaWZ5IHRoZSBkYXRlcyBvciByYW5nZSBvZiBkYXRlcyBkdXJpbmcgd2hpY2ggeW91IGVhcm5lZCBpbmNvbWUuPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5Ub3RhbCBpbmNvbWUgZ2VuZXJhdGVkOjwvc3Ryb25nPiBGb3IgZWFjaCBhY3Rpdml0eSwgcHJvdmlkZSB0aGUgdG90YWwgYW1vdW50IG9mIGluY29tZSBlYXJuZWQgYmVmb3JlIGFueSBleHBlbnNlcy48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPkV4cGVuc2VzIGluY3VycmVkOjwvc3Ryb25nPiBMaXN0IGFsbCBleHBlbnNlcyByZWxhdGVkIHRvIGVhY2ggc2VsZi1lbXBsb3ltZW50IGFjdGl2aXR5LiBQbGVhc2UgY2F0ZWdvcml6ZSB0aGVzZSBleHBlbnNlcyAoZS5nLiwgb2ZmaWNlIHN1cHBsaWVzLCB0cmF2ZWwsIGFkdmVydGlzaW5nKS48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPlJlY29yZHMgb3IgZG9jdW1lbnRhdGlvbjo8L3N0cm9uZz4gQW55IGV4aXN0aW5nIHJlY29yZHMgb3IgZG9jdW1lbnRhdGlvbiB0aGF0IGNvcnJvYm9yYXRlIHlvdXIgaW5jb21lIGFuZCBleHBlbnNlcywgc3VjaCBhcyBiYW5rIHN0YXRlbWVudHMsIHJlY2VpcHRzLCBpbnZvaWNlcywgb3IgY29udHJhY3RzLjwvbGk+XHJcbiAgICA8L29sPlxyXG4gICAgPHA+VGhpcyBpbmZvcm1hdGlvbiBpcyB2aXRhbCBmb3IgZGV0ZXJtaW5pbmcgdGhlIGNvcnJlY3QgYW1vdW50IG9mIHRheCB5b3Ugb3dlIGFuZCBpZGVudGlmeWluZyBhbnkgcG90ZW50aWFsIGRlZHVjdGlvbnMgdGhhdCBjYW4gbWluaW1pemUgeW91ciB0YXggbGlhYmlsaXR5LiBQbGVhc2UgcHJvdmlkZSB0aGVzZSBkZXRhaWxzIGF0IHlvdXIgZWFybGllc3QgY29udmVuaWVuY2UgdG8gZW5zdXJlIGEgc21vb3RoIGFuZCBlZmZpY2llbnQgdGF4IHByZXBhcmF0aW9uIHByb2Nlc3MuPC9wPlxyXG4gICAgPHA+SWYgeW91IGhhdmUgYW55IHF1ZXN0aW9ucyBvciBuZWVkIGFzc2lzdGFuY2UgaW4gZ2F0aGVyaW5nIHRoaXMgaW5mb3JtYXRpb24sIHBsZWFzZSBkbyBub3QgaGVzaXRhdGUgdG8gY29udGFjdCB1cy4gWW91ciB0aW1lbHkgY29vcGVyYXRpb24gaXMgZ3JlYXRseSBhcHByZWNpYXRlZCwgYW5kIHdlIGFyZSBoZXJlIHRvIGhlbHAgZXZlcnkgc3RlcCBvZiB0aGUgd2F5LjwvcD5gXHJcbiAgfSxcclxuICB7XHJcbiAgICBhY3Rpb25UYXhTdWJqZWN0OiBcIkVtcGxveW1lbnQgV2FnZXNcIixcclxuICAgIGFjdGlvblRpdGxlOiBcIkVtcGxveW1lbnQgV2FnZXNcIixcclxuICAgIGFjdGlvbkluc3RydWN0aW9uczogYDxwPlRoYW5rIHlvdSBmb3IgZW50cnVzdGluZyB1cyB3aXRoIHRoZSBwcmVwYXJhdGlvbiBvZiB5b3VyIHRheCByZXR1cm5zLiBBcyBwYXJ0IG9mIG91ciBjb21wcmVoZW5zaXZlIHJldmlldyBhbmQgaW4gb3VyIHF1ZXN0IHRvIGVuc3VyZSB0aGUgYWNjdXJhY3kgb2YgeW91ciB0YXggZmlsaW5ncywgd2UgdW5kZXJzdGFuZCB0aGF0IHlvdSBoYXZlIHJlY2VpdmVkIHdhZ2VzIGZyb20gZW1wbG95bWVudCBvdmVyIHRoZSBwYXN0IHRheCB5ZWFyLjwvcD5cclxuICAgIDxwPlRvIHByb2NlZWQgZWZmZWN0aXZlbHksIHdlIGtpbmRseSByZXF1ZXN0IHRoZSBmb2xsb3dpbmcgZG9jdW1lbnRzIGFuZCBpbmZvcm1hdGlvbjo8L3A+XHJcbiAgICA8b2w+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+Vy0yIEZvcm1zOjwvc3Ryb25nPiBQbGVhc2UgcHJvdmlkZSBjb3BpZXMgb2YgYWxsIFctMiBmb3JtcyByZWNlaXZlZCBmcm9tIHlvdXIgZW1wbG95ZXJzLiBUaGlzIGluY2x1ZGVzIHdhZ2VzIGVhcm5lZCBmcm9tIGFsbCBzb3VyY2VzLCBub3QganVzdCBmcm9tIHRoZSBTLUNvcnBvcmF0aW9uLCBpZiBhcHBsaWNhYmxlLjwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+VmVyaWZpY2F0aW9uIG9mIFMtQ29ycG9yYXRpb24gV2FnZXM6PC9zdHJvbmc+IElmIHdlIGFyZSBhbHNvIGhhbmRsaW5nIHlvdXIgYnVzaW5lc3MgdGF4ZXMgZm9yIGFuIFMtQ29ycG9yYXRpb24sIHdlIGxpa2VseSBoYXZlIHRoZSB3YWdlIGluZm9ybWF0aW9uIGZvciB0aGF0IGVudGl0eS4gSG93ZXZlciwgZm9yIHRob3JvdWdobmVzcyBhbmQgY29tcGxpYW5jZSwgcGxlYXNlIGNvbmZpcm0gaWYgdGhlIHdhZ2VzIGZyb20gdGhlIFMtQ29ycG9yYXRpb24gYXJlIGZ1bGx5IHJlcHJlc2VudGVkIGluIHRoZSBkb2N1bWVudHMgd2UgYWxyZWFkeSBob2xkLiBUaGlzIHdpbGwgaGVscCB1cyB2ZXJpZnkgdGhhdCBhbGwgaW5jb21lIGlzIGFjY3VyYXRlbHkgcmVwb3J0ZWQuPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5BZGRpdGlvbmFsIEluY29tZSBEb2N1bWVudHM6PC9zdHJvbmc+IFNob3VsZCB5b3UgaGF2ZSBvdGhlciBzb3VyY2VzIG9mIHdhZ2UgaW5jb21lIChlLmcuLCBjb250cmFjdCB3b3JrLCBib251c2VzLCBldGMuKSBub3QgY292ZXJlZCBieSB0aGUgVy0yIGZvcm1zIHByb3ZpZGVkLCBwbGVhc2UgaW5jbHVkZSBhbnkgMTA5OSBmb3JtcyBvciBvdGhlciByZWxldmFudCBkb2N1bWVudGF0aW9uLjwvbGk+XHJcbiAgICA8L29sPlxyXG4gICAgPHA+WW91ciBjb29wZXJhdGlvbiBpcyBjcnVjaWFsIGZvciBlbnN1cmluZyBhIHNtb290aCBhbmQgZWZmaWNpZW50IHRheCBwcmVwYXJhdGlvbiBwcm9jZXNzLiBLaW5kbHkgcHJvdmlkZSB0aGUgcmVxdWVzdGVkIGRvY3VtZW50cyBhbmQgaW5mb3JtYXRpb24gYXQgeW91ciBlYXJsaWVzdCBjb252ZW5pZW5jZS48L3A+XHJcbiAgICA8cD5JZiB5b3UgaGF2ZSBhbnkgcXVlc3Rpb25zIG9yIG5lZWQgZnVydGhlciBjbGFyaWZpY2F0aW9uLCBwbGVhc2UgZG8gbm90IGhlc2l0YXRlIHRvIGNvbnRhY3QgdXMgZGlyZWN0bHkuIFRoYW5rIHlvdSBmb3IgeW91ciBwcm9tcHQgYXR0ZW50aW9uIHRvIHRoaXMgbWF0dGVyLjwvcD5gXHJcbiAgfSxcclxuICB7XHJcbiAgICBhY3Rpb25UYXhTdWJqZWN0OiBcIlByb3BlcnR5IG9yIFNlcnZpY2VzIExpZXUgV2FnZXNcIixcclxuICAgIGFjdGlvblRpdGxlOiBcIlByb3BlcnR5L1NlcnZpY2VzIGluIExpZXUgb2YgV2FnZXNcIixcclxuICAgIGFjdGlvbkluc3RydWN0aW9uczogYDxwPldlIGFyZSBjdXJyZW50bHkgaW4gdGhlIHByb2Nlc3Mgb2YgcHJlcGFyaW5nIHlvdXIgdGF4IHJldHVybiBhbmQgaGF2ZSBub3RlZCB0aGF0IHlvdSByZWNlaXZlZCBwcm9wZXJ0eSBhbmQvb3Igc2VydmljZXMgaW4gbGlldSBvZiB0cmFkaXRpb25hbCB3YWdlcyBkdXJpbmcgdGhlIHRheCB5ZWFyLiBUaGlzIHR5cGUgb2YgY29tcGVuc2F0aW9uIGNvbnN0aXR1dGVzIHRheGFibGUgaW5jb21lIGFuZCBtdXN0IGJlIGFjY3VyYXRlbHkgcmVwb3J0ZWQgdG8gZW5zdXJlIHlvdXIgdGF4IHJldHVybiBpcyBmdWxseSBjb21wbGlhbnQgd2l0aCBJUlMgcmVndWxhdGlvbnMuPC9wPlxyXG4gICAgPHA+VG8gYWNjdXJhdGVseSByZWNvZ25pemUgYW5kIHJlcG9ydCB0aGVzZSBpdGVtcyBhcyB0YXhhYmxlIGluY29tZSwgd2UgcmVxdWlyZSB0aGUgZm9sbG93aW5nIGRldGFpbGVkIGluZm9ybWF0aW9uOjwvcD5cclxuICAgIDxvbD5cclxuICAgIDxsaT48c3Ryb25nPkRlc2NyaXB0aW9uIG9mIFByb3BlcnR5IG9yIFNlcnZpY2VzOjwvc3Ryb25nPiBQcm92aWRlIGEgZGV0YWlsZWQgZGVzY3JpcHRpb24gb2YgYW55IHByb3BlcnR5IG9yIHNlcnZpY2VzIHlvdSByZWNlaXZlZC4gUGxlYXNlIGluY2x1ZGUgcGh5c2ljYWwgY2hhcmFjdGVyaXN0aWNzIGZvciBwcm9wZXJ0eSBvciB0aGUgc2NvcGUgb2Ygc2VydmljZXMgcmVuZGVyZWQuPC9saT5cclxuICAgIDxsaT48c3Ryb25nPkZhaXIgTWFya2V0IFZhbHVlIGF0IFRpbWUgb2YgUmVjZWlwdDo8L3N0cm9uZz4gSW5kaWNhdGUgdGhlIGZhaXIgbWFya2V0IHZhbHVlIChGTVYpIG9mIGVhY2ggcHJvcGVydHkgb3Igc2VydmljZSBhdCB0aGUgdGltZSB5b3UgcmVjZWl2ZWQgaXQuIElmIHlvdSBoYXZlIGFueSBhcHByYWlzYWxzIG9yIGRvY3VtZW50cyB0byBzdXBwb3J0IHRoZSBGTVYsIHBsZWFzZSBpbmNsdWRlIHRoZW0uPC9saT5cclxuICAgIDxsaT48c3Ryb25nPkRvY3VtZW50YXRpb24gb3IgQWdyZWVtZW50czo8L3N0cm9uZz4gUHJvdmlkZSBhbnkgZG9jdW1lbnRhdGlvbiBvciB3cml0dGVuIGFncmVlbWVudHMgdGhhdCBkZXRhaWwgdGhlIGFycmFuZ2VtZW50IGZvciByZWNlaXZpbmcgcHJvcGVydHkgb3Igc2VydmljZXMgaW4gbGlldSBvZiB3YWdlcy4gVGhpcyBjYW4gaW5jbHVkZSBjb250cmFjdHMsIGVtYWlscywgb3IgYW55IGZvcm0gb2YgY29tbXVuaWNhdGlvbiB0aGF0IG91dGxpbmVzIHRoZSBhZ3JlZW1lbnQuPC9saT5cclxuICAgIDxsaT48c3Ryb25nPkRhdGUgb2YgUmVjZWlwdDo8L3N0cm9uZz4gU3BlY2lmeSB0aGUgZGF0ZShzKSBvbiB3aGljaCB5b3UgcmVjZWl2ZWQgdGhlIHByb3BlcnR5IG9yIHNlcnZpY2VzLjwvbGk+XHJcbiAgICA8bGk+PHN0cm9uZz5FbXBsb3llci9Qcm92aWRlciBJbmZvcm1hdGlvbjo8L3N0cm9uZz4gUHJvdmlkZSB0aGUgbmFtZSBhbmQgY29udGFjdCBpbmZvcm1hdGlvbiBvZiB0aGUgaW5kaXZpZHVhbCBvciBlbnRpdHkgdGhhdCBwcm92aWRlZCB0aGUgcHJvcGVydHkgb3Igc2VydmljZXMuPC9saT5cclxuICAgIDwvb2w+XHJcbiAgICA8cD5QbGVhc2UgZW5zdXJlIHRoYXQgYWxsIHByb3ZpZGVkIGluZm9ybWF0aW9uIGlzIGFzIGFjY3VyYXRlIGFuZCBjb21wbGV0ZSBhcyBwb3NzaWJsZS4gSW5jb21wbGV0ZSBvciBpbmFjY3VyYXRlIGluZm9ybWF0aW9uIG1heSBsZWFkIHRvIGRlbGF5cyBpbiB0aGUgcHJlcGFyYXRpb24gb2YgeW91ciB0YXggcmV0dXJuIG9yIHBvdGVudGlhbCBpc3N1ZXMgd2l0aCB0aGUgSVJTLjwvcD5cclxuICAgIDxwPklmIHlvdSBoYXZlIGFueSBxdWVzdGlvbnMgb3IgbmVlZCBjbGFyaWZpY2F0aW9uIHJlZ2FyZGluZyB0aGUgaW5mb3JtYXRpb24gcmVxdWVzdGVkLCBwbGVhc2UgZG8gbm90IGhlc2l0YXRlIHRvIGNvbnRhY3QgdXMgZGlyZWN0bHkuIFlvdXIgcHJvbXB0IGF0dGVudGlvbiB0byB0aGlzIHJlcXVlc3QgaXMgZ3JlYXRseSBhcHByZWNpYXRlZCBhbmQgY3JpdGljYWwgZm9yIHRoZSB0aW1lbHkgYW5kIGFjY3VyYXRlIGNvbXBsZXRpb24gb2YgeW91ciB0YXggcmV0dXJuLjwvcD5gXHJcbiAgfSxcclxuICB7XHJcbiAgICBhY3Rpb25UYXhTdWJqZWN0OiBcIkVtcGxveWVlIEFjY291bnRhYmxlIFBsYW5cIixcclxuICAgIGFjdGlvblRpdGxlOiBcIkVtcGxveWVlIEFjY291bnRhYmxlIFBsYW5cIixcclxuICAgIGFjdGlvbkluc3RydWN0aW9uczogYDxwPldlIGFyZSBpbiB0aGUgcHJvY2VzcyBvZiBwcmVwYXJpbmcgeW91ciB0YXggcmV0dXJuIGFuZCBub3RpY2VkIHlvdSd2ZSBtZW50aW9uZWQgYmVpbmcgcmVpbWJ1cnNlZCBmb3IgY2VydGFpbiBleHBlbnNlcyB1bmRlciBhbiBFbXBsb3llZSBBY2NvdW50YWJsZSBQbGFuLiBUbyBhY2N1cmF0ZWx5IGFjY291bnQgZm9yIHRoZXNlIHJlaW1idXJzZW1lbnRzIGFuZCBlbnN1cmUgY29tcGxpYW5jZSB3aXRoIElSUyBydWxlcywgd2Uga2luZGx5IHJlcXVlc3QgdGhlIGZvbGxvd2luZyBkb2N1bWVudHMgYW5kIGluZm9ybWF0aW9uOjwvcD5cclxuICAgIDxvbD5cclxuICAgICAgICA8bGk+QSBjb3B5IG9mIHRoZSBmb3JtYWwgd3JpdHRlbiBBY2NvdW50YWJsZSBQbGFuIHByb3ZpZGVkIGJ5IHlvdXIgZW1wbG95ZXIuIFRoaXMgc2hvdWxkIG91dGxpbmUgdGhlIGV4cGVuc2UgYWxsb3dhbmNlIGFuZCB0aGUgc3BlY2lmaWNzIG9mIHRoZSByZWltYnVyc2VtZW50IHBvbGljeS48L2xpPlxyXG4gICAgICAgIDxsaT5BbnkgZG9jdW1lbnRhdGlvbiBvciBjb3JyZXNwb25kZW5jZSBmcm9tIHlvdXIgZW1wbG95ZXIgY29uZmlybWluZyB5b3VyIHBhcnRpY2lwYXRpb24gaW4gdGhlIEFjY291bnRhYmxlIFBsYW4uPC9saT5cclxuICAgICAgICA8bGk+RGV0YWlscyBvZiB0aGUgZXhwZW5zZXMgcmVpbWJ1cnNlZCB1bmRlciB0aGUgcGxhbiwgaW5jbHVkaW5nIGRhdGVzLCBhbW91bnRzLCBhbmQgdGhlIG5hdHVyZSBvZiB0aGUgZXhwZW5zZXMuPC9saT5cclxuICAgICAgICA8bGk+UHJvb2Ygb2YgZXhwZW5zZSAocmVjZWlwdHMgb3IgaW52b2ljZXMpIHByb3ZpZGVkIHRvIHlvdXIgZW1wbG95ZXIgZm9yIHJlaW1idXJzZW1lbnQgdW5kZXIgdGhlIHBsYW4uPC9saT5cclxuICAgICAgICA8bGk+QW55IGFkZGl0aW9uYWwgZG9jdW1lbnRhdGlvbiBvciBpbmZvcm1hdGlvbiByZWxldmFudCB0byB0aGUgcmVpbWJ1cnNlbWVudHMgb3IgdGhlIEFjY291bnRhYmxlIFBsYW4uPC9saT5cclxuICAgIDwvb2w+XHJcbiAgICA8cD5QbGVhc2Ugc2VuZCB1cyB0aGlzIGluZm9ybWF0aW9uIGF0IHlvdXIgZWFybGllc3QgY29udmVuaWVuY2UgdG8gZW5zdXJlIHdlIGNhbiBwcm9jZWVkIHNtb290aGx5IHdpdGggeW91ciB0YXggcmV0dXJuIHByZXBhcmF0aW9uLiBJZiB5b3UgaGF2ZSBhbnkgcXVlc3Rpb25zIG9yIG5lZWQgZnVydGhlciBjbGFyaWZpY2F0aW9uLCBkbyBub3QgaGVzaXRhdGUgdG8gcmVhY2ggb3V0LjwvcD5cclxuICAgIDxwPlRoYW5rIHlvdSBmb3IgeW91ciBwcm9tcHQgYXR0ZW50aW9uIHRvIHRoaXMgbWF0dGVyLjwvcD5gXHJcbiAgfSxcclxuICB7XHJcbiAgICBhY3Rpb25UYXhTdWJqZWN0OiBcIlRheGFibGUgRnJpbmdlIEJlbmVmaXRzXCIsXHJcbiAgICBhY3Rpb25UaXRsZTogXCJUYXhhYmxlIEZyaW5nZSBCZW5lZml0c1wiLFxyXG4gICAgYWN0aW9uSW5zdHJ1Y3Rpb25zOiBgXHJcbiAgICA8cD5XZSBhcmUgaW4gdGhlIHByb2Nlc3Mgb2YgZW5zdXJpbmcgYWxsIGZvcm1zIG9mIGNvbXBlbnNhdGlvbiwgaW5jbHVkaW5nIHRheGFibGUgZnJpbmdlIGJlbmVmaXRzLCBhcmUgYWNjdXJhdGVseSByZXBvcnRlZCBvbiB5b3VyIHRheCByZXR1cm5zLiBCYXNlZCBvbiBvdXIgcHJldmlvdXMgY29tbXVuaWNhdGlvbiwgaXQgYXBwZWFycyB5b3UgbWF5IGhhdmUgcmVjZWl2ZWQgYmVuZWZpdHMgdGhhdCBuZWVkIHRvIGJlIHJldmlld2VkIGZ1cnRoZXIuIFRvIGFzc2lzdCB5b3UgcHJvcGVybHksIHdlIHJlcXVlc3QgdGhlIGZvbGxvd2luZyBzcGVjaWZpYyBkZXRhaWxzOjwvcD5cclxuPG9sPlxyXG4gIDxsaT48c3Ryb25nPkRlc2NyaXB0aW9uIG9mIGVhY2ggYmVuZWZpdCByZWNlaXZlZDo8L3N0cm9uZz4gUGxlYXNlIHByb3ZpZGUgYSBicmllZiBkZXNjcmlwdGlvbiBvZiB0aGUgZnJpbmdlIGJlbmVmaXRzIHJlY2VpdmVkIGR1cmluZyB0aGUgdGF4IHllYXIsIGluY2x1ZGluZyBidXQgbm90IGxpbWl0ZWQgdG8gY29tcGFueSBjYXJzLCBtZW1iZXJzaGlwcywgZWR1Y2F0aW9uYWwgYXNzaXN0YW5jZSwgZXRjLjwvbGk+XHJcbiAgPGxpPjxzdHJvbmc+VmFsdWUgb2YgZWFjaCBiZW5lZml0Ojwvc3Ryb25nPiBUaGUgZmFpciBtYXJrZXQgdmFsdWUgKEZNVikgb2YgZWFjaCBiZW5lZml0LiBJZiB5b3UncmUgdW5zdXJlLCBwbGVhc2UgcHJvdmlkZSBhbiBlc3RpbWF0ZSBhbmQgdGhlIGJhc2lzIGZvciB0aGlzIGVzdGltYXRlLjwvbGk+XHJcbiAgPGxpPjxzdHJvbmc+QW55IGFtb3VudHMgY29udHJpYnV0ZWQgYnkgeW91Ojwvc3Ryb25nPiBJZiB5b3UgbWFkZSBjb250cmlidXRpb25zIHRvd2FyZCB0aGUgY29zdCBvZiBhbnkgYmVuZWZpdCwgcGxlYXNlIHNwZWNpZnkgdGhlIGFtb3VudHMgYW5kIGZvciB3aGljaCBiZW5lZml0cy48L2xpPlxyXG4gIDxsaT48c3Ryb25nPkJlbmVmaXQgZG9jdW1lbnRhdGlvbjo8L3N0cm9uZz4gQW55IGF2YWlsYWJsZSBkb2N1bWVudGF0aW9uIHRoYXQgY2FuIHN1cHBvcnQgdGhlIGluZm9ybWF0aW9uIHByb3ZpZGVkLCBzdWNoIGFzIHN0YXRlbWVudHMsIGFncmVlbWVudHMsIG9yIHJlY2VpcHRzLjwvbGk+XHJcbiAgPGxpPjxzdHJvbmc+RGF0ZXM6PC9zdHJvbmc+IFRoZSBwZXJpb2QgZHVyaW5nIHdoaWNoIHlvdSByZWNlaXZlZCB0aGVzZSBiZW5lZml0cy4gSW5jbHVkZSBzcGVjaWZpYyBkYXRlcyBpZiBwb3NzaWJsZS48L2xpPlxyXG4gIDxsaT48c3Ryb25nPkVtcGxveWVyIEluZm9ybWF0aW9uOjwvc3Ryb25nPiBUaGUgbmFtZSBhbmQgY29udGFjdCBpbmZvcm1hdGlvbiBvZiB0aGUgZW1wbG95ZXIocykgcHJvdmlkaW5nIHRoZXNlIGJlbmVmaXRzLjwvbGk+XHJcbjwvb2w+XHJcbjxwPlRoaXMgaW5mb3JtYXRpb24gaXMgY3J1Y2lhbCBmb3IgYWNjdXJhdGVseSBkZXRlcm1pbmluZyB0aGUgdGF4YWJsZSB2YWx1ZSBvZiB0aGVzZSBmcmluZ2UgYmVuZWZpdHMgYW5kIGVuc3VyaW5nIGNvbXBsaWFuY2Ugd2l0aCBJUlMgcmVndWxhdGlvbnMuIElmIHlvdSBoYXZlIGFueSBxdWVzdGlvbnMgb3IgbmVlZCBhc3Npc3RhbmNlIGluIGdhdGhlcmluZyB0aGlzIGluZm9ybWF0aW9uLCBwbGVhc2UgZG9uJ3QgaGVzaXRhdGUgdG8gY29udGFjdCB1cy48L3A+XHJcbjxwPldlIGFwcHJlY2lhdGUgeW91ciBwcm9tcHQgYXR0ZW50aW9uIHRvIHRoaXMgbWF0dGVyIGFuZCBsb29rIGZvcndhcmQgdG8gYXNzaXN0aW5nIHlvdSBmdXJ0aGVyLjwvcD5gXHJcbiAgfSxcclxuICB7XHJcbiAgICBhY3Rpb25UYXhTdWJqZWN0OiBcIk5vbiBUYXhhYmxlIEZyaW5nZSBCZW5lZml0c1wiLFxyXG4gICAgYWN0aW9uVGl0bGU6IFwiTm9uIFRheGFibGUgRnJpbmdlIEJlbmVmaXRzXCIsXHJcbiAgICBhY3Rpb25JbnN0cnVjdGlvbnM6IGA8cD5XZSBhcmUgaW4gdGhlIHByb2Nlc3Mgb2YgZmluYWxpemluZyB5b3VyIHRheCByZXR1cm4gYW5kIGhhdmUgaWRlbnRpZmllZCBwb3RlbnRpYWwgbm9uLXRheGFibGUgZnJpbmdlIGJlbmVmaXRzIHRoYXQgbWF5IGFwcGx5IHRvIHlvdXIgc2l0dWF0aW9uLiBUbyBlbnN1cmUgYWNjdXJhdGUgcmVwb3J0aW5nIGFuZCBvcHRpbWl6ZSB5b3VyIHRheCBvdXRjb21lLCB3ZSBraW5kbHkgcmVxdWVzdCB0aGUgZm9sbG93aW5nIGRldGFpbGVkIGluZm9ybWF0aW9uIHJlZ2FyZGluZyBhbnkgbm9uLXRheGFibGUgZnJpbmdlIGJlbmVmaXRzIHlvdSBtYXkgaGF2ZSByZWNlaXZlZDo8L3A+XHJcbiAgICA8b2w+XHJcbiAgICAgIDxsaT48c3Ryb25nPkRlc2NyaXB0aW9uIG9mIGVhY2ggYmVuZWZpdDo8L3N0cm9uZz4gUGxlYXNlIHByb3ZpZGUgYSBkZXRhaWxlZCBkZXNjcmlwdGlvbiBvZiB0aGUgbm9uLXRheGFibGUgZnJpbmdlIGJlbmVmaXRzIHJlY2VpdmVkIGR1cmluZyB0aGUgdGF4IHllYXIuIFRoaXMgbWF5IGluY2x1ZGUgaGVhbHRoIHNhdmluZ3MgYWNjb3VudHMgKEhTQXMpLCBlbXBsb3llZSBkaXNjb3VudHMsIHB1YmxpYyB0cmFuc2l0IHBhc3NlcywgZXRjLjwvbGk+XHJcbiAgICAgIDxsaT48c3Ryb25nPlZhbHVlIG9mIGVhY2ggYmVuZWZpdDo8L3N0cm9uZz4gVGhlIGZhaXIgbWFya2V0IHZhbHVlIChGTVYpIG9mIGVhY2ggYmVuZWZpdC4gRm9yIG5vbi10YXhhYmxlIGJlbmVmaXRzLCB0aGlzIGhlbHBzIGluIHJlY29yZC1rZWVwaW5nIGFuZCBjb25maXJtaW5nIGV4ZW1wdGlvbiBzdGF0dXMuPC9saT5cclxuICAgICAgPGxpPjxzdHJvbmc+Q29udHJpYnV0aW9uIGFtb3VudHMsIGlmIGFueTo8L3N0cm9uZz4gSWYgeW91IGhhdmUgY29udHJpYnV0ZWQgdG93YXJkcyBhbnkgb2YgdGhlc2UgYmVuZWZpdHMsIGluZGljYXRlIHRoZSBhbW91bnRzIGFuZCBmb3Igd2hpY2ggYmVuZWZpdHMuPC9saT5cclxuICAgICAgPGxpPjxzdHJvbmc+QmVuZWZpdCBkb2N1bWVudGF0aW9uOjwvc3Ryb25nPiBBbnkgZG9jdW1lbnRhdGlvbiB0aGF0IGNhbiBjb3Jyb2JvcmF0ZSB0aGUgaW5mb3JtYXRpb24gcHJvdmlkZWQsIHN1Y2ggYXMgc3RhdGVtZW50cywgYWdyZWVtZW50cywgb3IgcmVjZWlwdHMuPC9saT5cclxuICAgICAgPGxpPjxzdHJvbmc+RGF0ZXMgb2YgcmVjZWlwdDo8L3N0cm9uZz4gVGhlIHRpbWVmcmFtZSBkdXJpbmcgd2hpY2ggeW91IHJlY2VpdmVkIHRoZXNlIGJlbmVmaXRzLiBJbmNsdWRlIGFzIHByZWNpc2UgZGF0ZXMgYXMgcG9zc2libGUuPC9saT5cclxuICAgICAgPGxpPjxzdHJvbmc+RW1wbG95ZXIgb3IgcHJvdmlkZXIgaW5mb3JtYXRpb246PC9zdHJvbmc+IFRoZSBuYW1lIGFuZCBjb250YWN0IGRldGFpbHMgb2YgdGhlIGVtcGxveWVyKHMpIG9yIHRoaXJkLXBhcnR5IHByb3ZpZGVyKHMpIG9mZmVyaW5nIHRoZXNlIGJlbmVmaXRzLjwvbGk+XHJcbiAgICA8L29sPlxyXG4gICAgPHA+R2F0aGVyaW5nIHRoaXMgaW5mb3JtYXRpb24gaGVscHMgZW5zdXJlIHRoYXQgeW91ciB0YXggZmlsaW5ncyBhcmUgYWNjdXJhdGUgYW5kIHRoYXQgeW91IHJlY2VpdmUgdGhlIGZ1bGwgYWR2YW50YWdlIG9mIG5vbi10YXhhYmxlIGZyaW5nZSBiZW5lZml0cy4gUGxlYXNlIGxldCB1cyBrbm93IGlmIHlvdSBuZWVkIGFueSBoZWxwIGlkZW50aWZ5aW5nIG9yIGRvY3VtZW50aW5nIHRoZXNlIGJlbmVmaXRzLjwvcD5cclxuICAgIDxwPllvdXIgcHJvbXB0IHJlc3BvbnNlIGlzIGhpZ2hseSBhcHByZWNpYXRlZCBhcyB3ZSBzdHJpdmUgdG8gY29tcGxldGUgeW91ciB0YXggcHJlcGFyYXRpb24gZWZmaWNpZW50bHkuIFNob3VsZCB5b3UgaGF2ZSBhbnkgcXVlc3Rpb25zLCBmZWVsIGZyZWUgdG8gY29udGFjdCB1cyBkaXJlY3RseS48L3A+YFxyXG4gIH0sXHJcbiAge1xyXG4gICAgYWN0aW9uVGF4U3ViamVjdDogXCJWZXRlcmFuIEJlbmVmaXRzXCIsXHJcbiAgICBhY3Rpb25UaXRsZTogXCJWQSBCZW5lZml0c1wiLFxyXG4gICAgYWN0aW9uSW5zdHJ1Y3Rpb25zOiBgPHA+V2UgaG9wZSB0aGlzIG1lc3NhZ2UgZmluZHMgeW91IHdlbGwuIEFzIHBhcnQgb2Ygb3VyIG9uZ29pbmcgZWZmb3J0IHRvIGVuc3VyZSB0aGUgYWNjdXJhY3kgYW5kIGNvbXBsZXRlbmVzcyBvZiB5b3VyIHRheCByZXR1cm4sIHdlIHVuZGVyc3RhbmQgdGhhdCB5b3UgaGF2ZSByZWNlaXZlZCBWZXRlcmFuIEJlbmVmaXRzIGR1cmluZyB0aGUgdGF4IHllYXIuIFRvIGFjY3VyYXRlbHkgYXNzZXNzIHRoZSB0YXggaW1wbGljYXRpb25zIG9mIHRoZXNlIGJlbmVmaXRzLCB3ZSBraW5kbHkgcmVxdWVzdCBhZGRpdGlvbmFsIGluZm9ybWF0aW9uLjwvcD5cclxuICAgIDxwPlRvIGFzc2lzdCB1cyBpbiB0aGlzIHRhc2ssIHBsZWFzZSBwcm92aWRlIHRoZSBmb2xsb3dpbmcgaW5mb3JtYXRpb246PC9wPlxyXG4gICAgPG9sPlxyXG4gICAgICAgIDxsaT5BIGRldGFpbGVkIGxpc3Qgb2YgdGhlIFZldGVyYW4gQmVuZWZpdHMgeW91IHJlY2VpdmVkLCBpbmNsdWRpbmcgYW55IGRpc2FiaWxpdHksIGVkdWNhdGlvbiwgYW5kIHBlbnNpb24gYmVuZWZpdHMuPC9saT5cclxuICAgICAgICA8bGk+T2ZmaWNpYWwgZG9jdW1lbnRhdGlvbiBmb3IgZWFjaCB0eXBlIG9mIGJlbmVmaXQgcmVjZWl2ZWQsIHN1Y2ggYXMgYXdhcmQgbGV0dGVycyBvciBzdGF0ZW1lbnRzIGZyb20gdGhlIERlcGFydG1lbnQgb2YgVmV0ZXJhbnMgQWZmYWlycyAoVkEpLjwvbGk+XHJcbiAgICAgICAgPGxpPkFueSBjb3JyZXNwb25kZW5jZSBmcm9tIHRoZSBWQSBvciBvdGhlciByZWxldmFudCBlbnRpdGllcyByZWdhcmRpbmcgdGhlIHRheGFiaWxpdHkgb2YgeW91ciBiZW5lZml0cy48L2xpPlxyXG4gICAgICAgIDxsaT5Ub3RhbCBhbW91bnQgcmVjZWl2ZWQgZm9yIGVhY2ggYmVuZWZpdCB0aHJvdWdob3V0IHRoZSB0YXggeWVhci48L2xpPlxyXG4gICAgICAgIDxsaT5Bbnkgb3RoZXIgc3VwcG9ydGluZyBkb2N1bWVudGF0aW9uIHRoYXQgY2FuIHByb3ZpZGUgY2xhcml0eSBvbiB0aGUgbmF0dXJlIGFuZCBhbW91bnQgb2YgeW91ciBWZXRlcmFuIEJlbmVmaXRzLjwvbGk+XHJcbiAgICA8L29sPlxyXG4gICAgPHA+VGhpcyBpbmZvcm1hdGlvbiBpcyBjcnVjaWFsIGZvciBkZXRlcm1pbmluZyB3aGljaCBiZW5lZml0cyBhcmUgdGF4YWJsZSBhbmQgZW5zdXJpbmcgeW91ciB0YXggcmV0dXJuIGlzIGNvbXBsZXRlIGFuZCBhY2N1cmF0ZS4gUGxlYXNlIHN1Ym1pdCB0aGVzZSBkb2N1bWVudHMgYXQgeW91ciBlYXJsaWVzdCBjb252ZW5pZW5jZS48L3A+XHJcbiAgICA8cD5JZiB5b3UgaGF2ZSBhbnkgcXVlc3Rpb25zIG9yIHJlcXVpcmUgYXNzaXN0YW5jZSBpbiBnYXRoZXJpbmcgdGhlc2UgZG9jdW1lbnRzLCBwbGVhc2UgZG8gbm90IGhlc2l0YXRlIHRvIGNvbnRhY3QgdXMuIFRoYW5rIHlvdSBmb3IgeW91ciBjb29wZXJhdGlvbiBhbmQgdHJ1c3QgaW4gb3VyIHNlcnZpY2VzLjwvcD5gXHJcbiAgfSxcclxuICB7XHJcbiAgICBhY3Rpb25UYXhTdWJqZWN0OiBcIkxpZmUgSW5zdXJhbmNlIFBheW1lbnRzXCIsXHJcbiAgICBhY3Rpb25UaXRsZTogXCJMaWZlIEluc3VyYW5jZSBQYXltZW50c1wiLFxyXG4gICAgYWN0aW9uSW5zdHJ1Y3Rpb25zOiBgPHA+V2UgaGF2ZSBub3RlZCB5b3VyIG1lbnRpb24gb2YgcmVjZWl2aW5nIGxpZmUgaW5zdXJhbmNlIHBheW1lbnRzIGR1cmluZyB0aGUgdGF4IHllYXIuIFRvIGFjY3VyYXRlbHkgYXNzZXNzIHRoZSB0YXggaW1wbGljYXRpb25zIGFuZCBlbnN1cmUgdGhlc2UgcHJvY2VlZHMgYXJlIGluZGVlZCBub24tdGF4YWJsZSwgd2UgcmVxdWlyZSB0aGUgZm9sbG93aW5nIGRldGFpbHM6PC9wPlxyXG4gICAgPG9sPlxyXG4gICAgICA8bGk+VGhlIHRvdGFsIGFtb3VudCByZWNlaXZlZCBmcm9tIGxpZmUgaW5zdXJhbmNlIHBheW1lbnRzLjwvbGk+XHJcbiAgICAgIDxsaT5Eb2N1bWVudGF0aW9uIG9yIHN0YXRlbWVudHMgcGVydGFpbmluZyB0byB0aGUgbGlmZSBpbnN1cmFuY2UgcGF5bWVudHMuPC9saT5cclxuICAgICAgPGxpPlRoZSBuYW1lIG9mIHRoZSBpbnN1cmVkIGluZGl2aWR1YWwgYW5kIHRoZWlyIHJlbGF0aW9uc2hpcCB0byB5b3UuPC9saT5cclxuICAgICAgPGxpPkFueSBjb21tdW5pY2F0aW9ucyBvciBsZXR0ZXJzIGZyb20gdGhlIGluc3VyYW5jZSBjb21wYW55IHJlZ2FyZGluZyB0aGUgdGF4IHN0YXR1cyBvZiB0aGVzZSBwYXltZW50cy48L2xpPlxyXG4gICAgICA8bGk+RGV0YWlscyByZWdhcmRpbmcgaWYgdGhlIHBvbGljeSB3YXMgcHVyY2hhc2VkIHdpdGggYWZ0ZXItdGF4IG9yIHByZS10YXggZG9sbGFycy48L2xpPlxyXG4gICAgICA8bGk+SWYgYW55IHBvcnRpb24gb2YgdGhlIGxpZmUgaW5zdXJhbmNlIHBheW1lbnQgd2FzIGFuIGludmVzdG1lbnQgcmV0dXJuLCBwbGVhc2UgcHJvdmlkZSByZWxhdGVkIGRvY3VtZW50cy48L2xpPlxyXG4gICAgPC9vbD5cclxuICAgIDxwPlRoaXMgaW5mb3JtYXRpb24gaXMgY3J1Y2lhbCBmb3IgdXMgdG8gZ3VhcmFudGVlIHRoZSBhY2N1cmFjeSBhbmQgaW50ZWdyaXR5IG9mIHlvdXIgdGF4IHJldHVybi4gUGxlYXNlIHByb3ZpZGUgdGhlIHJlcXVlc3RlZCBkb2N1bWVudHMgYW5kIGluZm9ybWF0aW9uIGF0IHlvdXIgZWFybGllc3QgY29udmVuaWVuY2UuPC9wPlxyXG4gICAgPHA+U2hvdWxkIHlvdSBoYXZlIGFueSBxdWVzdGlvbnMgb3IgbmVlZCBmdXJ0aGVyIGFzc2lzdGFuY2UsIGZlZWwgZnJlZSB0byBjb250YWN0IHVzLiBXZSdyZSBoZXJlIHRvIGhlbHAhPC9wPmBcclxuICB9LFxyXG4gIHtcclxuICAgIGFjdGlvblRheFN1YmplY3Q6IFwiTWVkaWNhcmUgV2FpdmVyIFBheW1lbnRzXCIsXHJcbiAgICBhY3Rpb25UaXRsZTogXCJNZWRpY2FyZSBXYWl2ZXIgUGF5bWVudHNcIixcclxuICAgIGFjdGlvbkluc3RydWN0aW9uczogYDxwPldlIGhvcGUgdGhpcyBtZXNzYWdlIGZpbmRzIHlvdSB3ZWxsLiBBcyB3ZSBwcm9jZWVkIHdpdGggcHJlcGFyaW5nIHlvdXIgdGF4IHJldHVybnMsIHdlIG5vdGVkIHRoYXQgeW91IGhhdmUgcmVjZWl2ZWQgTWVkaWNhcmUgV2FpdmVyIFBheW1lbnRzIHVuZGVyIHRoZSBkaWZmaWN1bHR5LW9mLWNhcmUgcHJvdmlzaW9ucyBkdXJpbmcgdGhlIHRheCB5ZWFyLiBUbyBlbnN1cmUgd2UgbWF4aW1pemUgeW91ciBlbGlnaWJsZSBpbmNvbWUgZXhjbHVzaW9ucywgaXQncyBjcnVjaWFsIHdlIHZlcmlmeSBjZXJ0YWluIGluZm9ybWF0aW9uIHJlZ2FyZGluZyB5b3VyIGxpdmluZyBhcnJhbmdlbWVudCwgYXMgcGVyIElSUyBndWlkZWxpbmVzLjwvcD5cclxuICAgIDxwPlRvIGFzc2lzdCB1cyBpbiBjb25maXJtaW5nIHRoYXQgdGhlc2UgcGF5bWVudHMgcXVhbGlmeSBmb3IgaW5jb21lIGV4Y2x1c2lvbiwgcGxlYXNlIHByb3ZpZGUgdGhlIGZvbGxvd2luZyBpbmZvcm1hdGlvbjo8L3A+XHJcbiAgICA8b2w+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+UHJvb2Ygb2YgUmVzaWRlbmNlOjwvc3Ryb25nPiBEb2N1bWVudHMgcHJvdmluZyB0aGF0IHlvdSBhbmQgdGhlIGluZGl2aWR1YWwgdW5kZXIgY2FyZSBzaGFyZWQgdGhlIHNhbWUgcHJpbWFyeSByZXNpZGVuY2UgZHVyaW5nIHRoZSByZWNlaXB0IG9mIHRoZXNlIHBheW1lbnRzLiBUaGlzIGNvdWxkIGluY2x1ZGUgdXRpbGl0eSBiaWxscywgYSByZW50YWwgYWdyZWVtZW50LCBvciBob21lb3duZXIncyBpbnN1cmFuY2UgaW4gYm90aCBvZiB5b3VyIG5hbWVzLjwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+RGV0YWlscyBvZiB0aGUgQ2FyZSBSZWNpcGllbnQ6PC9zdHJvbmc+IEluZm9ybWF0aW9uIGFib3V0IHRoZSBwZXJzb24gcmVjZWl2aW5nIGNhcmUsIGluY2x1ZGluZyB0aGVpciByZWxhdGlvbnNoaXAgdG8geW91IGFuZCBhbnkgZG9jdW1lbnRhdGlvbiB0aGF0IGlkZW50aWZpZXMgdGhlaXIgbmVlZCBmb3IgY2FyZSAoZS5nLiwgYSBsZXR0ZXIgZnJvbSBhIGhlYWx0aGNhcmUgcHJvdmlkZXIpLjwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+UGF5bWVudCBSZWNvcmRzOjwvc3Ryb25nPiBBbnkgcmVjb3JkcyBvZiB0aGUgTWVkaWNhcmUgV2FpdmVyIFBheW1lbnRzIHlvdSByZWNlaXZlZCwgYXMgdGhpcyB3aWxsIGhlbHAgdXMgZGV0ZXJtaW5lIHRoZSBleGFjdCBhbW91bnRzIGFuZCB0aGUgcGVyaW9kcyBjb3ZlcmVkLjwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+QW55IEZvcm1hbCBBZ3JlZW1lbnRzIG9yIENvbnRyYWN0czo8L3N0cm9uZz4gSWYgdGhlcmUgd2FzIGEgZm9ybWFsIGFncmVlbWVudCBvciBjb250cmFjdCBkZXRhaWxpbmcgdGhlIGNhcmUgcHJvdmlkZWQsIHBsZWFzZSBpbmNsdWRlIHRoaXMgYXMgd2VsbC4gVGhpcyBpcyBlc3BlY2lhbGx5IGltcG9ydGFudCBpZiB0aGUgY2FyZSBhcnJhbmdlbWVudCB3YXMgZmFjaWxpdGF0ZWQgdGhyb3VnaCBhIHN0YXRlIG9yIHRoaXJkLXBhcnR5IGFnZW5jeS48L2xpPlxyXG4gICAgPC9vbD5cclxuICAgIDxwPlRoaXMgaW5mb3JtYXRpb24gaXMgdml0YWwgdG8gZW5zdXJlIHdlIGNvbXBseSB3aXRoIHRheGluZyBhdXRob3JpdGllcyB3aGlsZSBhY2N1cmF0ZWx5IHJlZmxlY3RpbmcgeW91ciBmaW5hbmNlcy4gSWYgYW55IG9mIHRoZXNlIHJlcXVpcmVtZW50cyBwb3NlIGEgZGlmZmljdWx0eSBvciBpZiB5b3UgaGF2ZSBxdWVzdGlvbnMsIHBsZWFzZSBkb24ndCBoZXNpdGF0ZSB0byBjb250YWN0IHVzIGRpcmVjdGx5LiBPdXIgZ29hbCBpcyB0byBzdXBwb3J0IHlvdSB0aHJvdWdoIHRoaXMgcHJvY2VzcyBhbmQgb3B0aW1pemUgeW91ciB0YXggYmVuZWZpdHMuPC9wPlxyXG4gICAgPHA+VGhhbmsgeW91IGZvciB5b3VyIHByb21wdCBhdHRlbnRpb24gdG8gdGhpcyBtYXR0ZXIuIFdlIGxvb2sgZm9yd2FyZCB0byBhc3Npc3RpbmcgeW91IGZ1cnRoZXIuPC9wPmBcclxuICB9LFxyXG4gIHtcclxuICAgIGFjdGlvblRheFN1YmplY3Q6IFwiRGlzYWJpbGl0eSBJbnN1cmFuY2UgQmVuZWZpdHNcIixcclxuICAgIGFjdGlvblRpdGxlOiBcIkRpc2FiaWxpdHkgSW5zdXJhbmNlIEJlbmVmaXRzXCIsXHJcbiAgICBhY3Rpb25JbnN0cnVjdGlvbnM6IGA8cD5XZSBhcmUgaW4gdGhlIHByb2Nlc3Mgb2YgcHJlcGFyaW5nIHlvdXIgdGF4IHJldHVybiBhbmQgbm90ZWQgdGhhdCB5b3UgcmVjZWl2ZWQgZGlzYWJpbGl0eSBpbnN1cmFuY2UgYmVuZWZpdHMgZHVyaW5nIHRoZSB0YXggeWVhci4gVG8gYWNjdXJhdGVseSBkZXRlcm1pbmUgaWYgdGhlc2UgYmVuZWZpdHMgYXJlIGVsaWdpYmxlIHRvIGJlIGV4Y2x1ZGVkIGZyb20geW91ciBpbmNvbWUsIHdlIHJlcXVpcmUgZnVydGhlciBkZXRhaWxzIHJlZ2FyZGluZyB0aGUgaW5zdXJhbmNlIHByZW1pdW1zIHBhaWQuPC9wPlxyXG4gICAgPHA+S2luZGx5IHByb3ZpZGUgdGhlIGZvbGxvd2luZyBpbmZvcm1hdGlvbiBhdCB5b3VyIGVhcmxpZXN0IGNvbnZlbmllbmNlOjwvcD5cclxuICAgIDxvbD5cclxuICAgICAgICA8bGk+VGhlIHRvdGFsIGFtb3VudCBvZiBkaXNhYmlsaXR5IGluc3VyYW5jZSBiZW5lZml0cyByZWNlaXZlZCBkdXJpbmcgdGhlIHRheCB5ZWFyLjwvbGk+XHJcbiAgICAgICAgPGxpPkRldGFpbGVkIHN0YXRlbWVudHMgb3IgZG9jdW1lbnRhdGlvbiBzaG93aW5nIHRoZSBkaXNhYmlsaXR5IGluc3VyYW5jZSBiZW5lZml0cyByZWNlaXZlZC48L2xpPlxyXG4gICAgICAgIDxsaT5Db25maXJtYXRpb24gb24gd2hvIHBhaWQgdGhlIGluc3VyYW5jZSBwcmVtaXVtcyAoeW91IG9yIHlvdXIgZW1wbG95ZXIpLjwvbGk+XHJcbiAgICAgICAgPGxpPklmIHlvdSBoYXZlIGNvbnRyaWJ1dGVkIHRvIHRoZSBwYXltZW50IG9mIHRoZSBwcmVtaXVtczpcclxuICAgICAgICAgICAgPHVsPlxyXG4gICAgICAgICAgICAgICAgPGxpPlRoZSBhbW91bnQgeW91IHBhaWQgdG93YXJkcyB0aGUgcHJlbWl1bXMuPC9saT5cclxuICAgICAgICAgICAgICAgIDxsaT5Bbnkgc3VwcG9ydGluZyBkb2N1bWVudHMgZm9yIHRoZSBwYXltZW50cyBtYWRlIGJ5IHlvdSAocmVjZWlwdHMgb3IgYmFuayBzdGF0ZW1lbnRzKS48L2xpPlxyXG4gICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgIDwvbGk+XHJcbiAgICAgICAgPGxpPklmIHlvdXIgZW1wbG95ZXIgY29udHJpYnV0ZWQgdG8gdGhlIHBheW1lbnQgb2YgdGhlIHByZW1pdW1zOlxyXG4gICAgICAgICAgICA8dWw+XHJcbiAgICAgICAgICAgICAgICA8bGk+VGhlIGFtb3VudCBwYWlkIGJ5IHlvdXIgZW1wbG95ZXIgdG93YXJkcyB0aGUgcHJlbWl1bXMuPC9saT5cclxuICAgICAgICAgICAgICAgIDxsaT5BbnkgZG9jdW1lbnRzIGluZGljYXRpbmcgZW1wbG95ZXIgY29udHJpYnV0aW9ucyAocGF5IHN0dWJzLCBlbXBsb3llciBsZXR0ZXJzKS48L2xpPlxyXG4gICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgIDwvbGk+XHJcbiAgICA8L29sPlxyXG4gICAgPHA+VGhpcyBpbmZvcm1hdGlvbiBpcyBjcnVjaWFsIGZvciB1cyB0byBkZXRlcm1pbmUgdGhlIHRheGFibGUgcG9ydGlvbiwgaWYgYW55LCBvZiB5b3VyIGRpc2FiaWxpdHkgaW5zdXJhbmNlIGJlbmVmaXRzLiBQcm92aWRpbmcgdGhlc2UgZGV0YWlscyB3aWxsIGhlbHAgdXMgZW5zdXJlIHRoZSBhY2N1cmFjeSBvZiB5b3VyIHRheCBmaWxpbmcgYW5kIHBvdGVudGlhbGx5IGxvd2VyIHlvdXIgdGF4YWJsZSBpbmNvbWUuPC9wPlxyXG4gICAgPHA+UGxlYXNlIGRvIG5vdCBoZXNpdGF0ZSB0byByZWFjaCBvdXQgaWYgeW91IGhhdmUgYW55IHF1ZXN0aW9ucyBvciBpZiB3ZSBjYW4gYmUgb2YgZnVydGhlciBhc3Npc3RhbmNlLiBXZSBhcHByZWNpYXRlIHlvdXIgcHJvbXB0IHJlc3BvbnNlIHRvIHRoaXMgcmVxdWVzdC48L3A+YFxyXG4gIH0sXHJcbiAge1xyXG4gICAgYWN0aW9uVGF4U3ViamVjdDogXCJEaXNhYmlsaXR5IFJldGlyZW1lbnQgQmVuZWZpdHNcIixcclxuICAgIGFjdGlvblRpdGxlOiBcIkRpc2FiaWxpdHkgUmV0aXJlbWVudCBCZW5lZml0c1wiLFxyXG4gICAgYWN0aW9uSW5zdHJ1Y3Rpb25zOiBgPHA+V2UgYXJlIGluIHRoZSBwcm9jZXNzIG9mIHByZXBhcmluZyB5b3VyIHRheCBkb2N1bWVudHMgYW5kIGhhdmUgbm90ZWQgdGhhdCB5b3UgcmVjZWl2ZWQgZGlzYWJpbGl0eSByZXRpcmVtZW50IGJlbmVmaXRzIGR1cmluZyB0aGUgdGF4IHllYXIuIEluIG9yZGVyIHRvIGFjY3VyYXRlbHkgZGV0ZXJtaW5lIHRoZSB0YXhhYmlsaXR5IG9mIHRoZXNlIGJlbmVmaXRzLCB3ZSBuZWVkIGFkZGl0aW9uYWwgZGV0YWlscy4gVGhlIHRheGFiaWxpdHkgb2YgdGhlc2UgYmVuZWZpdHMgY2FuIGRlcGVuZCBvbiB3aGVuIHlvdSB0b29rIHJldGlyZW1lbnQgZHVlIHRvIGRpc2FiaWxpdHkuPC9wPlxyXG4gICAgPHA+UGxlYXNlIHByb3ZpZGUgdGhlIGZvbGxvd2luZyBpbmZvcm1hdGlvbiBhcyBzb29uIGFzIHBvc3NpYmxlOjwvcD5cclxuICAgIDxvbD5cclxuICAgICAgICA8bGk+PHN0cm9uZz5EYXRlIG9mIFJldGlyZW1lbnQ6PC9zdHJvbmc+IFRoZSBleGFjdCBkYXRlIHlvdSByZXRpcmVkIGR1ZSB0byBkaXNhYmlsaXR5LjwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+RG9jdW1lbnRhdGlvbiBvZiBEaXNhYmlsaXR5IFJldGlyZW1lbnQ6PC9zdHJvbmc+IEFueSBvZmZpY2lhbCBkb2N1bWVudGF0aW9uIHlvdSBoYXZlIHRoYXQgY29uZmlybXMgeW91ciByZXRpcmVtZW50IHdhcyBkdWUgdG8gZGlzYWJpbGl0eS4gVGhpcyBtYXkgaW5jbHVkZSBsZXR0ZXJzIGZyb20geW91ciBlbXBsb3llciwgdGhlIHJldGlyZW1lbnQgcGxhbiwgb3IgbWVkaWNhbCByZWNvcmRzLjwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+RGV0YWlscyBvZiBCZW5lZml0cyBSZWNlaXZlZDo8L3N0cm9uZz4gU3BlY2lmaWMgYW1vdW50cyBhbmQgdGhlIHNvdXJjZSBvZiB0aGUgZGlzYWJpbGl0eSByZXRpcmVtZW50IGJlbmVmaXRzLiBQbGVhc2UgaW5jbHVkZSBhbnkgcmVsYXRlZCBkb2N1bWVudHMgc3VjaCBhcyBzdGF0ZW1lbnRzIG9yIG5vdGljZXMuPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5QcmV2aW91cyBZZWFyIFctMiBvciAxMDk5IEZvcm1zOjwvc3Ryb25nPiBJZiB5b3UgcmVjZWl2ZWQgYW55IHdhZ2VzIG9yIGRpc2FiaWxpdHkgcGF5bWVudHMgdGhhdCB3ZXJlIHJlcG9ydGVkIG9uIFctMiBvciAxMDk5IGZvcm1zIGluIHRoZSB5ZWFyIG9mIHlvdXIgcmV0aXJlbWVudCwgcGxlYXNlIHByb3ZpZGUgdGhlc2UgZm9ybXMuPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5BbnkgQ29ycmVzcG9uZGVuY2UgZnJvbSB0aGUgSVJTOjwvc3Ryb25nPiBJZiB5b3UgaGF2ZSByZWNlaXZlZCBhbnkgbm90aWNlcyBvciBsZXR0ZXJzIGZyb20gdGhlIElSUyByZWdhcmRpbmcgeW91ciBkaXNhYmlsaXR5IHJldGlyZW1lbnQgYmVuZWZpdHMsIHBsZWFzZSBpbmNsdWRlIGNvcGllcyBvZiB0aGVzZSBjb21tdW5pY2F0aW9ucy48L2xpPlxyXG4gICAgPC9vbD5cclxuICAgIDxwPlRoZSBhYm92ZSBpbmZvcm1hdGlvbiBpcyB2aXRhbCB0byBlbnN1cmUgeW91ciB0YXggcmV0dXJuIGlzIGNvbXBsZXRlIGFuZCBhY2N1cmF0ZS4gVW5kZXJzdGFuZGluZyB0aGUgc3BlY2lmaWNzIG9mIHlvdXIgZGlzYWJpbGl0eSByZXRpcmVtZW50IGJlbmVmaXRzIHdpbGwgYWlkIHVzIGluIGRldGVybWluaW5nIHRoZWlyIHRheGFiaWxpdHkgYW5kIGVuc3VyaW5nIHRoYXQgeW91ciB0YXggb2JsaWdhdGlvbnMgYXJlIHByZWNpc2VseSBjYWxjdWxhdGVkLjwvcD5cclxuICAgIDxwPklmIHlvdSBoYXZlIGFueSBxdWVzdGlvbnMgb3IgbmVlZCBhc3Npc3RhbmNlIGdhdGhlcmluZyB0aGVzZSBkb2N1bWVudHMsIGZlZWwgZnJlZSB0byBjb250YWN0IHVzLiBZb3VyIHByb21wdCByZXNwb25zZSBpcyBoaWdobHkgYXBwcmVjaWF0ZWQuPC9wPmBcclxuICB9LFxyXG4gIHtcclxuICAgIGFjdGlvblRheFN1YmplY3Q6IFwiQ2xlcmd5IFdhZ2VzXCIsXHJcbiAgICBhY3Rpb25UaXRsZTogXCJDbGVyZ3kgV2FnZXNcIixcclxuICAgIGFjdGlvbkluc3RydWN0aW9uczogYDxwPldlIGFyZSBpbiB0aGUgcHJvY2VzcyBvZiBwcmVwYXJpbmcgeW91ciB0YXggcmV0dXJucyBhbmQgaGF2ZSBub3RlZCB0aGF0IHlvdSByZWNlaXZlZCBXLTIgd2FnZXMgYXMgYSBjbGVyZ3kgbWVtYmVyLiBUbyBlbnN1cmUgYWNjdXJhdGUgcmVwb3J0aW5nIGFuZCB0byBwb3RlbnRpYWxseSBtYXhpbWl6ZSB5b3VyIHRheCBiZW5lZml0cywgd2UgcmVxdWlyZSBmdXJ0aGVyIGRldGFpbHMgcmVnYXJkaW5nIHlvdXIgY29tcGVuc2F0aW9uIHBhY2thZ2UuPC9wPlxyXG4gICAgPHA+UGxlYXNlIHByb3ZpZGUgdGhlIGZvbGxvd2luZyBkb2N1bWVudHMgYW5kIGluZm9ybWF0aW9uIGF0IHlvdXIgZWFybGllc3QgY29udmVuaWVuY2U6PC9wPlxyXG4gICAgPG9sPlxyXG4gICAgICAgIDxsaT48Yj5XLTIgRm9ybTo8L2I+IElmIG5vdCBhbHJlYWR5IHByb3ZpZGVkLCBpbmNsdWRlIGFueSBXLTIgZm9ybXMgaXNzdWVkIGJ5IHlvdXIgcmVsaWdpb3VzIGluc3RpdHV0aW9uLjwvbGk+XHJcbiAgICAgICAgPGxpPjxiPkhvdXNpbmcgQWxsb3dhbmNlIERvY3VtZW50YXRpb246PC9iPiBEZXRhaWxlZCBzdGF0ZW1lbnQgb3IgbGV0dGVyIGZyb20geW91ciByZWxpZ2lvdXMgaW5zdGl0dXRpb24gc3BlY2lmeWluZyB0aGUgYW1vdW50IGRlc2lnbmF0ZWQgYXMgaG91c2luZyBhbGxvd2FuY2UuPC9saT5cclxuICAgICAgICA8bGk+PGI+U2VsZi1FbXBsb3ltZW50IFRheDo8L2I+IENvbmZpcm1hdGlvbiBvbiB3aGV0aGVyIHlvdSBoYXZlIHRha2VuIGEgdm93IG9mIHBvdmVydHkgKGlmIGFwcGxpY2FibGUpLCBvciBhbnkgZG9jdW1lbnRhdGlvbiByZWxhdGVkIHRvIG9wdGluZyBvdXQgb2Ygc2VsZi1lbXBsb3ltZW50IHRheC48L2xpPlxyXG4gICAgICAgIDxsaT48Yj5FeHBlbnNlIFJlaW1idXJzZW1lbnRzOjwvYj4gRG9jdW1lbnRhdGlvbiBzaG93aW5nIGFueSBleHBlbnNlIHJlaW1idXJzZW1lbnRzIHJlY2VpdmVkIHVuZGVyIGFuIGFjY291bnRhYmxlIHBsYW4uPC9saT5cclxuICAgICAgICA8bGk+PGI+T3RoZXIgQ29tcGVuc2F0aW9uOjwvYj4gSW5mb3JtYXRpb24gb24gYW55IG90aGVyIGNvbXBlbnNhdGlvbiByZWNlaXZlZCBpbiB5b3VyIGNhcGFjaXR5IGFzIGNsZXJneSwgaW5jbHVkaW5nIGJ1dCBub3QgbGltaXRlZCB0byBsb3ZlIG9mZmVyaW5ncywgZmVlcyBmb3Igc2VydmljZXMgKHdlZGRpbmdzLCBmdW5lcmFscywgZXRjLiksIGFuZCBwYXJzb25hZ2UgYWxsb3dhbmNlcy48L2xpPlxyXG4gICAgPC9vbD5cclxuICAgIDxwPlRoaXMgaW5mb3JtYXRpb24gaXMgY3J1Y2lhbCBmb3IgdXMgdG8gYWNjdXJhdGVseSByZXByZXNlbnQgeW91ciBlYXJuaW5ncyBhbmQgdG8gY2FsY3VsYXRlIGFueSBwb3RlbnRpYWwgZGVkdWN0aW9ucyBjb3JyZWN0bHkuIFlvdXIgcHJvbXB0IGF0dGVudGlvbiB0byB0aGlzIHJlcXVlc3Qgd2lsbCBoZWxwIGVuc3VyZSB0aGF0IHlvdXIgdGF4IHJldHVybnMgYXJlIHByZXBhcmVkIGluIGEgdGltZWx5IGFuZCBlZmZpY2llbnQgbWFubmVyLjwvcD5cclxuICAgIDxwPklmIHlvdSBoYXZlIGFueSBxdWVzdGlvbnMgb3IgbmVlZCBmdXJ0aGVyIGNsYXJpZmljYXRpb24gb24gd2hhdCBpcyByZXF1aXJlZCwgcGxlYXNlIGRvIG5vdCBoZXNpdGF0ZSB0byBjb250YWN0IHVzLiBXZSBhcmUgaGVyZSB0byBhc3Npc3QgeW91IHRocm91Z2ggZXZlcnkgc3RlcCBvZiB0aGlzIHByb2Nlc3MuPC9wPlxyXG4gICAgPHA+VGhhbmsgeW91IGZvciB5b3VyIGNvb3BlcmF0aW9uIGFuZCBwcm9tcHQgYXR0ZW50aW9uIHRvIHRoaXMgbWF0dGVyLjwvcD5gXHJcbiAgfVxyXG4gIFxyXG4gIFxyXG4gIFxyXG4gIFxyXG4gIFxyXG4gIFxyXG4gIFxyXG4gIFxyXG4gIFxyXG4gIFxyXG4gIFxyXG4gIFxyXG5dO1xyXG4iXX0=
|
|
442
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLXRheC1mcmFnbWVudHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYWN0aW9uLXRlbXMvYWN0aW9uLXRheC1mcmFnbWVudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQWEsUUFBQSxrQkFBa0IsR0FBRztJQUNoQztRQUNFLGdCQUFnQixFQUFFLHdCQUF3QjtRQUMxQyxXQUFXLEVBQUUsZ0NBQWdDO1FBQzdDLGtCQUFrQixFQUFFOzs7Ozs7OzsrSUFRdUg7S0FDNUk7SUFDRDtRQUNFLGdCQUFnQixFQUFFLHNCQUFzQjtRQUN4QyxXQUFXLEVBQUUseURBQXlEO1FBQ3RFLGtCQUFrQixFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7dVBBMkIrTjtLQUNwUDtJQUNEO1FBQ0UsZ0JBQWdCLEVBQUUsWUFBWTtRQUM5QixXQUFXLEVBQUUsbUNBQW1DO1FBQ2hELGtCQUFrQixFQUFFOzs7Ozs7Ozs7Ozs7OzhKQWFzSTtLQUMzSjtJQUNEO1FBQ0UsZ0JBQWdCLEVBQUUsbUJBQW1CO1FBQ3JDLFdBQVcsRUFBRSwwQkFBMEI7UUFDdkMsa0JBQWtCLEVBQUU7Ozs7Ozs7Ozs7Ozs7a1BBYTBOO0tBQy9PO0lBQ0Q7UUFDRSxnQkFBZ0IsRUFBRSxrQkFBa0I7UUFDcEMsV0FBVyxFQUFFLGlDQUFpQztRQUM5QyxrQkFBa0IsRUFBRTs7Ozs7Ozs7Ozs7OzsySEFhbUc7S0FDeEg7SUFDRDtRQUNFLGdCQUFnQixFQUFFLGtCQUFrQjtRQUNwQyxXQUFXLEVBQUUsMEJBQTBCO1FBQ3ZDLGtCQUFrQixFQUFFOzs7Ozs7Ozs7Ozs2T0FXcU47S0FDMU87SUFDRDtRQUNFLGdCQUFnQixFQUFFLGlCQUFpQjtRQUNuQyxXQUFXLEVBQUUsaUJBQWlCO1FBQzlCLGtCQUFrQixFQUFFOzs7Ozs7Ozs7Q0FTdkI7S0FDRTtJQUNEO1FBQ0UsZ0JBQWdCLEVBQUUsMEJBQTBCO1FBQzVDLFdBQVcsRUFBRSwwQkFBMEI7UUFDdkMsa0JBQWtCLEVBQUU7Ozs7Ozs7Ozs7Ozs4SkFZc0k7S0FDM0o7SUFDRDtRQUNFLGdCQUFnQixFQUFFLDhCQUE4QjtRQUNoRCxXQUFXLEVBQUUsOEJBQThCO1FBQzNDLGtCQUFrQixFQUFFOzs7Ozs7Ozs7NE5BU29NO0tBQ3pOO0lBQ0Q7UUFDRSxnQkFBZ0IsRUFBRSxrQkFBa0I7UUFDcEMsV0FBVyxFQUFFLGtCQUFrQjtRQUMvQixrQkFBa0IsRUFBRTs7Ozs7Ozs7dUtBUStJO0tBQ3BLO0lBQ0Q7UUFDRSxnQkFBZ0IsRUFBRSxpQ0FBaUM7UUFDbkQsV0FBVyxFQUFFLG9DQUFvQztRQUNqRCxrQkFBa0IsRUFBRTs7Ozs7Ozs7OztvUkFVNFA7S0FDalI7SUFDRDtRQUNFLGdCQUFnQixFQUFFLDJCQUEyQjtRQUM3QyxXQUFXLEVBQUUsMkJBQTJCO1FBQ3hDLGtCQUFrQixFQUFFOzs7Ozs7Ozs7K0RBU3VDO0tBQzVEO0lBQ0Q7UUFDRSxnQkFBZ0IsRUFBRSx5QkFBeUI7UUFDM0MsV0FBVyxFQUFFLHlCQUF5QjtRQUN0QyxrQkFBa0IsRUFBRTs7Ozs7Ozs7Ozs7cUdBVzZFO0tBQ2xHO0lBQ0Q7UUFDRSxnQkFBZ0IsRUFBRSw2QkFBNkI7UUFDL0MsV0FBVyxFQUFFLDZCQUE2QjtRQUMxQyxrQkFBa0IsRUFBRTs7Ozs7Ozs7OztrTEFVMEo7S0FDL0s7SUFDRDtRQUNFLGdCQUFnQixFQUFFLGtCQUFrQjtRQUNwQyxXQUFXLEVBQUUsYUFBYTtRQUMxQixrQkFBa0IsRUFBRTs7Ozs7Ozs7Ozt5TEFVaUs7S0FDdEw7SUFDRDtRQUNFLGdCQUFnQixFQUFFLHlCQUF5QjtRQUMzQyxXQUFXLEVBQUUseUJBQXlCO1FBQ3RDLGtCQUFrQixFQUFFOzs7Ozs7Ozs7O2tIQVUwRjtLQUMvRztJQUNEO1FBQ0UsZ0JBQWdCLEVBQUUsMEJBQTBCO1FBQzVDLFdBQVcsRUFBRSwwQkFBMEI7UUFDdkMsa0JBQWtCLEVBQUU7Ozs7Ozs7Ozt5R0FTaUY7S0FDdEc7SUFDRDtRQUNFLGdCQUFnQixFQUFFLCtCQUErQjtRQUNqRCxXQUFXLEVBQUUsK0JBQStCO1FBQzVDLGtCQUFrQixFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztvS0FvQjRJO0tBQ2pLO0lBQ0Q7UUFDRSxnQkFBZ0IsRUFBRSxnQ0FBZ0M7UUFDbEQsV0FBVyxFQUFFLGdDQUFnQztRQUM3QyxrQkFBa0IsRUFBRTs7Ozs7Ozs7Ozt3SkFVZ0k7S0FDcko7SUFDRDtRQUNFLGdCQUFnQixFQUFFLGNBQWM7UUFDaEMsV0FBVyxFQUFFLGNBQWM7UUFDM0Isa0JBQWtCLEVBQUU7Ozs7Ozs7Ozs7OytFQVd1RDtLQUM1RTtJQUNEO1FBQ0UsZ0JBQWdCLEVBQUUsaUJBQWlCO1FBQ25DLFdBQVcsRUFBRSxpQkFBaUI7UUFDOUIsa0JBQWtCLEVBQUU7Ozs7Ozs7Ozs7K0RBVXVDO0tBQzVEO0lBQ0Q7UUFDRSxnQkFBZ0IsRUFBRSw0QkFBNEI7UUFDOUMsV0FBVyxFQUFFLDRCQUE0QjtRQUN6QyxrQkFBa0IsRUFBRTs7Ozs7Ozs7OzsrREFVdUM7S0FDNUQ7SUFDRDtRQUNFLGdCQUFnQixFQUFFLGFBQWE7UUFDL0IsV0FBVyxFQUFFLGFBQWE7UUFDMUIsa0JBQWtCLEVBQUU7Ozs7Ozs7Ozs7OzsrREFZdUM7S0FDNUQ7SUFDRDtRQUNFLGdCQUFnQixFQUFFLHFCQUFxQjtRQUN2QyxXQUFXLEVBQUUscUJBQXFCO1FBQ2xDLGtCQUFrQixFQUFFOzs7Ozs7Ozs7K0VBU3VEO0tBQzVFO0lBQ0Q7UUFDRSxnQkFBZ0IsRUFBRSxtQ0FBbUM7UUFDckQsV0FBVyxFQUFFLG1DQUFtQztRQUNoRCxrQkFBa0IsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3FFQXdCNkM7S0FDbEU7SUFDRDtRQUNFLGdCQUFnQixFQUFFLGlCQUFpQjtRQUNuQyxXQUFXLEVBQUUsaUJBQWlCO1FBQzlCLGtCQUFrQixFQUFFOzs7Ozs7OzttTUFRMks7S0FDaE07Q0FpQkYsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBBY3Rpb25UYXhGcmFnbWVudHMgPSBbXHJcbiAge1xyXG4gICAgYWN0aW9uVGF4U3ViamVjdDogXCJQcmlvciBZZWFyIFRheCBSZXR1cm5zXCIsXHJcbiAgICBhY3Rpb25UaXRsZTogYFByb3ZpZGUgUHJpb3IgWWVhciBUYXggUmV0dXJuc2AsXHJcbiAgICBhY3Rpb25JbnN0cnVjdGlvbnM6IGA8cD5XZSBhcmUgaW4gdGhlIHByb2Nlc3Mgb2YgcHJlcGFyaW5nIHlvdXIgdGF4IHJldHVybnMgYW5kIHJlcXVpcmUgeW91ciBhc3Npc3RhbmNlIHRvIGVuc3VyZSBhY2N1cmFjeSBhbmQgY29tcGxldGVuZXNzLiBPbmUgY3JpdGljYWwgcGllY2Ugb2YgaW5mb3JtYXRpb24gd2UgbmVlZCBpcyB5b3VyIDxzdHJvbmc+UHJpb3IgWWVhciBUYXggUmV0dXJuczwvc3Ryb25nPi4gVGhpcyBkb2N1bWVudCBpcyBlc3NlbnRpYWwgZm9yIHNldmVyYWwgcmVhc29ucywgaW5jbHVkaW5nIGJ1dCBub3QgbGltaXRlZCB0bzogdmVyaWZ5aW5nIGNhcnJ5LWZvcndhcmQgYW1vdW50cywgY29tcGFyaW5nIHllYXItb3Zlci15ZWFyIGluY29tZSBhbmQgZGVkdWN0aW9ucywgYW5kIGVuc3VyaW5nIGNvbXBsaWFuY2Ugd2l0aCB0YXggbGF3cy48L3A+XHJcbiAgICA8cD5UbyBmYWNpbGl0YXRlIHlvdXIgdGF4IHByZXBhcmF0aW9uLCBwbGVhc2UgcHJvdmlkZSB0aGUgZm9sbG93aW5nOjwvcD5cclxuICAgIDxvbD5cclxuICAgICAgICA8bGk+QSBjb3B5IG9mIHlvdXIgPHN0cm9uZz5GZWRlcmFsIHRheCByZXR1cm48L3N0cm9uZz4gZm9yIHRoZSBsYXN0IHRheCB5ZWFyLjwvbGk+XHJcbiAgICAgICAgPGxpPkEgY29weSBvZiB5b3VyIDxzdHJvbmc+U3RhdGUgdGF4IHJldHVybjwvc3Ryb25nPiBmb3IgdGhlIGxhc3QgdGF4IHllYXIsIGlmIGFwcGxpY2FibGUuPC9saT5cclxuICAgICAgICA8bGk+QW55IDxzdHJvbmc+bm90aWNlcyBvciBhbWVuZG1lbnRzPC9zdHJvbmc+IHJlbGF0ZWQgdG8geW91ciBwcmlvciB5ZWFyIHRheCByZXR1cm5zLjwvbGk+XHJcbiAgICA8L29sPlxyXG4gICAgPHA+SWYgeW91IGhhdmUgYW55IGRpZmZpY3VsdHkgaW4gZ2F0aGVyaW5nIHRoZXNlIGRvY3VtZW50cywgcGxlYXNlIGxldCB1cyBrbm93IGFzIHNvb24gYXMgcG9zc2libGUgc28gd2UgY2FuIGRpc2N1c3MgYWx0ZXJuYXRpdmUgc29sdXRpb25zLjwvcD5cclxuICAgIDxwPldlIGFwcHJlY2lhdGUgeW91ciBwcm9tcHQgYXR0ZW50aW9uIHRvIHRoaXMgcmVxdWVzdC4gUHJvdmlkaW5nIHRoZXNlIHdpbGwgZW5hYmxlIHVzIHRvIGNvbXBsZXRlIHlvdXIgdGF4IHByZXBhcmF0aW9uIHdpdGhvdXQgZGVsYXkuPC9wPmAsXHJcbiAgfSxcclxuICB7XHJcbiAgICBhY3Rpb25UYXhTdWJqZWN0OiBcIlN0YXR1dG9yeSBFeHRlbnNpb25zXCIsXHJcbiAgICBhY3Rpb25UaXRsZTogYERldGVybWluaW5nIEVsaWdpYmlsaXR5IGZvciBTdGF0dXRvcnkgRmlsaW5nIEV4dGVuc2lvbnNgLFxyXG4gICAgYWN0aW9uSW5zdHJ1Y3Rpb25zOiBgPHA+VG8gZW5zdXJlIHRoYXQgd2UgY2FuIGFjY3VyYXRlbHkgZGV0ZXJtaW5lIGlmIHlvdSBxdWFsaWZ5IGZvciBzdGF0dXRvcnkgZmlsaW5nIGV4dGVuc2lvbnMgZm9yIHlvdXIgdGF4IHJldHVybnMsIHdlIHJlcXVpcmUgc3BlY2lmaWMgaW5mb3JtYXRpb24gZnJvbSB5b3UuIFBsZWFzZSBzZWUgYmVsb3cgdGhlIGNhdGVnb3JpZXMgb2YgaW5mb3JtYXRpb24gbmVlZGVkIGJhc2VkIG9uIGRpZmZlcmVudCBlbGlnaWJpbGl0eSBjcml0ZXJpYTo8L3A+XHJcbiAgICA8b2w+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+RmVkZXJhbCBEaXNhc3RlciBBcmVhczwvc3Ryb25nPlxyXG4gICAgICAgICAgICA8dWw+XHJcbiAgICAgICAgICAgICAgICA8bGk+Q29uZmlybWF0aW9uIG9mIHlvdXIgcHJpbWFyeSByZXNpZGVuY2UgbG9jYXRpb24gZHVyaW5nIHRoZSB0YXggeWVhci48L2xpPlxyXG4gICAgICAgICAgICAgICAgPGxpPkFueSBvZmZpY2lhbCBkb2N1bWVudGF0aW9uIG9yIGNvcnJlc3BvbmRlbmNlIHJlY2VpdmVkIHJlZ2FyZGluZyBkaXNhc3RlciBkZWNsYXJhdGlvbnMgaW4geW91ciBhcmVhLjwvbGk+XHJcbiAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5MaXZpbmcgQWJyb2FkPC9zdHJvbmc+XHJcbiAgICAgICAgICAgIDx1bD5cclxuICAgICAgICAgICAgICAgIDxsaT5Qcm9vZiBvZiByZXNpZGVuY2Ugb3V0c2lkZSB0aGUgVW5pdGVkIFN0YXRlcyBmb3IgbW9yZSB0aGFuIDMzMCBmdWxsIGRheXMgd2l0aGluIGEgMTItbW9udGggcGVyaW9kLjwvbGk+XHJcbiAgICAgICAgICAgICAgICA8bGk+RG9jdW1lbnRhdGlvbiBzdXBwb3J0aW5nIHlvdXIgcGh5c2ljYWwgcHJlc2VuY2Ugb3IgYm9uYSBmaWRlIHJlc2lkZW5jZSBpbiBhIGZvcmVpZ24gY291bnRyeS48L2xpPlxyXG4gICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgIDwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+QWN0aXZlIE1pbGl0YXJ5PC9zdHJvbmc+XHJcbiAgICAgICAgICAgIDx1bD5cclxuICAgICAgICAgICAgICAgIDxsaT5Eb2N1bWVudGF0aW9uIGluZGljYXRpbmcgYWN0aXZlIGR1dHkgc3RhdHVzLCBpbmNsdWRpbmcgZGF0ZXMgb2Ygc2VydmljZSB3aXRoaW4gdGhlIHRheCB5ZWFyLjwvbGk+XHJcbiAgICAgICAgICAgICAgICA8bGk+SWYgYXBwbGljYWJsZSwgb3JkZXJzIGZvciBvdmVyc2VhcyBkZXBsb3ltZW50LjwvbGk+XHJcbiAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5Db21iYXQgWm9uZTwvc3Ryb25nPlxyXG4gICAgICAgICAgICA8dWw+XHJcbiAgICAgICAgICAgICAgICA8bGk+T2ZmaWNpYWwgb3JkZXJzIGRlbW9uc3RyYXRpbmcgeW91ciBkZXBsb3ltZW50IHRvIGEgY29tYmF0IHpvbmUsIGluY2x1ZGluZyB0aGUgc3BlY2lmaWMgZGF0ZXMuPC9saT5cclxuICAgICAgICAgICAgICAgIDxsaT5BbnkgcmVsZXZhbnQgY29tbXVuaWNhdGlvbiBmcm9tIHRoZSBEZXBhcnRtZW50IG9mIERlZmVuc2Ugb3Igb3RoZXIgb2ZmaWNpYWwgYm9kaWVzIHJlZ2FyZGluZyB5b3VyIHNlcnZpY2UgaW4gYSBjb21iYXQgem9uZS48L2xpPlxyXG4gICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgIDwvbGk+XHJcbiAgICA8L29sPlxyXG4gICAgPHA+UGxlYXNlIGVuc3VyZSB0aGF0IHlvdSBwcm92aWRlIHRoaXMgaW5mb3JtYXRpb24gYXQgeW91ciBlYXJsaWVzdCBjb252ZW5pZW5jZSB0byBmYWNpbGl0YXRlIHRoZSBhY2N1cmF0ZSBhbmQgdGltZWx5IHByZXBhcmF0aW9uIG9mIHlvdXIgdGF4IHJldHVybnMuIElmIHlvdSBoYXZlIGFueSBxdWVzdGlvbnMgb3IgbmVlZCBmdXJ0aGVyIGNsYXJpZmljYXRpb24sIGRvIG5vdCBoZXNpdGF0ZSB0byBjb250YWN0IHVzLjwvcD5gXHJcbiAgfSxcclxuICB7XHJcbiAgICBhY3Rpb25UYXhTdWJqZWN0OiBcIkRlcGVuZGVudHNcIixcclxuICAgIGFjdGlvblRpdGxlOiBcIlJlcXVlc3QgZm9yIERlcGVuZGVudCBJbmZvcm1hdGlvblwiLFxyXG4gICAgYWN0aW9uSW5zdHJ1Y3Rpb25zOiBgPHA+V2UgYXJlIGluIHRoZSBwcm9jZXNzIG9mIHByZXBhcmluZyB5b3VyIHRheCBkb2N1bWVudHMgYW5kIG5lZWQgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiByZWdhcmRpbmcgeW91ciBkZXBlbmRlbnRzLiBUaGlzIGluZm9ybWF0aW9uIGlzIGNydWNpYWwgZm9yIGFwcGx5aW5nIHRoZSBtb3N0IGJlbmVmaWNpYWwgZGVwZW5kZW5jeSB0ZXN0cywgaW5jbHVkaW5nIHF1YWxpZmljYXRpb25zIGZvciBIZWFkIG9mIEhvdXNlaG9sZCAoSE9IKSwgQ2hpbGQgVGF4IENyZWRpdCwgYW5kIG90aGVyIHJlbGF0ZWQgYmVuZWZpdHMuIFBsZWFzZSBwcm92aWRlIHRoZSBmb2xsb3dpbmcgZGV0YWlscyBmb3IgZWFjaCBvZiB5b3VyIGNsYWltZWQgZGVwZW5kZW50czo8L3A+XHJcbiAgICA8b2w+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+RnVsbCBOYW1lOjwvc3Ryb25nPiBUaGUgY29tcGxldGUgbGVnYWwgbmFtZSBvZiB0aGUgZGVwZW5kZW50LjwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+U29jaWFsIFNlY3VyaXR5IE51bWJlciAoU1NOKSBvciBUYXhwYXllciBJZGVudGlmaWNhdGlvbiBOdW1iZXIgKFRJTik6PC9zdHJvbmc+IFRoaXMgaXMgbmVjZXNzYXJ5IGZvciBpZGVudGlmaWNhdGlvbiBwdXJwb3Nlcy48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPkRhdGUgb2YgQmlydGg6PC9zdHJvbmc+IEhlbHBzIHRvIGRldGVybWluZSBlbGlnaWJpbGl0eSBmb3IgY2VydGFpbiBjcmVkaXRzIGxpa2UgdGhlIENoaWxkIFRheCBDcmVkaXQuPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5SZWxhdGlvbnNoaXAgdG8gWW91Ojwvc3Ryb25nPiBTcGVjaWZ5IHRoZSBkZXBlbmRlbnQncyByZWxhdGlvbnNoaXAgKHNvbiwgZGF1Z2h0ZXIsIHN0ZXBjaGlsZCwgZm9zdGVyIGNoaWxkLCBicm90aGVyLCBzaXN0ZXIsIGV0Yy4pIHRvIHlvdS48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPlJlc2lkZW5jeTo8L3N0cm9uZz4gQ29uZmlybSB0aGUgZGVwZW5kZW50IGxpdmVkIHdpdGggeW91IGZvciBtb3JlIHRoYW4gaGFsZiB0aGUgeWVhci48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPkZpbmFuY2lhbCBTdXBwb3J0Ojwvc3Ryb25nPiBDb25maXJtIHlvdSBwcm92aWRlZCBtb3JlIHRoYW4gaGFsZiBvZiB0aGUgZGVwZW5kZW504oCZcyBmaW5hbmNpYWwgc3VwcG9ydCBmb3IgdGhlIHllYXIuPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5DaXRpemVuc2hpcDo8L3N0cm9uZz4gQ29uZmlybSB0aGUgZGVwZW5kZW50IGlzIGEgVS5TLiBjaXRpemVuLCBVLlMuIG5hdGlvbmFsLCBvciBhIHJlc2lkZW50IGFsaWVuLjwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+TWFyaXRhbCBTdGF0dXM6PC9zdHJvbmc+IEluZGljYXRlIHdoZXRoZXIgdGhlIGRlcGVuZGVudCBpcyBtYXJyaWVkIGFuZCwgaWYgc28sIHdoZXRoZXIgdGhleSBhcmUgZmlsaW5nIGpvaW50bHkuPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5JbmNvbWUgSW5mb3JtYXRpb246PC9zdHJvbmc+IElmIGFwcGxpY2FibGUsIHByb3ZpZGUgZGV0YWlscyByZWdhcmRpbmcgYW55IGluY29tZSB0aGUgZGVwZW5kZW50IG1heSBoYXZlIGVhcm5lZCBvciByZWNlaXZlZC48L2xpPlxyXG4gICAgPC9vbD5cclxuICAgIDxwPlBsZWFzZSBlbnN1cmUgeW91IHByb3ZpZGUgY29tcGxldGUgYW5kIGFjY3VyYXRlIGluZm9ybWF0aW9uIHRvIGF2b2lkIGFueSBkZWxheXMgaW4gdGhlIHByb2Nlc3Npbmcgb2YgeW91ciB0YXggcmV0dXJuLjwvcD5cclxuICAgIDxwPlRoYW5rIHlvdSBmb3IgeW91ciBwcm9tcHQgYXR0ZW50aW9uIHRvIHRoaXMgbWF0dGVyLiBJZiB5b3UgaGF2ZSBhbnkgcXVlc3Rpb25zIG9yIHJlcXVpcmUgZnVydGhlciBhc3Npc3RhbmNlLCBwbGVhc2UgZG8gbm90IGhlc2l0YXRlIHRvIGNvbnRhY3QgdXMuPC9wPmBcclxuICB9LFxyXG4gIHtcclxuICAgIGFjdGlvblRheFN1YmplY3Q6IFwiSGVhZCBvZiBIb3VzZWhvbGRcIixcclxuICAgIGFjdGlvblRpdGxlOiBcIkhlYWQgb2YgSG91c2Vob2xkIEZpbGluZ1wiLFxyXG4gICAgYWN0aW9uSW5zdHJ1Y3Rpb25zOiBgPHA+VG8gZW5zdXJlIGFjY3VyYXRlIGFuZCBjb21wbGlhbnQgdGF4IGZpbGluZyB1bmRlciB0aGUgXCJIZWFkIG9mIEhvdXNlaG9sZFwiIHN0YXR1cywgd2Uga2luZGx5IHJlcXVlc3QgdGhlIGZvbGxvd2luZyBpbmZvcm1hdGlvbi4gVGhpcyBzdGF0dXMgY2FuIHByb3ZpZGUgc2lnbmlmaWNhbnQgdGF4IGJlbmVmaXRzLCBhbmQgaXQgaXMgY3J1Y2lhbCB0aGF0IGFsbCBJUlMgcmVxdWlyZW1lbnRzIGFyZSBtZXQuIFBsZWFzZSBwcm92aWRlOjwvcD5cclxuICAgIDxvbD5cclxuICAgIDxsaT48c3Ryb25nPk1hcml0YWwgU3RhdHVzOjwvc3Ryb25nPiBDb25maXJtYXRpb24gb2YgeW91ciBtYXJpdGFsIHN0YXR1cyBhcyBvZiB0aGUgbGFzdCBkYXkgb2YgdGhlIHRheCB5ZWFyIChlLmcuLCBzaW5nbGUsIGRpdm9yY2VkLCBsZWdhbGx5IHNlcGFyYXRlZCkuPC9saT5cclxuICAgIDxsaT48c3Ryb25nPkhvdXNlaG9sZCBFeHBlbnNlczo8L3N0cm9uZz4gRGV0YWlsZWQgcmVjb3JkcyBpbmRpY2F0aW5nIHRoYXQgeW91IHBhaWQgbW9yZSB0aGFuIGhhbGYgb2YgdGhlIGNvc3RzIG9mIGtlZXBpbmcgdXAgYSBob21lIGZvciB0aGUgdGF4IHllYXIuIFRoaXMgaW5jbHVkZXMgcmVudCwgbW9ydGdhZ2UgaW50ZXJlc3QsIHByb3BlcnR5IHRheGVzLCB1dGlsaXRpZXMsIHJlcGFpcnMsIG1haW50ZW5hbmNlLCBhbmQgZ3JvY2VyaWVzLjwvbGk+XHJcbiAgICA8bGk+PHN0cm9uZz5RdWFsaWZ5aW5nIFBlcnNvbjo8L3N0cm9uZz4gSW5mb3JtYXRpb24gb24gdGhlIHF1YWxpZnlpbmcgcGVyc29uKHMpIHdobyBsaXZlZCB3aXRoIHlvdSBpbiB0aGUgaG9tZSBmb3IgbW9yZSB0aGFuIGhhbGYgb2YgdGhlIHllYXIsIGV4Y2VwdCBmb3IgdGVtcG9yYXJ5IGFic2VuY2VzIHN1Y2ggYXMgc2Nob29sLiBQbGVhc2UgaW5jbHVkZTpcclxuICAgICAgPHVsPlxyXG4gICAgICA8bGk+RnVsbCBuYW1lIGFuZCByZWxhdGlvbnNoaXAgdG8geW91IChlLmcuLCBjaGlsZCwgcGFyZW50LCBzaWJsaW5nKS48L2xpPlxyXG4gICAgICA8bGk+RHVyYXRpb24gb2YgcmVzaWRlbmN5IGF0IHlvdXIgaG9tZSBkdXJpbmcgdGhlIHRheCB5ZWFyLjwvbGk+XHJcbiAgICAgIDxsaT5TdXBwb3J0aW5nIGRvY3VtZW50cyAoYmlydGggY2VydGlmaWNhdGVzLCBzY2hvb2wgcmVjb3JkcywgZXRjLikgcHJvdmluZyB0aGUgcmVzaWRlbmN5IGFuZCByZWxhdGlvbnNoaXAuPC9saT5cclxuICAgICAgPC91bD5cclxuICAgIDwvbGk+XHJcbiAgICA8bGk+PHN0cm9uZz5BZGRpdGlvbmFsIFN1cHBvcnQ6PC9zdHJvbmc+IEFueSBmdXJ0aGVyIGRvY3VtZW50YXRpb24gdGhhdCBjYW4gc3VwcG9ydCB5b3VyIGNsYWltIGZvciB0aGUgSGVhZCBvZiBIb3VzZWhvbGQgZmlsaW5nIHN0YXR1cy48L2xpPlxyXG4gICAgPC9vbD5cclxuICAgIDxwPlBsZWFzZSBub3RlIHRoYXQgcHJvdmlkaW5nIGFjY3VyYXRlIGFuZCBjb21wbGV0ZSBpbmZvcm1hdGlvbiBpcyBlc3NlbnRpYWwgZm9yIHlvdXIgYmVuZWZpdCBhbmQgdG8gY29tcGx5IHdpdGggdGF4IGxhd3MuIFNob3VsZCB5b3UgaGF2ZSBhbnkgcXVlc3Rpb25zIG9yIHJlcXVpcmUgYXNzaXN0YW5jZSBpbiBnYXRoZXJpbmcgdGhlc2UgZGV0YWlscywgZG8gbm90IGhlc2l0YXRlIHRvIGNvbnRhY3QgdXMuPC9wPmBcclxuICB9LFxyXG4gIHtcclxuICAgIGFjdGlvblRheFN1YmplY3Q6IFwiUmVzaWRlbmN5IFN0YXR1c1wiLFxyXG4gICAgYWN0aW9uVGl0bGU6IFwiSW5mb3JtYXRpb24gb24gUmVzaWRlbmN5IFN0YXR1c1wiLFxyXG4gICAgYWN0aW9uSW5zdHJ1Y3Rpb25zOiBgPHA+V2UgdW5kZXJzdGFuZCB0aGF0IGVpdGhlciB5b3Ugb3IgeW91ciBzcG91c2UgaXMgbm90IGEgVS5TLiBjaXRpemVuLiBUbyBhY2N1cmF0ZWx5IGRldGVybWluZSB5b3VyIHRheCBzdGF0dXMsIHdlIG5lZWQgdG8gYXBwbHkgdGhlIG5lY2Vzc2FyeSBUYXggUmVzaWRlbmN5IFRlc3RzLCB3aGljaCBpbmNsdWRlIHRoZSA8c3Ryb25nPkdyZWVuIENhcmQgVGVzdDwvc3Ryb25nPiBhbmQgdGhlIDxzdHJvbmc+U3Vic3RhbnRpYWwgUHJlc2VuY2UgVGVzdDwvc3Ryb25nPi4gVGhpcyB3aWxsIGhlbHAgdXMgZW5zdXJlIHlvdXIgdGF4IHJldHVybnMgYXJlIGNvbXBsZXRlZCBjb3JyZWN0bHkgYW5kIGNvbXBseSB3aXRoIFUuUy4gcmVndWxhdGlvbnMuPC9wPlxyXG5cclxuICAgIDxwPlRvIHByb2NlZWQsIHdlIGtpbmRseSBhc2sgeW91IHRvIHByb3ZpZGUgdGhlIGZvbGxvd2luZyBpbmZvcm1hdGlvbjo8L3A+XHJcbiAgICA8b2w+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+R3JlZW4gQ2FyZCBTdGF0dXM6PC9zdHJvbmc+IFBsZWFzZSBjb25maXJtIGlmIHlvdSBvciB5b3VyIHNwb3VzZSBoYXZlIGJlZW4gaXNzdWVkIGEgVS5TLiBncmVlbiBjYXJkIChMYXdmdWwgUGVybWFuZW50IFJlc2lkZW50IENhcmQpIGF0IGFueSBwb2ludCBkdXJpbmcgdGhlIHRheCB5ZWFyLiBJZiB5ZXMsIHByb3ZpZGUgYSBjb3B5IG9mIHRoZSBncmVlbiBjYXJkIG9yIHRoZSBvZmZpY2lhbCBkb2N1bWVudCBjb25maXJtaW5nIHRoZSBzdGF0dXMuPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5EYXRlIG9mIEFycml2YWwgaW4gdGhlIFUuUy46PC9zdHJvbmc+IFRoZSBleGFjdCBkYXRlcyB3aGVuIHlvdSBhbmQvb3IgeW91ciBzcG91c2UgZmlyc3QgYXJyaXZlZCBpbiB0aGUgVS5TLiBkdXJpbmcgdGhlIHRheCB5ZWFyLjwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+VHJhdmVsIEhpc3Rvcnk6PC9zdHJvbmc+IEEgZGV0YWlsZWQgbGlzdCBvZiBhbGwgdGhlIGRhdGVzIHlvdSBhbmQvb3IgeW91ciBzcG91c2UgZW50ZXJlZCBhbmQgbGVmdCB0aGUgVS5TLiBkdXJpbmcgdGhlIHRheCB5ZWFyLiBUaGlzIGluZm9ybWF0aW9uIGlzIGNydWNpYWwgZm9yIHRoZSBTdWJzdGFudGlhbCBQcmVzZW5jZSBUZXN0LjwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+VmlzYSBUeXBlOjwvc3Ryb25nPiBJZiB5b3Ugb3IgeW91ciBzcG91c2UgYXJlIG9uIGEgdmlzYSwgcGxlYXNlIHNwZWNpZnkgdGhlIHR5cGUgYW5kIHByb3ZpZGUgYSBjb3B5IG9mIHRoZSB2aXNhLjwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+UHJldmlvdXMgWWVhciBUYXggRmlsaW5nczo8L3N0cm9uZz4gQ29waWVzIG9mIGxhc3QgeWVhcidzIHRheCByZXR1cm5zLCBpZiBhcHBsaWNhYmxlLiBUaGlzIGluZm9ybWF0aW9uIGNhbiBwcm92aWRlIGNvbnRleHQgYW5kIGhlbHAgZGV0ZXJtaW5lIHJlc2lkZW5jeSBzdGF0dXMgbW9yZSBhY2N1cmF0ZWx5LjwvbGk+XHJcbiAgICA8L29sPlxyXG5cclxuICAgIDxwPlBsZWFzZSBlbnN1cmUgYWxsIGRvY3VtZW50cyBhcmUgY2xlYXIgYW5kIGxlZ2libGUuIFlvdSBjYW4gc2VuZCB0aGVtIHRvIHVzIHZpYSBlbWFpbCBvciB0aHJvdWdoIG91ciBzZWN1cmUgY2xpZW50IHBvcnRhbC4gRm9yIGFueSBxdWVzdGlvbnMgb3IgYXNzaXN0YW5jZSwgZmVlbCBmcmVlIHRvIGNvbnRhY3QgdXMgZGlyZWN0bHkuPC9wPlxyXG5cclxuICAgIDxwPldlIGFwcHJlY2lhdGUgeW91ciBwcm9tcHQgYXR0ZW50aW9uIHRvIHRoaXMgbWF0dGVyIGFuZCBsb29rIGZvcndhcmQgdG8gYXNzaXN0aW5nIHlvdSB3aXRoIHlvdXIgdGF4IHByZXBhcmF0aW9uLjwvcD5gXHJcbiAgfSxcclxuICB7XHJcbiAgICBhY3Rpb25UYXhTdWJqZWN0OiBcIkpvaW50IFRheCBSZWxpZWZcIixcclxuICAgIGFjdGlvblRpdGxlOiBcIkpvaW50IFRheCBSZWxpZWYgRGV0YWlsc1wiLFxyXG4gICAgYWN0aW9uSW5zdHJ1Y3Rpb25zOiBgPHA+VG8gYXNzaXN0IHlvdSBlZmZlY3RpdmVseSB3aXRoIHlvdXIgcmVxdWVzdCBmb3Igam9pbnQgdGF4IHJlbGllZiwgd2UgbmVlZCB0byBjb2xsZWN0IHNwZWNpZmljIGluZm9ybWF0aW9uIHRvIHVuZGVyc3RhbmQgeW91ciBzaXR1YXRpb24gdGhvcm91Z2hseS4gVGhpcyB3aWxsIGhlbHAgdXMgZGV0ZXJtaW5lIHRoZSBtb3N0IHN1aXRhYmxlIHR5cGUgb2YgcmVsaWVmIGZvciB5b3VyIGNpcmN1bXN0YW5jZXMsIHdoaWNoIG1heSBpbmNsdWRlIElubm9jZW50IFNwb3VzZSBSZWxpZWYsIEluanVyZWQgU3BvdXNlIEFsbG9jYXRpb24sIFNlcGFyYXRpb24gb2YgTGlhYmlsaXR5IFJlbGllZiwgb3IgRXF1aXRhYmxlIFJlbGllZi4gUGxlYXNlIHByb3ZpZGUgdGhlIGZvbGxvd2luZyBkb2N1bWVudHMgYW5kIGluZm9ybWF0aW9uIGF0IHlvdXIgZWFybGllc3QgY29udmVuaWVuY2U6PC9wPlxyXG4gICAgPG9sPlxyXG4gICAgICA8bGk+PHN0cm9uZz5Db21wbGV0ZSBUYXggUmV0dXJuczo8L3N0cm9uZz4gQ29waWVzIG9mIGFsbCB0YXggcmV0dXJucyBmb3IgdGhlIHllYXJzIHlvdSBhcmUgcmVxdWVzdGluZyByZWxpZWYuPC9saT5cclxuICAgICAgPGxpPjxzdHJvbmc+RGV0YWlsZWQgU3RhdGVtZW50Ojwvc3Ryb25nPiBBIHdyaXR0ZW4gc3RhdGVtZW50IGV4cGxhaW5pbmcgd2h5IHlvdSBiZWxpZXZlIHlvdSBxdWFsaWZ5IGZvciByZWxpZWYsIGluY2x1ZGluZyBhbnkgc3BlY2lmaWMgZXZlbnRzIG9yIGNpcmN1bXN0YW5jZXMgeW91IHdhbnQgdXMgdG8gY29uc2lkZXIuPC9saT5cclxuICAgICAgPGxpPjxzdHJvbmc+SW5jb21lIERvY3VtZW50YXRpb246PC9zdHJvbmc+IFByb29mIG9mIHlvdXIgY3VycmVudCBpbmNvbWUgYW5kIHRoYXQgb2YgeW91ciBzcG91c2UgaWYgYXBwbGljYWJsZSwgc3VjaCBhcyByZWNlbnQgcGF5IHN0dWJzLCBXLTIgZm9ybXMsIG9yIG90aGVyIGluY29tZSBzdGF0ZW1lbnRzLjwvbGk+XHJcbiAgICAgIDxsaT48c3Ryb25nPlByb29mIG9mIEZpbmFuY2lhbCBTaXR1YXRpb246PC9zdHJvbmc+IERvY3VtZW50cyBzaG93aW5nIHlvdXIgY3VycmVudCBmaW5hbmNpYWwgc2l0dWF0aW9uLCBpbmNsdWRpbmcgYmFuayBzdGF0ZW1lbnRzLCBtb250aGx5IGJpbGxzLCBhbmQgYW55IG90aGVyIGxpYWJpbGl0aWVzLjwvbGk+XHJcbiAgICAgIDxsaT48c3Ryb25nPkRvY3VtZW50YXRpb24gb2YgTWFyaXRhbCBTdGF0dXM6PC9zdHJvbmc+IElmIGFwcGxpY2FibGUsIGxlZ2FsIGRvY3VtZW50cyByZWxhdGVkIHRvIHNlcGFyYXRpb24sIGRpdm9yY2UsIG9yIGFubnVsbWVudC48L2xpPlxyXG4gICAgICA8bGk+PHN0cm9uZz5Qcm9vZiBvZiBSZXNpZGVuY2U6PC9zdHJvbmc+IERvY3VtZW50cyB0aGF0IHByb3ZlIHdoZXJlIGVhY2ggb2YgeW91IGhhcyBsaXZlZCBkdXJpbmcgdGhlIHRheCB5ZWFycyBpbiBxdWVzdGlvbi48L2xpPlxyXG4gICAgICA8bGk+PHN0cm9uZz5BbnkgQ29ycmVzcG9uZGVuY2UgZnJvbSB0aGUgSVJTOjwvc3Ryb25nPiBJZiB5b3UgaGF2ZSByZWNlaXZlZCBhbnkgbm90aWNlcyBvciBsZXR0ZXJzIGZyb20gdGhlIElSUyByZWdhcmRpbmcgeW91ciBqb2ludCB0YXggbGlhYmlsaXR5LCBwbGVhc2UgaW5jbHVkZSBjb3BpZXMuPC9saT5cclxuICAgIDwvb2w+XHJcbiAgICA8cD5QbGVhc2UgZW5zdXJlIGFsbCBkb2N1bWVudHMgYXJlIGNsZWFybHkgbGVnaWJsZS4gWW91IG1heSBzZW5kIHRoZW0gdmlhIGVtYWlsLCBvciB1cGxvYWQuIElmIHlvdSBoYXZlIGFueSBxdWVzdGlvbnMgb3IgbmVlZCBmdXJ0aGVyIGNsYXJpZmljYXRpb24gb24gd2hhdCB0byBwcm92aWRlLCBkb24ndCBoZXNpdGF0ZSB0byByZWFjaCBvdXQuPC9wPlxyXG4gICAgPHA+V2UgdW5kZXJzdGFuZCB0aGF0IHRoaXMgcHJvY2VzcyBjYW4gYmUgY29tcGxleCwgYnV0IHdlIGFyZSBoZXJlIHRvIGd1aWRlIHlvdSB0aHJvdWdoIGl0LiBPdXIgZ29hbCBpcyB0byBlbnN1cmUgd2UgaGF2ZSBhIGNvbXByZWhlbnNpdmUgdW5kZXJzdGFuZGluZyBvZiB5b3VyIHNpdHVhdGlvbiB0byBhZHZvY2F0ZSBmb3IgdGhlIG1vc3QgZmF2b3JhYmxlIG91dGNvbWUgb24geW91ciBiZWhhbGYuPC9wPmBcclxuICB9LFxyXG4gIHtcclxuICAgIGFjdGlvblRheFN1YmplY3Q6IFwiMTA5OSBORUMgSW5jb21lXCIsXHJcbiAgICBhY3Rpb25UaXRsZTogXCIxMDk5IE5FQyBJbmNvbWVcIixcclxuICAgIGFjdGlvbkluc3RydWN0aW9uczogYDxwPldlIGFyZSBpbiB0aGUgcHJvY2VzcyBvZiBwcmVwYXJpbmcgeW91ciB0YXggcmV0dXJuIGFuZCByZXF1aXJlIGEgY29tcHJlaGVuc2l2ZSB1bmRlcnN0YW5kaW5nIG9mIGFsbCB5b3VyIHNvdXJjZXMgb2YgaW5jb21lLiBTcGVjaWZpY2FsbHksIHdlIG5lZWQgdG8gYWNjb3VudCBmb3IgeW91ciAxMDk5IE5FQyBJbmNvbWUuIFRoZSAxMDk5LU5FQyBmb3JtIGlzIGNydWNpYWwgZm9yIGNvcnJlY3RseSByZXBvcnRpbmcgeW91ciBub24tZW1wbG95ZWUgY29tcGVuc2F0aW9uLjwvcD5cclxuICAgIDxwPlRvIGVuc3VyZSBhIHRob3JvdWdoIGFuZCBhY2N1cmF0ZSB0YXggcHJlcGFyYXRpb24sIHBsZWFzZSBwcm92aWRlIHVzIHdpdGggdGhlIGZvbGxvd2luZzo8L3A+XHJcbiAgICA8b2w+XHJcbiAgICAgICAgPGxpPjxiPkFsbCAxMDk5LU5FQyBmb3JtczwvYj4geW91IHJlY2VpdmVkIGZvciB0aGUgdGF4IHllYXIuPC9saT5cclxuICAgICAgICA8bGk+RGV0YWlscyBvZiBhbnkgPGI+YWRkaXRpb25hbCBub24tZW1wbG95ZWUgY29tcGVuc2F0aW9uPC9iPiBub3QgcmVwb3J0ZWQgb24gYSAxMDk5LU5FQyBmb3JtLjwvbGk+XHJcbiAgICAgICAgPGxpPkluZm9ybWF0aW9uIHJlZ2FyZGluZyA8Yj5leHBlbnNlcyByZWxhdGVkIHRvIHlvdXIgMTA5OSBORUMgaW5jb21lPC9iPiwgaWYgYXBwbGljYWJsZS48L2xpPlxyXG4gICAgPC9vbD5cclxuICAgIDxwPklmIHlvdSBoYXZlIG5vdCB5ZXQgcmVjZWl2ZWQgYWxsIHlvdXIgMTA5OS1ORUMgZm9ybXMsIHBsZWFzZSBsZXQgdXMga25vdywgYW5kIHByb3ZpZGUgYW4gZXN0aW1hdGUgb2Ygd2hlbiB5b3UgZXhwZWN0IHRvIHJlY2VpdmUgdGhlbS4gVGhpcyBpbmZvcm1hdGlvbiBpcyBjcml0aWNhbCBmb3IgYWNjdXJhdGVseSByZXBvcnRpbmcgeW91ciBpbmNvbWUgYW5kIGF2b2lkaW5nIHBvdGVudGlhbCBwZW5hbHRpZXMgb3IgYXVkaXRzIGZyb20gdGhlIElSUy48L3A+XHJcbiAgICA8cD5QbGVhc2UgcmVhY2ggb3V0IHRvIHVzIGRpcmVjdGx5IHNob3VsZCB5b3UgaGF2ZSBhbnkgcXVlc3Rpb25zIG9yIG5lZWQgZnVydGhlciBjbGFyaWZpY2F0aW9uLiBZb3VyIHByb21wdCByZXNwb25zZSBpcyBncmVhdGx5IGFwcHJlY2lhdGVkIHRvIGVuc3VyZSB5b3VyIHRheCByZXR1cm4gaXMgcHJvY2Vzc2VkIGVmZmljaWVudGx5IGFuZCBhY2N1cmF0ZWx5LjwvcD5cclxuYFxyXG4gIH0sXHJcbiAge1xyXG4gICAgYWN0aW9uVGF4U3ViamVjdDogXCJTY2hlZHVsZSBLLTEgSW5mb3JtYXRpb25cIixcclxuICAgIGFjdGlvblRpdGxlOiBcIlNjaGVkdWxlIEstMSBJbmZvcm1hdGlvblwiLFxyXG4gICAgYWN0aW9uSW5zdHJ1Y3Rpb25zOiBgPHA+V2UgdW5kZXJzdGFuZCB0aGF0IHlvdSBoYXZlIGluZGljYXRlZCB0aGUgcHJlc2VuY2Ugb2YgU2NoZWR1bGUgSyBpbmNvbWUgZm9yIHRoZSBjdXJyZW50IHRheCB5ZWFyLiBJbiBvcmRlciB0byBlbnN1cmUgdGhlIGFjY3VyYWN5IGFuZCBjb21wbGV0ZW5lc3Mgb2YgeW91ciB0YXggcmV0dXJuLCBpdCBpcyBpbXBlcmF0aXZlIHRoYXQgd2UgZ2F0aGVyIGFsbCBuZWNlc3NhcnkgZG9jdW1lbnRzIHJlbGF0ZWQgdG8gdGhpcyBpbmNvbWUuPC9wPlxyXG4gICAgPHA+SWYgd2UgYXJlIHByZXBhcmluZyB5b3VyIGJ1c2luZXNzIHJldHVybiwgcmVzdCBhc3N1cmVkIHRoYXQgd2Ugd2lsbCBnZW5lcmF0ZSB0aGUgYXBwbGljYWJsZSBTY2hlZHVsZSBLLTEocykgZm9yIHlvdXIgYnVzaW5lc3MgaW50ZXJlc3RzLiBIb3dldmVyLCBpdCBpcyBlc3NlbnRpYWwgdGhhdCB3ZSBjb2xsZWN0IGNvcGllcyBvZiA8c3Ryb25nPmFsbCBvdGhlciBTY2hlZHVsZSBLLTFzPC9zdHJvbmc+IHlvdSBtYXkgaGF2ZSByZWNlaXZlZCB0byBpbmNvcnBvcmF0ZSBpbnRvIHlvdXIgcGVyc29uYWwgdGF4IHJldHVybi48L3A+ICBcclxuICAgIDxoMz5TcGVjaWZpYyBEb2N1bWVudCBSZXF1ZXN0OjwvaDM+XHJcbiAgICA8b2w+XHJcbiAgICAgICAgPGxpPkFueSBhbmQgYWxsIFNjaGVkdWxlIEstMShzKSB5b3UgaGF2ZSByZWNlaXZlZCBmcm9tOjwvbGk+XHJcbiAgICAgICAgPHVsPlxyXG4gICAgICAgICAgICA8bGk+UGFydG5lcnNoaXBzPC9saT5cclxuICAgICAgICAgICAgPGxpPlMgQ29ycG9yYXRpb25zPC9saT5cclxuICAgICAgICAgICAgPGxpPkVzdGF0ZSBvciBUcnVzdHM8L2xpPlxyXG4gICAgICAgIDwvdWw+XHJcbiAgICA8L29sPlxyXG4gICAgPHA+UGxlYXNlIGVuc3VyZSB0aGF0IGFsbCBkb2N1bWVudHMgYXJlIDxzdHJvbmc+Y2xlYXIgYW5kIGxlZ2libGU8L3N0cm9uZz4gdG8gcHJldmVudCBhbnkgZGVsYXlzIGluIHByb2Nlc3NpbmcgeW91ciByZXR1cm4uIFlvdSBtYXkgc3VibWl0IHRoZXNlIGRvY3VtZW50cyB0aHJvdWdoIG91ciBzZWN1cmUgY2xpZW50IHBvcnRhbCwgb3IgY29udGFjdCB1cyB0byBtYWtlIGFsdGVybmF0aXZlIGFycmFuZ2VtZW50cyBpZiBuZWNlc3NhcnkuPC9wPlxyXG4gICAgPHA+V2UgYXBwcmVjaWF0ZSB5b3VyIHByb21wdCBhdHRlbnRpb24gdG8gdGhpcyByZXF1ZXN0LiBTaG91bGQgeW91IGhhdmUgYW55IHF1ZXN0aW9ucyBvciByZXF1aXJlIGFueSBhc3Npc3RhbmNlLCBwbGVhc2UgZG8gbm90IGhlc2l0YXRlIHRvIHJlYWNoIG91dC48L3A+YFxyXG4gIH0sXHJcbiAge1xyXG4gICAgYWN0aW9uVGF4U3ViamVjdDogXCJPdGhlciBTZWxmLUVtcGxveW1lbnQgSW5jb21lXCIsXHJcbiAgICBhY3Rpb25UaXRsZTogXCJPdGhlciBTZWxmLUVtcGxveW1lbnQgSW5jb21lXCIsXHJcbiAgICBhY3Rpb25JbnN0cnVjdGlvbnM6IGA8cD5XZSBhcmUgaW4gdGhlIHByb2Nlc3Mgb2YgcHJlcGFyaW5nIHlvdXIgdGF4ZXMgYW5kIGhhdmUgbm90ZWQgdGhhdCB5b3UgaGF2ZSBpbmRpY2F0ZWQgdGhlIHByZXNlbmNlIG9mIHNlbGYtZW1wbG95bWVudCBpbmNvbWUgbm90IHJlcG9ydGVkIHRocm91Z2ggMTA5OS1ORUMgZm9ybXMgb3IgYSBTY2hlZHVsZSBLLTEuIFRvIGVuc3VyZSB5b3VyIHRheCByZXR1cm4gaXMgYWNjdXJhdGUgYW5kIG1heGltaXplcyB5b3VyIGJlbmVmaXRzLCBpdCdzIGNydWNpYWwgd2UgZ2F0aGVyIG1vcmUgZGV0YWlscyBhYm91dCB0aGVzZSBzb3VyY2VzIG9mIGluY29tZS4gUGxlYXNlIHByb3ZpZGUgdGhlIGZvbGxvd2luZyBpbmZvcm1hdGlvbjo8L3A+XHJcbiAgICA8b2w+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+RGVzY3JpcHRpb24gb2YgZWFjaCBzZWxmLWVtcGxveW1lbnQgYWN0aXZpdHk6PC9zdHJvbmc+IEJyaWVmbHkgZGVzY3JpYmUgdGhlIG5hdHVyZSBvZiBlYWNoIGFjdGl2aXR5IGZyb20gd2hpY2ggeW91IGRlcml2ZSBzZWxmLWVtcGxveW1lbnQgaW5jb21lLjwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+RGF0ZXMgb2Ygb3BlcmF0aW9uOjwvc3Ryb25nPiBGb3IgZWFjaCBzZWxmLWVtcGxveW1lbnQgYWN0aXZpdHksIHNwZWNpZnkgdGhlIGRhdGVzIG9yIHJhbmdlIG9mIGRhdGVzIGR1cmluZyB3aGljaCB5b3UgZWFybmVkIGluY29tZS48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPlRvdGFsIGluY29tZSBnZW5lcmF0ZWQ6PC9zdHJvbmc+IEZvciBlYWNoIGFjdGl2aXR5LCBwcm92aWRlIHRoZSB0b3RhbCBhbW91bnQgb2YgaW5jb21lIGVhcm5lZCBiZWZvcmUgYW55IGV4cGVuc2VzLjwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+RXhwZW5zZXMgaW5jdXJyZWQ6PC9zdHJvbmc+IExpc3QgYWxsIGV4cGVuc2VzIHJlbGF0ZWQgdG8gZWFjaCBzZWxmLWVtcGxveW1lbnQgYWN0aXZpdHkuIFBsZWFzZSBjYXRlZ29yaXplIHRoZXNlIGV4cGVuc2VzIChlLmcuLCBvZmZpY2Ugc3VwcGxpZXMsIHRyYXZlbCwgYWR2ZXJ0aXNpbmcpLjwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+UmVjb3JkcyBvciBkb2N1bWVudGF0aW9uOjwvc3Ryb25nPiBBbnkgZXhpc3RpbmcgcmVjb3JkcyBvciBkb2N1bWVudGF0aW9uIHRoYXQgY29ycm9ib3JhdGUgeW91ciBpbmNvbWUgYW5kIGV4cGVuc2VzLCBzdWNoIGFzIGJhbmsgc3RhdGVtZW50cywgcmVjZWlwdHMsIGludm9pY2VzLCBvciBjb250cmFjdHMuPC9saT5cclxuICAgIDwvb2w+XHJcbiAgICA8cD5UaGlzIGluZm9ybWF0aW9uIGlzIHZpdGFsIGZvciBkZXRlcm1pbmluZyB0aGUgY29ycmVjdCBhbW91bnQgb2YgdGF4IHlvdSBvd2UgYW5kIGlkZW50aWZ5aW5nIGFueSBwb3RlbnRpYWwgZGVkdWN0aW9ucyB0aGF0IGNhbiBtaW5pbWl6ZSB5b3VyIHRheCBsaWFiaWxpdHkuIFBsZWFzZSBwcm92aWRlIHRoZXNlIGRldGFpbHMgYXQgeW91ciBlYXJsaWVzdCBjb252ZW5pZW5jZSB0byBlbnN1cmUgYSBzbW9vdGggYW5kIGVmZmljaWVudCB0YXggcHJlcGFyYXRpb24gcHJvY2Vzcy48L3A+XHJcbiAgICA8cD5JZiB5b3UgaGF2ZSBhbnkgcXVlc3Rpb25zIG9yIG5lZWQgYXNzaXN0YW5jZSBpbiBnYXRoZXJpbmcgdGhpcyBpbmZvcm1hdGlvbiwgcGxlYXNlIGRvIG5vdCBoZXNpdGF0ZSB0byBjb250YWN0IHVzLiBZb3VyIHRpbWVseSBjb29wZXJhdGlvbiBpcyBncmVhdGx5IGFwcHJlY2lhdGVkLCBhbmQgd2UgYXJlIGhlcmUgdG8gaGVscCBldmVyeSBzdGVwIG9mIHRoZSB3YXkuPC9wPmBcclxuICB9LFxyXG4gIHtcclxuICAgIGFjdGlvblRheFN1YmplY3Q6IFwiRW1wbG95bWVudCBXYWdlc1wiLFxyXG4gICAgYWN0aW9uVGl0bGU6IFwiRW1wbG95bWVudCBXYWdlc1wiLFxyXG4gICAgYWN0aW9uSW5zdHJ1Y3Rpb25zOiBgPHA+VGhhbmsgeW91IGZvciBlbnRydXN0aW5nIHVzIHdpdGggdGhlIHByZXBhcmF0aW9uIG9mIHlvdXIgdGF4IHJldHVybnMuIEFzIHBhcnQgb2Ygb3VyIGNvbXByZWhlbnNpdmUgcmV2aWV3IGFuZCBpbiBvdXIgcXVlc3QgdG8gZW5zdXJlIHRoZSBhY2N1cmFjeSBvZiB5b3VyIHRheCBmaWxpbmdzLCB3ZSB1bmRlcnN0YW5kIHRoYXQgeW91IGhhdmUgcmVjZWl2ZWQgd2FnZXMgZnJvbSBlbXBsb3ltZW50IG92ZXIgdGhlIHBhc3QgdGF4IHllYXIuPC9wPlxyXG4gICAgPHA+VG8gcHJvY2VlZCBlZmZlY3RpdmVseSwgd2Uga2luZGx5IHJlcXVlc3QgdGhlIGZvbGxvd2luZyBkb2N1bWVudHMgYW5kIGluZm9ybWF0aW9uOjwvcD5cclxuICAgIDxvbD5cclxuICAgICAgICA8bGk+PHN0cm9uZz5XLTIgRm9ybXM6PC9zdHJvbmc+IFBsZWFzZSBwcm92aWRlIGNvcGllcyBvZiBhbGwgVy0yIGZvcm1zIHJlY2VpdmVkIGZyb20geW91ciBlbXBsb3llcnMuIFRoaXMgaW5jbHVkZXMgd2FnZXMgZWFybmVkIGZyb20gYWxsIHNvdXJjZXMsIG5vdCBqdXN0IGZyb20gdGhlIFMtQ29ycG9yYXRpb24sIGlmIGFwcGxpY2FibGUuPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5WZXJpZmljYXRpb24gb2YgUy1Db3Jwb3JhdGlvbiBXYWdlczo8L3N0cm9uZz4gSWYgd2UgYXJlIGFsc28gaGFuZGxpbmcgeW91ciBidXNpbmVzcyB0YXhlcyBmb3IgYW4gUy1Db3Jwb3JhdGlvbiwgd2UgbGlrZWx5IGhhdmUgdGhlIHdhZ2UgaW5mb3JtYXRpb24gZm9yIHRoYXQgZW50aXR5LiBIb3dldmVyLCBmb3IgdGhvcm91Z2huZXNzIGFuZCBjb21wbGlhbmNlLCBwbGVhc2UgY29uZmlybSBpZiB0aGUgd2FnZXMgZnJvbSB0aGUgUy1Db3Jwb3JhdGlvbiBhcmUgZnVsbHkgcmVwcmVzZW50ZWQgaW4gdGhlIGRvY3VtZW50cyB3ZSBhbHJlYWR5IGhvbGQuIFRoaXMgd2lsbCBoZWxwIHVzIHZlcmlmeSB0aGF0IGFsbCBpbmNvbWUgaXMgYWNjdXJhdGVseSByZXBvcnRlZC48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPkFkZGl0aW9uYWwgSW5jb21lIERvY3VtZW50czo8L3N0cm9uZz4gU2hvdWxkIHlvdSBoYXZlIG90aGVyIHNvdXJjZXMgb2Ygd2FnZSBpbmNvbWUgKGUuZy4sIGNvbnRyYWN0IHdvcmssIGJvbnVzZXMsIGV0Yy4pIG5vdCBjb3ZlcmVkIGJ5IHRoZSBXLTIgZm9ybXMgcHJvdmlkZWQsIHBsZWFzZSBpbmNsdWRlIGFueSAxMDk5IGZvcm1zIG9yIG90aGVyIHJlbGV2YW50IGRvY3VtZW50YXRpb24uPC9saT5cclxuICAgIDwvb2w+XHJcbiAgICA8cD5Zb3VyIGNvb3BlcmF0aW9uIGlzIGNydWNpYWwgZm9yIGVuc3VyaW5nIGEgc21vb3RoIGFuZCBlZmZpY2llbnQgdGF4IHByZXBhcmF0aW9uIHByb2Nlc3MuIEtpbmRseSBwcm92aWRlIHRoZSByZXF1ZXN0ZWQgZG9jdW1lbnRzIGFuZCBpbmZvcm1hdGlvbiBhdCB5b3VyIGVhcmxpZXN0IGNvbnZlbmllbmNlLjwvcD5cclxuICAgIDxwPklmIHlvdSBoYXZlIGFueSBxdWVzdGlvbnMgb3IgbmVlZCBmdXJ0aGVyIGNsYXJpZmljYXRpb24sIHBsZWFzZSBkbyBub3QgaGVzaXRhdGUgdG8gY29udGFjdCB1cyBkaXJlY3RseS4gVGhhbmsgeW91IGZvciB5b3VyIHByb21wdCBhdHRlbnRpb24gdG8gdGhpcyBtYXR0ZXIuPC9wPmBcclxuICB9LFxyXG4gIHtcclxuICAgIGFjdGlvblRheFN1YmplY3Q6IFwiUHJvcGVydHkgb3IgU2VydmljZXMgTGlldSBXYWdlc1wiLFxyXG4gICAgYWN0aW9uVGl0bGU6IFwiUHJvcGVydHkvU2VydmljZXMgaW4gTGlldSBvZiBXYWdlc1wiLFxyXG4gICAgYWN0aW9uSW5zdHJ1Y3Rpb25zOiBgPHA+V2UgYXJlIGN1cnJlbnRseSBpbiB0aGUgcHJvY2VzcyBvZiBwcmVwYXJpbmcgeW91ciB0YXggcmV0dXJuIGFuZCBoYXZlIG5vdGVkIHRoYXQgeW91IHJlY2VpdmVkIHByb3BlcnR5IGFuZC9vciBzZXJ2aWNlcyBpbiBsaWV1IG9mIHRyYWRpdGlvbmFsIHdhZ2VzIGR1cmluZyB0aGUgdGF4IHllYXIuIFRoaXMgdHlwZSBvZiBjb21wZW5zYXRpb24gY29uc3RpdHV0ZXMgdGF4YWJsZSBpbmNvbWUgYW5kIG11c3QgYmUgYWNjdXJhdGVseSByZXBvcnRlZCB0byBlbnN1cmUgeW91ciB0YXggcmV0dXJuIGlzIGZ1bGx5IGNvbXBsaWFudCB3aXRoIElSUyByZWd1bGF0aW9ucy48L3A+XHJcbiAgICA8cD5UbyBhY2N1cmF0ZWx5IHJlY29nbml6ZSBhbmQgcmVwb3J0IHRoZXNlIGl0ZW1zIGFzIHRheGFibGUgaW5jb21lLCB3ZSByZXF1aXJlIHRoZSBmb2xsb3dpbmcgZGV0YWlsZWQgaW5mb3JtYXRpb246PC9wPlxyXG4gICAgPG9sPlxyXG4gICAgPGxpPjxzdHJvbmc+RGVzY3JpcHRpb24gb2YgUHJvcGVydHkgb3IgU2VydmljZXM6PC9zdHJvbmc+IFByb3ZpZGUgYSBkZXRhaWxlZCBkZXNjcmlwdGlvbiBvZiBhbnkgcHJvcGVydHkgb3Igc2VydmljZXMgeW91IHJlY2VpdmVkLiBQbGVhc2UgaW5jbHVkZSBwaHlzaWNhbCBjaGFyYWN0ZXJpc3RpY3MgZm9yIHByb3BlcnR5IG9yIHRoZSBzY29wZSBvZiBzZXJ2aWNlcyByZW5kZXJlZC48L2xpPlxyXG4gICAgPGxpPjxzdHJvbmc+RmFpciBNYXJrZXQgVmFsdWUgYXQgVGltZSBvZiBSZWNlaXB0Ojwvc3Ryb25nPiBJbmRpY2F0ZSB0aGUgZmFpciBtYXJrZXQgdmFsdWUgKEZNVikgb2YgZWFjaCBwcm9wZXJ0eSBvciBzZXJ2aWNlIGF0IHRoZSB0aW1lIHlvdSByZWNlaXZlZCBpdC4gSWYgeW91IGhhdmUgYW55IGFwcHJhaXNhbHMgb3IgZG9jdW1lbnRzIHRvIHN1cHBvcnQgdGhlIEZNViwgcGxlYXNlIGluY2x1ZGUgdGhlbS48L2xpPlxyXG4gICAgPGxpPjxzdHJvbmc+RG9jdW1lbnRhdGlvbiBvciBBZ3JlZW1lbnRzOjwvc3Ryb25nPiBQcm92aWRlIGFueSBkb2N1bWVudGF0aW9uIG9yIHdyaXR0ZW4gYWdyZWVtZW50cyB0aGF0IGRldGFpbCB0aGUgYXJyYW5nZW1lbnQgZm9yIHJlY2VpdmluZyBwcm9wZXJ0eSBvciBzZXJ2aWNlcyBpbiBsaWV1IG9mIHdhZ2VzLiBUaGlzIGNhbiBpbmNsdWRlIGNvbnRyYWN0cywgZW1haWxzLCBvciBhbnkgZm9ybSBvZiBjb21tdW5pY2F0aW9uIHRoYXQgb3V0bGluZXMgdGhlIGFncmVlbWVudC48L2xpPlxyXG4gICAgPGxpPjxzdHJvbmc+RGF0ZSBvZiBSZWNlaXB0Ojwvc3Ryb25nPiBTcGVjaWZ5IHRoZSBkYXRlKHMpIG9uIHdoaWNoIHlvdSByZWNlaXZlZCB0aGUgcHJvcGVydHkgb3Igc2VydmljZXMuPC9saT5cclxuICAgIDxsaT48c3Ryb25nPkVtcGxveWVyL1Byb3ZpZGVyIEluZm9ybWF0aW9uOjwvc3Ryb25nPiBQcm92aWRlIHRoZSBuYW1lIGFuZCBjb250YWN0IGluZm9ybWF0aW9uIG9mIHRoZSBpbmRpdmlkdWFsIG9yIGVudGl0eSB0aGF0IHByb3ZpZGVkIHRoZSBwcm9wZXJ0eSBvciBzZXJ2aWNlcy48L2xpPlxyXG4gICAgPC9vbD5cclxuICAgIDxwPlBsZWFzZSBlbnN1cmUgdGhhdCBhbGwgcHJvdmlkZWQgaW5mb3JtYXRpb24gaXMgYXMgYWNjdXJhdGUgYW5kIGNvbXBsZXRlIGFzIHBvc3NpYmxlLiBJbmNvbXBsZXRlIG9yIGluYWNjdXJhdGUgaW5mb3JtYXRpb24gbWF5IGxlYWQgdG8gZGVsYXlzIGluIHRoZSBwcmVwYXJhdGlvbiBvZiB5b3VyIHRheCByZXR1cm4gb3IgcG90ZW50aWFsIGlzc3VlcyB3aXRoIHRoZSBJUlMuPC9wPlxyXG4gICAgPHA+SWYgeW91IGhhdmUgYW55IHF1ZXN0aW9ucyBvciBuZWVkIGNsYXJpZmljYXRpb24gcmVnYXJkaW5nIHRoZSBpbmZvcm1hdGlvbiByZXF1ZXN0ZWQsIHBsZWFzZSBkbyBub3QgaGVzaXRhdGUgdG8gY29udGFjdCB1cyBkaXJlY3RseS4gWW91ciBwcm9tcHQgYXR0ZW50aW9uIHRvIHRoaXMgcmVxdWVzdCBpcyBncmVhdGx5IGFwcHJlY2lhdGVkIGFuZCBjcml0aWNhbCBmb3IgdGhlIHRpbWVseSBhbmQgYWNjdXJhdGUgY29tcGxldGlvbiBvZiB5b3VyIHRheCByZXR1cm4uPC9wPmBcclxuICB9LFxyXG4gIHtcclxuICAgIGFjdGlvblRheFN1YmplY3Q6IFwiRW1wbG95ZWUgQWNjb3VudGFibGUgUGxhblwiLFxyXG4gICAgYWN0aW9uVGl0bGU6IFwiRW1wbG95ZWUgQWNjb3VudGFibGUgUGxhblwiLFxyXG4gICAgYWN0aW9uSW5zdHJ1Y3Rpb25zOiBgPHA+V2UgYXJlIGluIHRoZSBwcm9jZXNzIG9mIHByZXBhcmluZyB5b3VyIHRheCByZXR1cm4gYW5kIG5vdGljZWQgeW91J3ZlIG1lbnRpb25lZCBiZWluZyByZWltYnVyc2VkIGZvciBjZXJ0YWluIGV4cGVuc2VzIHVuZGVyIGFuIEVtcGxveWVlIEFjY291bnRhYmxlIFBsYW4uIFRvIGFjY3VyYXRlbHkgYWNjb3VudCBmb3IgdGhlc2UgcmVpbWJ1cnNlbWVudHMgYW5kIGVuc3VyZSBjb21wbGlhbmNlIHdpdGggSVJTIHJ1bGVzLCB3ZSBraW5kbHkgcmVxdWVzdCB0aGUgZm9sbG93aW5nIGRvY3VtZW50cyBhbmQgaW5mb3JtYXRpb246PC9wPlxyXG4gICAgPG9sPlxyXG4gICAgICAgIDxsaT5BIGNvcHkgb2YgdGhlIGZvcm1hbCB3cml0dGVuIEFjY291bnRhYmxlIFBsYW4gcHJvdmlkZWQgYnkgeW91ciBlbXBsb3llci4gVGhpcyBzaG91bGQgb3V0bGluZSB0aGUgZXhwZW5zZSBhbGxvd2FuY2UgYW5kIHRoZSBzcGVjaWZpY3Mgb2YgdGhlIHJlaW1idXJzZW1lbnQgcG9saWN5LjwvbGk+XHJcbiAgICAgICAgPGxpPkFueSBkb2N1bWVudGF0aW9uIG9yIGNvcnJlc3BvbmRlbmNlIGZyb20geW91ciBlbXBsb3llciBjb25maXJtaW5nIHlvdXIgcGFydGljaXBhdGlvbiBpbiB0aGUgQWNjb3VudGFibGUgUGxhbi48L2xpPlxyXG4gICAgICAgIDxsaT5EZXRhaWxzIG9mIHRoZSBleHBlbnNlcyByZWltYnVyc2VkIHVuZGVyIHRoZSBwbGFuLCBpbmNsdWRpbmcgZGF0ZXMsIGFtb3VudHMsIGFuZCB0aGUgbmF0dXJlIG9mIHRoZSBleHBlbnNlcy48L2xpPlxyXG4gICAgICAgIDxsaT5Qcm9vZiBvZiBleHBlbnNlIChyZWNlaXB0cyBvciBpbnZvaWNlcykgcHJvdmlkZWQgdG8geW91ciBlbXBsb3llciBmb3IgcmVpbWJ1cnNlbWVudCB1bmRlciB0aGUgcGxhbi48L2xpPlxyXG4gICAgICAgIDxsaT5BbnkgYWRkaXRpb25hbCBkb2N1bWVudGF0aW9uIG9yIGluZm9ybWF0aW9uIHJlbGV2YW50IHRvIHRoZSByZWltYnVyc2VtZW50cyBvciB0aGUgQWNjb3VudGFibGUgUGxhbi48L2xpPlxyXG4gICAgPC9vbD5cclxuICAgIDxwPlBsZWFzZSBzZW5kIHVzIHRoaXMgaW5mb3JtYXRpb24gYXQgeW91ciBlYXJsaWVzdCBjb252ZW5pZW5jZSB0byBlbnN1cmUgd2UgY2FuIHByb2NlZWQgc21vb3RobHkgd2l0aCB5b3VyIHRheCByZXR1cm4gcHJlcGFyYXRpb24uIElmIHlvdSBoYXZlIGFueSBxdWVzdGlvbnMgb3IgbmVlZCBmdXJ0aGVyIGNsYXJpZmljYXRpb24sIGRvIG5vdCBoZXNpdGF0ZSB0byByZWFjaCBvdXQuPC9wPlxyXG4gICAgPHA+VGhhbmsgeW91IGZvciB5b3VyIHByb21wdCBhdHRlbnRpb24gdG8gdGhpcyBtYXR0ZXIuPC9wPmBcclxuICB9LFxyXG4gIHtcclxuICAgIGFjdGlvblRheFN1YmplY3Q6IFwiVGF4YWJsZSBGcmluZ2UgQmVuZWZpdHNcIixcclxuICAgIGFjdGlvblRpdGxlOiBcIlRheGFibGUgRnJpbmdlIEJlbmVmaXRzXCIsXHJcbiAgICBhY3Rpb25JbnN0cnVjdGlvbnM6IGBcclxuICAgIDxwPldlIGFyZSBpbiB0aGUgcHJvY2VzcyBvZiBlbnN1cmluZyBhbGwgZm9ybXMgb2YgY29tcGVuc2F0aW9uLCBpbmNsdWRpbmcgdGF4YWJsZSBmcmluZ2UgYmVuZWZpdHMsIGFyZSBhY2N1cmF0ZWx5IHJlcG9ydGVkIG9uIHlvdXIgdGF4IHJldHVybnMuIEJhc2VkIG9uIG91ciBwcmV2aW91cyBjb21tdW5pY2F0aW9uLCBpdCBhcHBlYXJzIHlvdSBtYXkgaGF2ZSByZWNlaXZlZCBiZW5lZml0cyB0aGF0IG5lZWQgdG8gYmUgcmV2aWV3ZWQgZnVydGhlci4gVG8gYXNzaXN0IHlvdSBwcm9wZXJseSwgd2UgcmVxdWVzdCB0aGUgZm9sbG93aW5nIHNwZWNpZmljIGRldGFpbHM6PC9wPlxyXG48b2w+XHJcbiAgPGxpPjxzdHJvbmc+RGVzY3JpcHRpb24gb2YgZWFjaCBiZW5lZml0IHJlY2VpdmVkOjwvc3Ryb25nPiBQbGVhc2UgcHJvdmlkZSBhIGJyaWVmIGRlc2NyaXB0aW9uIG9mIHRoZSBmcmluZ2UgYmVuZWZpdHMgcmVjZWl2ZWQgZHVyaW5nIHRoZSB0YXggeWVhciwgaW5jbHVkaW5nIGJ1dCBub3QgbGltaXRlZCB0byBjb21wYW55IGNhcnMsIG1lbWJlcnNoaXBzLCBlZHVjYXRpb25hbCBhc3Npc3RhbmNlLCBldGMuPC9saT5cclxuICA8bGk+PHN0cm9uZz5WYWx1ZSBvZiBlYWNoIGJlbmVmaXQ6PC9zdHJvbmc+IFRoZSBmYWlyIG1hcmtldCB2YWx1ZSAoRk1WKSBvZiBlYWNoIGJlbmVmaXQuIElmIHlvdSdyZSB1bnN1cmUsIHBsZWFzZSBwcm92aWRlIGFuIGVzdGltYXRlIGFuZCB0aGUgYmFzaXMgZm9yIHRoaXMgZXN0aW1hdGUuPC9saT5cclxuICA8bGk+PHN0cm9uZz5BbnkgYW1vdW50cyBjb250cmlidXRlZCBieSB5b3U6PC9zdHJvbmc+IElmIHlvdSBtYWRlIGNvbnRyaWJ1dGlvbnMgdG93YXJkIHRoZSBjb3N0IG9mIGFueSBiZW5lZml0LCBwbGVhc2Ugc3BlY2lmeSB0aGUgYW1vdW50cyBhbmQgZm9yIHdoaWNoIGJlbmVmaXRzLjwvbGk+XHJcbiAgPGxpPjxzdHJvbmc+QmVuZWZpdCBkb2N1bWVudGF0aW9uOjwvc3Ryb25nPiBBbnkgYXZhaWxhYmxlIGRvY3VtZW50YXRpb24gdGhhdCBjYW4gc3VwcG9ydCB0aGUgaW5mb3JtYXRpb24gcHJvdmlkZWQsIHN1Y2ggYXMgc3RhdGVtZW50cywgYWdyZWVtZW50cywgb3IgcmVjZWlwdHMuPC9saT5cclxuICA8bGk+PHN0cm9uZz5EYXRlczo8L3N0cm9uZz4gVGhlIHBlcmlvZCBkdXJpbmcgd2hpY2ggeW91IHJlY2VpdmVkIHRoZXNlIGJlbmVmaXRzLiBJbmNsdWRlIHNwZWNpZmljIGRhdGVzIGlmIHBvc3NpYmxlLjwvbGk+XHJcbiAgPGxpPjxzdHJvbmc+RW1wbG95ZXIgSW5mb3JtYXRpb246PC9zdHJvbmc+IFRoZSBuYW1lIGFuZCBjb250YWN0IGluZm9ybWF0aW9uIG9mIHRoZSBlbXBsb3llcihzKSBwcm92aWRpbmcgdGhlc2UgYmVuZWZpdHMuPC9saT5cclxuPC9vbD5cclxuPHA+VGhpcyBpbmZvcm1hdGlvbiBpcyBjcnVjaWFsIGZvciBhY2N1cmF0ZWx5IGRldGVybWluaW5nIHRoZSB0YXhhYmxlIHZhbHVlIG9mIHRoZXNlIGZyaW5nZSBiZW5lZml0cyBhbmQgZW5zdXJpbmcgY29tcGxpYW5jZSB3aXRoIElSUyByZWd1bGF0aW9ucy4gSWYgeW91IGhhdmUgYW55IHF1ZXN0aW9ucyBvciBuZWVkIGFzc2lzdGFuY2UgaW4gZ2F0aGVyaW5nIHRoaXMgaW5mb3JtYXRpb24sIHBsZWFzZSBkb24ndCBoZXNpdGF0ZSB0byBjb250YWN0IHVzLjwvcD5cclxuPHA+V2UgYXBwcmVjaWF0ZSB5b3VyIHByb21wdCBhdHRlbnRpb24gdG8gdGhpcyBtYXR0ZXIgYW5kIGxvb2sgZm9yd2FyZCB0byBhc3Npc3RpbmcgeW91IGZ1cnRoZXIuPC9wPmBcclxuICB9LFxyXG4gIHtcclxuICAgIGFjdGlvblRheFN1YmplY3Q6IFwiTm9uIFRheGFibGUgRnJpbmdlIEJlbmVmaXRzXCIsXHJcbiAgICBhY3Rpb25UaXRsZTogXCJOb24gVGF4YWJsZSBGcmluZ2UgQmVuZWZpdHNcIixcclxuICAgIGFjdGlvbkluc3RydWN0aW9uczogYDxwPldlIGFyZSBpbiB0aGUgcHJvY2VzcyBvZiBmaW5hbGl6aW5nIHlvdXIgdGF4IHJldHVybiBhbmQgaGF2ZSBpZGVudGlmaWVkIHBvdGVudGlhbCBub24tdGF4YWJsZSBmcmluZ2UgYmVuZWZpdHMgdGhhdCBtYXkgYXBwbHkgdG8geW91ciBzaXR1YXRpb24uIFRvIGVuc3VyZSBhY2N1cmF0ZSByZXBvcnRpbmcgYW5kIG9wdGltaXplIHlvdXIgdGF4IG91dGNvbWUsIHdlIGtpbmRseSByZXF1ZXN0IHRoZSBmb2xsb3dpbmcgZGV0YWlsZWQgaW5mb3JtYXRpb24gcmVnYXJkaW5nIGFueSBub24tdGF4YWJsZSBmcmluZ2UgYmVuZWZpdHMgeW91IG1heSBoYXZlIHJlY2VpdmVkOjwvcD5cclxuICAgIDxvbD5cclxuICAgICAgPGxpPjxzdHJvbmc+RGVzY3JpcHRpb24gb2YgZWFjaCBiZW5lZml0Ojwvc3Ryb25nPiBQbGVhc2UgcHJvdmlkZSBhIGRldGFpbGVkIGRlc2NyaXB0aW9uIG9mIHRoZSBub24tdGF4YWJsZSBmcmluZ2UgYmVuZWZpdHMgcmVjZWl2ZWQgZHVyaW5nIHRoZSB0YXggeWVhci4gVGhpcyBtYXkgaW5jbHVkZSBoZWFsdGggc2F2aW5ncyBhY2NvdW50cyAoSFNBcyksIGVtcGxveWVlIGRpc2NvdW50cywgcHVibGljIHRyYW5zaXQgcGFzc2VzLCBldGMuPC9saT5cclxuICAgICAgPGxpPjxzdHJvbmc+VmFsdWUgb2YgZWFjaCBiZW5lZml0Ojwvc3Ryb25nPiBUaGUgZmFpciBtYXJrZXQgdmFsdWUgKEZNVikgb2YgZWFjaCBiZW5lZml0LiBGb3Igbm9uLXRheGFibGUgYmVuZWZpdHMsIHRoaXMgaGVscHMgaW4gcmVjb3JkLWtlZXBpbmcgYW5kIGNvbmZpcm1pbmcgZXhlbXB0aW9uIHN0YXR1cy48L2xpPlxyXG4gICAgICA8bGk+PHN0cm9uZz5Db250cmlidXRpb24gYW1vdW50cywgaWYgYW55Ojwvc3Ryb25nPiBJZiB5b3UgaGF2ZSBjb250cmlidXRlZCB0b3dhcmRzIGFueSBvZiB0aGVzZSBiZW5lZml0cywgaW5kaWNhdGUgdGhlIGFtb3VudHMgYW5kIGZvciB3aGljaCBiZW5lZml0cy48L2xpPlxyXG4gICAgICA8bGk+PHN0cm9uZz5CZW5lZml0IGRvY3VtZW50YXRpb246PC9zdHJvbmc+IEFueSBkb2N1bWVudGF0aW9uIHRoYXQgY2FuIGNvcnJvYm9yYXRlIHRoZSBpbmZvcm1hdGlvbiBwcm92aWRlZCwgc3VjaCBhcyBzdGF0ZW1lbnRzLCBhZ3JlZW1lbnRzLCBvciByZWNlaXB0cy48L2xpPlxyXG4gICAgICA8bGk+PHN0cm9uZz5EYXRlcyBvZiByZWNlaXB0Ojwvc3Ryb25nPiBUaGUgdGltZWZyYW1lIGR1cmluZyB3aGljaCB5b3UgcmVjZWl2ZWQgdGhlc2UgYmVuZWZpdHMuIEluY2x1ZGUgYXMgcHJlY2lzZSBkYXRlcyBhcyBwb3NzaWJsZS48L2xpPlxyXG4gICAgICA8bGk+PHN0cm9uZz5FbXBsb3llciBvciBwcm92aWRlciBpbmZvcm1hdGlvbjo8L3N0cm9uZz4gVGhlIG5hbWUgYW5kIGNvbnRhY3QgZGV0YWlscyBvZiB0aGUgZW1wbG95ZXIocykgb3IgdGhpcmQtcGFydHkgcHJvdmlkZXIocykgb2ZmZXJpbmcgdGhlc2UgYmVuZWZpdHMuPC9saT5cclxuICAgIDwvb2w+XHJcbiAgICA8cD5HYXRoZXJpbmcgdGhpcyBpbmZvcm1hdGlvbiBoZWxwcyBlbnN1cmUgdGhhdCB5b3VyIHRheCBmaWxpbmdzIGFyZSBhY2N1cmF0ZSBhbmQgdGhhdCB5b3UgcmVjZWl2ZSB0aGUgZnVsbCBhZHZhbnRhZ2Ugb2Ygbm9uLXRheGFibGUgZnJpbmdlIGJlbmVmaXRzLiBQbGVhc2UgbGV0IHVzIGtub3cgaWYgeW91IG5lZWQgYW55IGhlbHAgaWRlbnRpZnlpbmcgb3IgZG9jdW1lbnRpbmcgdGhlc2UgYmVuZWZpdHMuPC9wPlxyXG4gICAgPHA+WW91ciBwcm9tcHQgcmVzcG9uc2UgaXMgaGlnaGx5IGFwcHJlY2lhdGVkIGFzIHdlIHN0cml2ZSB0byBjb21wbGV0ZSB5b3VyIHRheCBwcmVwYXJhdGlvbiBlZmZpY2llbnRseS4gU2hvdWxkIHlvdSBoYXZlIGFueSBxdWVzdGlvbnMsIGZlZWwgZnJlZSB0byBjb250YWN0IHVzIGRpcmVjdGx5LjwvcD5gXHJcbiAgfSxcclxuICB7XHJcbiAgICBhY3Rpb25UYXhTdWJqZWN0OiBcIlZldGVyYW4gQmVuZWZpdHNcIixcclxuICAgIGFjdGlvblRpdGxlOiBcIlZBIEJlbmVmaXRzXCIsXHJcbiAgICBhY3Rpb25JbnN0cnVjdGlvbnM6IGA8cD5XZSBob3BlIHRoaXMgbWVzc2FnZSBmaW5kcyB5b3Ugd2VsbC4gQXMgcGFydCBvZiBvdXIgb25nb2luZyBlZmZvcnQgdG8gZW5zdXJlIHRoZSBhY2N1cmFjeSBhbmQgY29tcGxldGVuZXNzIG9mIHlvdXIgdGF4IHJldHVybiwgd2UgdW5kZXJzdGFuZCB0aGF0IHlvdSBoYXZlIHJlY2VpdmVkIFZldGVyYW4gQmVuZWZpdHMgZHVyaW5nIHRoZSB0YXggeWVhci4gVG8gYWNjdXJhdGVseSBhc3Nlc3MgdGhlIHRheCBpbXBsaWNhdGlvbnMgb2YgdGhlc2UgYmVuZWZpdHMsIHdlIGtpbmRseSByZXF1ZXN0IGFkZGl0aW9uYWwgaW5mb3JtYXRpb24uPC9wPlxyXG4gICAgPHA+VG8gYXNzaXN0IHVzIGluIHRoaXMgdGFzaywgcGxlYXNlIHByb3ZpZGUgdGhlIGZvbGxvd2luZyBpbmZvcm1hdGlvbjo8L3A+XHJcbiAgICA8b2w+XHJcbiAgICAgICAgPGxpPkEgZGV0YWlsZWQgbGlzdCBvZiB0aGUgVmV0ZXJhbiBCZW5lZml0cyB5b3UgcmVjZWl2ZWQsIGluY2x1ZGluZyBhbnkgZGlzYWJpbGl0eSwgZWR1Y2F0aW9uLCBhbmQgcGVuc2lvbiBiZW5lZml0cy48L2xpPlxyXG4gICAgICAgIDxsaT5PZmZpY2lhbCBkb2N1bWVudGF0aW9uIGZvciBlYWNoIHR5cGUgb2YgYmVuZWZpdCByZWNlaXZlZCwgc3VjaCBhcyBhd2FyZCBsZXR0ZXJzIG9yIHN0YXRlbWVudHMgZnJvbSB0aGUgRGVwYXJ0bWVudCBvZiBWZXRlcmFucyBBZmZhaXJzIChWQSkuPC9saT5cclxuICAgICAgICA8bGk+QW55IGNvcnJlc3BvbmRlbmNlIGZyb20gdGhlIFZBIG9yIG90aGVyIHJlbGV2YW50IGVudGl0aWVzIHJlZ2FyZGluZyB0aGUgdGF4YWJpbGl0eSBvZiB5b3VyIGJlbmVmaXRzLjwvbGk+XHJcbiAgICAgICAgPGxpPlRvdGFsIGFtb3VudCByZWNlaXZlZCBmb3IgZWFjaCBiZW5lZml0IHRocm91Z2hvdXQgdGhlIHRheCB5ZWFyLjwvbGk+XHJcbiAgICAgICAgPGxpPkFueSBvdGhlciBzdXBwb3J0aW5nIGRvY3VtZW50YXRpb24gdGhhdCBjYW4gcHJvdmlkZSBjbGFyaXR5IG9uIHRoZSBuYXR1cmUgYW5kIGFtb3VudCBvZiB5b3VyIFZldGVyYW4gQmVuZWZpdHMuPC9saT5cclxuICAgIDwvb2w+XHJcbiAgICA8cD5UaGlzIGluZm9ybWF0aW9uIGlzIGNydWNpYWwgZm9yIGRldGVybWluaW5nIHdoaWNoIGJlbmVmaXRzIGFyZSB0YXhhYmxlIGFuZCBlbnN1cmluZyB5b3VyIHRheCByZXR1cm4gaXMgY29tcGxldGUgYW5kIGFjY3VyYXRlLiBQbGVhc2Ugc3VibWl0IHRoZXNlIGRvY3VtZW50cyBhdCB5b3VyIGVhcmxpZXN0IGNvbnZlbmllbmNlLjwvcD5cclxuICAgIDxwPklmIHlvdSBoYXZlIGFueSBxdWVzdGlvbnMgb3IgcmVxdWlyZSBhc3Npc3RhbmNlIGluIGdhdGhlcmluZyB0aGVzZSBkb2N1bWVudHMsIHBsZWFzZSBkbyBub3QgaGVzaXRhdGUgdG8gY29udGFjdCB1cy4gVGhhbmsgeW91IGZvciB5b3VyIGNvb3BlcmF0aW9uIGFuZCB0cnVzdCBpbiBvdXIgc2VydmljZXMuPC9wPmBcclxuICB9LFxyXG4gIHtcclxuICAgIGFjdGlvblRheFN1YmplY3Q6IFwiTGlmZSBJbnN1cmFuY2UgUGF5bWVudHNcIixcclxuICAgIGFjdGlvblRpdGxlOiBcIkxpZmUgSW5zdXJhbmNlIFBheW1lbnRzXCIsXHJcbiAgICBhY3Rpb25JbnN0cnVjdGlvbnM6IGA8cD5XZSBoYXZlIG5vdGVkIHlvdXIgbWVudGlvbiBvZiByZWNlaXZpbmcgbGlmZSBpbnN1cmFuY2UgcGF5bWVudHMgZHVyaW5nIHRoZSB0YXggeWVhci4gVG8gYWNjdXJhdGVseSBhc3Nlc3MgdGhlIHRheCBpbXBsaWNhdGlvbnMgYW5kIGVuc3VyZSB0aGVzZSBwcm9jZWVkcyBhcmUgaW5kZWVkIG5vbi10YXhhYmxlLCB3ZSByZXF1aXJlIHRoZSBmb2xsb3dpbmcgZGV0YWlsczo8L3A+XHJcbiAgICA8b2w+XHJcbiAgICAgIDxsaT5UaGUgdG90YWwgYW1vdW50IHJlY2VpdmVkIGZyb20gbGlmZSBpbnN1cmFuY2UgcGF5bWVudHMuPC9saT5cclxuICAgICAgPGxpPkRvY3VtZW50YXRpb24gb3Igc3RhdGVtZW50cyBwZXJ0YWluaW5nIHRvIHRoZSBsaWZlIGluc3VyYW5jZSBwYXltZW50cy48L2xpPlxyXG4gICAgICA8bGk+VGhlIG5hbWUgb2YgdGhlIGluc3VyZWQgaW5kaXZpZHVhbCBhbmQgdGhlaXIgcmVsYXRpb25zaGlwIHRvIHlvdS48L2xpPlxyXG4gICAgICA8bGk+QW55IGNvbW11bmljYXRpb25zIG9yIGxldHRlcnMgZnJvbSB0aGUgaW5zdXJhbmNlIGNvbXBhbnkgcmVnYXJkaW5nIHRoZSB0YXggc3RhdHVzIG9mIHRoZXNlIHBheW1lbnRzLjwvbGk+XHJcbiAgICAgIDxsaT5EZXRhaWxzIHJlZ2FyZGluZyBpZiB0aGUgcG9saWN5IHdhcyBwdXJjaGFzZWQgd2l0aCBhZnRlci10YXggb3IgcHJlLXRheCBkb2xsYXJzLjwvbGk+XHJcbiAgICAgIDxsaT5JZiBhbnkgcG9ydGlvbiBvZiB0aGUgbGlmZSBpbnN1cmFuY2UgcGF5bWVudCB3YXMgYW4gaW52ZXN0bWVudCByZXR1cm4sIHBsZWFzZSBwcm92aWRlIHJlbGF0ZWQgZG9jdW1lbnRzLjwvbGk+XHJcbiAgICA8L29sPlxyXG4gICAgPHA+VGhpcyBpbmZvcm1hdGlvbiBpcyBjcnVjaWFsIGZvciB1cyB0byBndWFyYW50ZWUgdGhlIGFjY3VyYWN5IGFuZCBpbnRlZ3JpdHkgb2YgeW91ciB0YXggcmV0dXJuLiBQbGVhc2UgcHJvdmlkZSB0aGUgcmVxdWVzdGVkIGRvY3VtZW50cyBhbmQgaW5mb3JtYXRpb24gYXQgeW91ciBlYXJsaWVzdCBjb252ZW5pZW5jZS48L3A+XHJcbiAgICA8cD5TaG91bGQgeW91IGhhdmUgYW55IHF1ZXN0aW9ucyBvciBuZWVkIGZ1cnRoZXIgYXNzaXN0YW5jZSwgZmVlbCBmcmVlIHRvIGNvbnRhY3QgdXMuIFdlJ3JlIGhlcmUgdG8gaGVscCE8L3A+YFxyXG4gIH0sXHJcbiAge1xyXG4gICAgYWN0aW9uVGF4U3ViamVjdDogXCJNZWRpY2FyZSBXYWl2ZXIgUGF5bWVudHNcIixcclxuICAgIGFjdGlvblRpdGxlOiBcIk1lZGljYXJlIFdhaXZlciBQYXltZW50c1wiLFxyXG4gICAgYWN0aW9uSW5zdHJ1Y3Rpb25zOiBgPHA+V2UgaG9wZSB0aGlzIG1lc3NhZ2UgZmluZHMgeW91IHdlbGwuIEFzIHdlIHByb2NlZWQgd2l0aCBwcmVwYXJpbmcgeW91ciB0YXggcmV0dXJucywgd2Ugbm90ZWQgdGhhdCB5b3UgaGF2ZSByZWNlaXZlZCBNZWRpY2FyZSBXYWl2ZXIgUGF5bWVudHMgdW5kZXIgdGhlIGRpZmZpY3VsdHktb2YtY2FyZSBwcm92aXNpb25zIGR1cmluZyB0aGUgdGF4IHllYXIuIFRvIGVuc3VyZSB3ZSBtYXhpbWl6ZSB5b3VyIGVsaWdpYmxlIGluY29tZSBleGNsdXNpb25zLCBpdCdzIGNydWNpYWwgd2UgdmVyaWZ5IGNlcnRhaW4gaW5mb3JtYXRpb24gcmVnYXJkaW5nIHlvdXIgbGl2aW5nIGFycmFuZ2VtZW50LCBhcyBwZXIgSVJTIGd1aWRlbGluZXMuPC9wPlxyXG4gICAgPHA+VG8gYXNzaXN0IHVzIGluIGNvbmZpcm1pbmcgdGhhdCB0aGVzZSBwYXltZW50cyBxdWFsaWZ5IGZvciBpbmNvbWUgZXhjbHVzaW9uLCBwbGVhc2UgcHJvdmlkZSB0aGUgZm9sbG93aW5nIGluZm9ybWF0aW9uOjwvcD5cclxuICAgIDxvbD5cclxuICAgICAgICA8bGk+PHN0cm9uZz5Qcm9vZiBvZiBSZXNpZGVuY2U6PC9zdHJvbmc+IERvY3VtZW50cyBwcm92aW5nIHRoYXQgeW91IGFuZCB0aGUgaW5kaXZpZHVhbCB1bmRlciBjYXJlIHNoYXJlZCB0aGUgc2FtZSBwcmltYXJ5IHJlc2lkZW5jZSBkdXJpbmcgdGhlIHJlY2VpcHQgb2YgdGhlc2UgcGF5bWVudHMuIFRoaXMgY291bGQgaW5jbHVkZSB1dGlsaXR5IGJpbGxzLCBhIHJlbnRhbCBhZ3JlZW1lbnQsIG9yIGhvbWVvd25lcidzIGluc3VyYW5jZSBpbiBib3RoIG9mIHlvdXIgbmFtZXMuPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5EZXRhaWxzIG9mIHRoZSBDYXJlIFJlY2lwaWVudDo8L3N0cm9uZz4gSW5mb3JtYXRpb24gYWJvdXQgdGhlIHBlcnNvbiByZWNlaXZpbmcgY2FyZSwgaW5jbHVkaW5nIHRoZWlyIHJlbGF0aW9uc2hpcCB0byB5b3UgYW5kIGFueSBkb2N1bWVudGF0aW9uIHRoYXQgaWRlbnRpZmllcyB0aGVpciBuZWVkIGZvciBjYXJlIChlLmcuLCBhIGxldHRlciBmcm9tIGEgaGVhbHRoY2FyZSBwcm92aWRlcikuPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5QYXltZW50IFJlY29yZHM6PC9zdHJvbmc+IEFueSByZWNvcmRzIG9mIHRoZSBNZWRpY2FyZSBXYWl2ZXIgUGF5bWVudHMgeW91IHJlY2VpdmVkLCBhcyB0aGlzIHdpbGwgaGVscCB1cyBkZXRlcm1pbmUgdGhlIGV4YWN0IGFtb3VudHMgYW5kIHRoZSBwZXJpb2RzIGNvdmVyZWQuPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5BbnkgRm9ybWFsIEFncmVlbWVudHMgb3IgQ29udHJhY3RzOjwvc3Ryb25nPiBJZiB0aGVyZSB3YXMgYSBmb3JtYWwgYWdyZWVtZW50IG9yIGNvbnRyYWN0IGRldGFpbGluZyB0aGUgY2FyZSBwcm92aWRlZCwgcGxlYXNlIGluY2x1ZGUgdGhpcyBhcyB3ZWxsLiBUaGlzIGlzIGVzcGVjaWFsbHkgaW1wb3J0YW50IGlmIHRoZSBjYXJlIGFycmFuZ2VtZW50IHdhcyBmYWNpbGl0YXRlZCB0aHJvdWdoIGEgc3RhdGUgb3IgdGhpcmQtcGFydHkgYWdlbmN5LjwvbGk+XHJcbiAgICA8L29sPlxyXG4gICAgPHA+VGhpcyBpbmZvcm1hdGlvbiBpcyB2aXRhbCB0byBlbnN1cmUgd2UgY29tcGx5IHdpdGggdGF4aW5nIGF1dGhvcml0aWVzIHdoaWxlIGFjY3VyYXRlbHkgcmVmbGVjdGluZyB5b3VyIGZpbmFuY2VzLiBJZiBhbnkgb2YgdGhlc2UgcmVxdWlyZW1lbnRzIHBvc2UgYSBkaWZmaWN1bHR5IG9yIGlmIHlvdSBoYXZlIHF1ZXN0aW9ucywgcGxlYXNlIGRvbid0IGhlc2l0YXRlIHRvIGNvbnRhY3QgdXMgZGlyZWN0bHkuIE91ciBnb2FsIGlzIHRvIHN1cHBvcnQgeW91IHRocm91Z2ggdGhpcyBwcm9jZXNzIGFuZCBvcHRpbWl6ZSB5b3VyIHRheCBiZW5lZml0cy48L3A+XHJcbiAgICA8cD5UaGFuayB5b3UgZm9yIHlvdXIgcHJvbXB0IGF0dGVudGlvbiB0byB0aGlzIG1hdHRlci4gV2UgbG9vayBmb3J3YXJkIHRvIGFzc2lzdGluZyB5b3UgZnVydGhlci48L3A+YFxyXG4gIH0sXHJcbiAge1xyXG4gICAgYWN0aW9uVGF4U3ViamVjdDogXCJEaXNhYmlsaXR5IEluc3VyYW5jZSBCZW5lZml0c1wiLFxyXG4gICAgYWN0aW9uVGl0bGU6IFwiRGlzYWJpbGl0eSBJbnN1cmFuY2UgQmVuZWZpdHNcIixcclxuICAgIGFjdGlvbkluc3RydWN0aW9uczogYDxwPldlIGFyZSBpbiB0aGUgcHJvY2VzcyBvZiBwcmVwYXJpbmcgeW91ciB0YXggcmV0dXJuIGFuZCBub3RlZCB0aGF0IHlvdSByZWNlaXZlZCBkaXNhYmlsaXR5IGluc3VyYW5jZSBiZW5lZml0cyBkdXJpbmcgdGhlIHRheCB5ZWFyLiBUbyBhY2N1cmF0ZWx5IGRldGVybWluZSBpZiB0aGVzZSBiZW5lZml0cyBhcmUgZWxpZ2libGUgdG8gYmUgZXhjbHVkZWQgZnJvbSB5b3VyIGluY29tZSwgd2UgcmVxdWlyZSBmdXJ0aGVyIGRldGFpbHMgcmVnYXJkaW5nIHRoZSBpbnN1cmFuY2UgcHJlbWl1bXMgcGFpZC48L3A+XHJcbiAgICA8cD5LaW5kbHkgcHJvdmlkZSB0aGUgZm9sbG93aW5nIGluZm9ybWF0aW9uIGF0IHlvdXIgZWFybGllc3QgY29udmVuaWVuY2U6PC9wPlxyXG4gICAgPG9sPlxyXG4gICAgICAgIDxsaT5UaGUgdG90YWwgYW1vdW50IG9mIGRpc2FiaWxpdHkgaW5zdXJhbmNlIGJlbmVmaXRzIHJlY2VpdmVkIGR1cmluZyB0aGUgdGF4IHllYXIuPC9saT5cclxuICAgICAgICA8bGk+RGV0YWlsZWQgc3RhdGVtZW50cyBvciBkb2N1bWVudGF0aW9uIHNob3dpbmcgdGhlIGRpc2FiaWxpdHkgaW5zdXJhbmNlIGJlbmVmaXRzIHJlY2VpdmVkLjwvbGk+XHJcbiAgICAgICAgPGxpPkNvbmZpcm1hdGlvbiBvbiB3aG8gcGFpZCB0aGUgaW5zdXJhbmNlIHByZW1pdW1zICh5b3Ugb3IgeW91ciBlbXBsb3llcikuPC9saT5cclxuICAgICAgICA8bGk+SWYgeW91IGhhdmUgY29udHJpYnV0ZWQgdG8gdGhlIHBheW1lbnQgb2YgdGhlIHByZW1pdW1zOlxyXG4gICAgICAgICAgICA8dWw+XHJcbiAgICAgICAgICAgICAgICA8bGk+VGhlIGFtb3VudCB5b3UgcGFpZCB0b3dhcmRzIHRoZSBwcmVtaXVtcy48L2xpPlxyXG4gICAgICAgICAgICAgICAgPGxpPkFueSBzdXBwb3J0aW5nIGRvY3VtZW50cyBmb3IgdGhlIHBheW1lbnRzIG1hZGUgYnkgeW91IChyZWNlaXB0cyBvciBiYW5rIHN0YXRlbWVudHMpLjwvbGk+XHJcbiAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgPC9saT5cclxuICAgICAgICA8bGk+SWYgeW91ciBlbXBsb3llciBjb250cmlidXRlZCB0byB0aGUgcGF5bWVudCBvZiB0aGUgcHJlbWl1bXM6XHJcbiAgICAgICAgICAgIDx1bD5cclxuICAgICAgICAgICAgICAgIDxsaT5UaGUgYW1vdW50IHBhaWQgYnkgeW91ciBlbXBsb3llciB0b3dhcmRzIHRoZSBwcmVtaXVtcy48L2xpPlxyXG4gICAgICAgICAgICAgICAgPGxpPkFueSBkb2N1bWVudHMgaW5kaWNhdGluZyBlbXBsb3llciBjb250cmlidXRpb25zIChwYXkgc3R1YnMsIGVtcGxveWVyIGxldHRlcnMpLjwvbGk+XHJcbiAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgPC9saT5cclxuICAgIDwvb2w+XHJcbiAgICA8cD5UaGlzIGluZm9ybWF0aW9uIGlzIGNydWNpYWwgZm9yIHVzIHRvIGRldGVybWluZSB0aGUgdGF4YWJsZSBwb3J0aW9uLCBpZiBhbnksIG9mIHlvdXIgZGlzYWJpbGl0eSBpbnN1cmFuY2UgYmVuZWZpdHMuIFByb3ZpZGluZyB0aGVzZSBkZXRhaWxzIHdpbGwgaGVscCB1cyBlbnN1cmUgdGhlIGFjY3VyYWN5IG9mIHlvdXIgdGF4IGZpbGluZyBhbmQgcG90ZW50aWFsbHkgbG93ZXIgeW91ciB0YXhhYmxlIGluY29tZS48L3A+XHJcbiAgICA8cD5QbGVhc2UgZG8gbm90IGhlc2l0YXRlIHRvIHJlYWNoIG91dCBpZiB5b3UgaGF2ZSBhbnkgcXVlc3Rpb25zIG9yIGlmIHdlIGNhbiBiZSBvZiBmdXJ0aGVyIGFzc2lzdGFuY2UuIFdlIGFwcHJlY2lhdGUgeW91ciBwcm9tcHQgcmVzcG9uc2UgdG8gdGhpcyByZXF1ZXN0LjwvcD5gXHJcbiAgfSxcclxuICB7XHJcbiAgICBhY3Rpb25UYXhTdWJqZWN0OiBcIkRpc2FiaWxpdHkgUmV0aXJlbWVudCBCZW5lZml0c1wiLFxyXG4gICAgYWN0aW9uVGl0bGU6IFwiRGlzYWJpbGl0eSBSZXRpcmVtZW50IEJlbmVmaXRzXCIsXHJcbiAgICBhY3Rpb25JbnN0cnVjdGlvbnM6IGA8cD5XZSBhcmUgaW4gdGhlIHByb2Nlc3Mgb2YgcHJlcGFyaW5nIHlvdXIgdGF4IGRvY3VtZW50cyBhbmQgaGF2ZSBub3RlZCB0aGF0IHlvdSByZWNlaXZlZCBkaXNhYmlsaXR5IHJldGlyZW1lbnQgYmVuZWZpdHMgZHVyaW5nIHRoZSB0YXggeWVhci4gSW4gb3JkZXIgdG8gYWNjdXJhdGVseSBkZXRlcm1pbmUgdGhlIHRheGFiaWxpdHkgb2YgdGhlc2UgYmVuZWZpdHMsIHdlIG5lZWQgYWRkaXRpb25hbCBkZXRhaWxzLiBUaGUgdGF4YWJpbGl0eSBvZiB0aGVzZSBiZW5lZml0cyBjYW4gZGVwZW5kIG9uIHdoZW4geW91IHRvb2sgcmV0aXJlbWVudCBkdWUgdG8gZGlzYWJpbGl0eS48L3A+XHJcbiAgICA8cD5QbGVhc2UgcHJvdmlkZSB0aGUgZm9sbG93aW5nIGluZm9ybWF0aW9uIGFzIHNvb24gYXMgcG9zc2libGU6PC9wPlxyXG4gICAgPG9sPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPkRhdGUgb2YgUmV0aXJlbWVudDo8L3N0cm9uZz4gVGhlIGV4YWN0IGRhdGUgeW91IHJldGlyZWQgZHVlIHRvIGRpc2FiaWxpdHkuPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5Eb2N1bWVudGF0aW9uIG9mIERpc2FiaWxpdHkgUmV0aXJlbWVudDo8L3N0cm9uZz4gQW55IG9mZmljaWFsIGRvY3VtZW50YXRpb24geW91IGhhdmUgdGhhdCBjb25maXJtcyB5b3VyIHJldGlyZW1lbnQgd2FzIGR1ZSB0byBkaXNhYmlsaXR5LiBUaGlzIG1heSBpbmNsdWRlIGxldHRlcnMgZnJvbSB5b3VyIGVtcGxveWVyLCB0aGUgcmV0aXJlbWVudCBwbGFuLCBvciBtZWRpY2FsIHJlY29yZHMuPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5EZXRhaWxzIG9mIEJlbmVmaXRzIFJlY2VpdmVkOjwvc3Ryb25nPiBTcGVjaWZpYyBhbW91bnRzIGFuZCB0aGUgc291cmNlIG9mIHRoZSBkaXNhYmlsaXR5IHJldGlyZW1lbnQgYmVuZWZpdHMuIFBsZWFzZSBpbmNsdWRlIGFueSByZWxhdGVkIGRvY3VtZW50cyBzdWNoIGFzIHN0YXRlbWVudHMgb3Igbm90aWNlcy48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPlByZXZpb3VzIFllYXIgVy0yIG9yIDEwOTkgRm9ybXM6PC9zdHJvbmc+IElmIHlvdSByZWNlaXZlZCBhbnkgd2FnZXMgb3IgZGlzYWJpbGl0eSBwYXltZW50cyB0aGF0IHdlcmUgcmVwb3J0ZWQgb24gVy0yIG9yIDEwOTkgZm9ybXMgaW4gdGhlIHllYXIgb2YgeW91ciByZXRpcmVtZW50LCBwbGVhc2UgcHJvdmlkZSB0aGVzZSBmb3Jtcy48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPkFueSBDb3JyZXNwb25kZW5jZSBmcm9tIHRoZSBJUlM6PC9zdHJvbmc+IElmIHlvdSBoYXZlIHJlY2VpdmVkIGFueSBub3RpY2VzIG9yIGxldHRlcnMgZnJvbSB0aGUgSVJTIHJlZ2FyZGluZyB5b3VyIGRpc2FiaWxpdHkgcmV0aXJlbWVudCBiZW5lZml0cywgcGxlYXNlIGluY2x1ZGUgY29waWVzIG9mIHRoZXNlIGNvbW11bmljYXRpb25zLjwvbGk+XHJcbiAgICA8L29sPlxyXG4gICAgPHA+VGhlIGFib3ZlIGluZm9ybWF0aW9uIGlzIHZpdGFsIHRvIGVuc3VyZSB5b3VyIHRheCByZXR1cm4gaXMgY29tcGxldGUgYW5kIGFjY3VyYXRlLiBVbmRlcnN0YW5kaW5nIHRoZSBzcGVjaWZpY3Mgb2YgeW91ciBkaXNhYmlsaXR5IHJldGlyZW1lbnQgYmVuZWZpdHMgd2lsbCBhaWQgdXMgaW4gZGV0ZXJtaW5pbmcgdGhlaXIgdGF4YWJpbGl0eSBhbmQgZW5zdXJpbmcgdGhhdCB5b3VyIHRheCBvYmxpZ2F0aW9ucyBhcmUgcHJlY2lzZWx5IGNhbGN1bGF0ZWQuPC9wPlxyXG4gICAgPHA+SWYgeW91IGhhdmUgYW55IHF1ZXN0aW9ucyBvciBuZWVkIGFzc2lzdGFuY2UgZ2F0aGVyaW5nIHRoZXNlIGRvY3VtZW50cywgZmVlbCBmcmVlIHRvIGNvbnRhY3QgdXMuIFlvdXIgcHJvbXB0IHJlc3BvbnNlIGlzIGhpZ2hseSBhcHByZWNpYXRlZC48L3A+YFxyXG4gIH0sXHJcbiAge1xyXG4gICAgYWN0aW9uVGF4U3ViamVjdDogXCJDbGVyZ3kgV2FnZXNcIixcclxuICAgIGFjdGlvblRpdGxlOiBcIkNsZXJneSBXYWdlc1wiLFxyXG4gICAgYWN0aW9uSW5zdHJ1Y3Rpb25zOiBgPHA+V2UgYXJlIGluIHRoZSBwcm9jZXNzIG9mIHByZXBhcmluZyB5b3VyIHRheCByZXR1cm5zIGFuZCBoYXZlIG5vdGVkIHRoYXQgeW91IHJlY2VpdmVkIFctMiB3YWdlcyBhcyBhIGNsZXJneSBtZW1iZXIuIFRvIGVuc3VyZSBhY2N1cmF0ZSByZXBvcnRpbmcgYW5kIHRvIHBvdGVudGlhbGx5IG1heGltaXplIHlvdXIgdGF4IGJlbmVmaXRzLCB3ZSByZXF1aXJlIGZ1cnRoZXIgZGV0YWlscyByZWdhcmRpbmcgeW91ciBjb21wZW5zYXRpb24gcGFja2FnZS48L3A+XHJcbiAgICA8cD5QbGVhc2UgcHJvdmlkZSB0aGUgZm9sbG93aW5nIGRvY3VtZW50cyBhbmQgaW5mb3JtYXRpb24gYXQgeW91ciBlYXJsaWVzdCBjb252ZW5pZW5jZTo8L3A+XHJcbiAgICA8b2w+XHJcbiAgICAgICAgPGxpPjxiPlctMiBGb3JtOjwvYj4gSWYgbm90IGFscmVhZHkgcHJvdmlkZWQsIGluY2x1ZGUgYW55IFctMiBmb3JtcyBpc3N1ZWQgYnkgeW91ciByZWxpZ2lvdXMgaW5zdGl0dXRpb24uPC9saT5cclxuICAgICAgICA8bGk+PGI+SG91c2luZyBBbGxvd2FuY2UgRG9jdW1lbnRhdGlvbjo8L2I+IERldGFpbGVkIHN0YXRlbWVudCBvciBsZXR0ZXIgZnJvbSB5b3VyIHJlbGlnaW91cyBpbnN0aXR1dGlvbiBzcGVjaWZ5aW5nIHRoZSBhbW91bnQgZGVzaWduYXRlZCBhcyBob3VzaW5nIGFsbG93YW5jZS48L2xpPlxyXG4gICAgICAgIDxsaT48Yj5TZWxmLUVtcGxveW1lbnQgVGF4OjwvYj4gQ29uZmlybWF0aW9uIG9uIHdoZXRoZXIgeW91IGhhdmUgdGFrZW4gYSB2b3cgb2YgcG92ZXJ0eSAoaWYgYXBwbGljYWJsZSksIG9yIGFueSBkb2N1bWVudGF0aW9uIHJlbGF0ZWQgdG8gb3B0aW5nIG91dCBvZiBzZWxmLWVtcGxveW1lbnQgdGF4LjwvbGk+XHJcbiAgICAgICAgPGxpPjxiPkV4cGVuc2UgUmVpbWJ1cnNlbWVudHM6PC9iPiBEb2N1bWVudGF0aW9uIHNob3dpbmcgYW55IGV4cGVuc2UgcmVpbWJ1cnNlbWVudHMgcmVjZWl2ZWQgdW5kZXIgYW4gYWNjb3VudGFibGUgcGxhbi48L2xpPlxyXG4gICAgICAgIDxsaT48Yj5PdGhlciBDb21wZW5zYXRpb246PC9iPiBJbmZvcm1hdGlvbiBvbiBhbnkgb3RoZXIgY29tcGVuc2F0aW9uIHJlY2VpdmVkIGluIHlvdXIgY2FwYWNpdHkgYXMgY2xlcmd5LCBpbmNsdWRpbmcgYnV0IG5vdCBsaW1pdGVkIHRvIGxvdmUgb2ZmZXJpbmdzLCBmZWVzIGZvciBzZXJ2aWNlcyAod2VkZGluZ3MsIGZ1bmVyYWxzLCBldGMuKSwgYW5kIHBhcnNvbmFnZSBhbGxvd2FuY2VzLjwvbGk+XHJcbiAgICA8L29sPlxyXG4gICAgPHA+VGhpcyBpbmZvcm1hdGlvbiBpcyBjcnVjaWFsIGZvciB1cyB0byBhY2N1cmF0ZWx5IHJlcHJlc2VudCB5b3VyIGVhcm5pbmdzIGFuZCB0byBjYWxjdWxhdGUgYW55IHBvdGVudGlhbCBkZWR1Y3Rpb25zIGNvcnJlY3RseS4gWW91ciBwcm9tcHQgYXR0ZW50aW9uIHRvIHRoaXMgcmVxdWVzdCB3aWxsIGhlbHAgZW5zdXJlIHRoYXQgeW91ciB0YXggcmV0dXJucyBhcmUgcHJlcGFyZWQgaW4gYSB0aW1lbHkgYW5kIGVmZmljaWVudCBtYW5uZXIuPC9wPlxyXG4gICAgPHA+SWYgeW91IGhhdmUgYW55IHF1ZXN0aW9ucyBvciBuZWVkIGZ1cnRoZXIgY2xhcmlmaWNhdGlvbiBvbiB3aGF0IGlzIHJlcXVpcmVkLCBwbGVhc2UgZG8gbm90IGhlc2l0YXRlIHRvIGNvbnRhY3QgdXMuIFdlIGFyZSBoZXJlIHRvIGFzc2lzdCB5b3UgdGhyb3VnaCBldmVyeSBzdGVwIG9mIHRoaXMgcHJvY2Vzcy48L3A+XHJcbiAgICA8cD5UaGFuayB5b3UgZm9yIHlvdXIgY29vcGVyYXRpb24gYW5kIHByb21wdCBhdHRlbnRpb24gdG8gdGhpcyBtYXR0ZXIuPC9wPmBcclxuICB9LFxyXG4gIHtcclxuICAgIGFjdGlvblRheFN1YmplY3Q6IFwiSW50ZXJlc3QgSW5jb21lXCIsXHJcbiAgICBhY3Rpb25UaXRsZTogXCJJbnRlcmVzdCBJbmNvbWVcIixcclxuICAgIGFjdGlvbkluc3RydWN0aW9uczogYDxwPkluIHJldmlld2luZyB5b3VyIGZpbmFuY2lhbCBhY3Rpdml0aWVzIGZvciB0aGUgdGF4IHllYXIsIHlvdSBpbmRpY2F0ZWQgcmVjZWl2aW5nIGludGVyZXN0IGluY29tZS4gVG8gYWNjdXJhdGVseSBkZXRlcm1pbmUgdGhlIHRheGFiaWxpdHkgb2YgdGhpcyBpbmNvbWUgYW5kIGVuc3VyZSBjb21wbGlhbmNlIHdpdGggdGF4IHJlZ3VsYXRpb25zLCB3ZSByZXF1aXJlIGFkZGl0aW9uYWwgZGV0YWlscy4gS2luZGx5IHByb3ZpZGUgdGhlIGZvbGxvd2luZyBpbmZvcm1hdGlvbjo8L3A+XHJcbiAgICA8b2w+XHJcbiAgICAgIDxsaT48Yj5Tb3VyY2Ugb2YgSW50ZXJlc3QgSW5jb21lOjwvYj4gUGxlYXNlIHNwZWNpZnkgdGhlIGluc3RpdHV0aW9uKHMpIG9yIGVudGl0eShpZXMpIGZyb20gd2hpY2ggeW91IHJlY2VpdmVkIGludGVyZXN0IGluY29tZSAoZS5nLiwgYmFua3MsIGNyZWRpdCB1bmlvbnMpLjwvbGk+XHJcbiAgICAgIDxsaT48Yj5BbW91bnQgUmVjZWl2ZWQ6PC9iPiBDb25maXJtIHRoZSB0b3RhbCBhbW91bnQgb2YgaW50ZXJlc3QgaW5jb21lIHJlY2VpdmVkIGZyb20gZWFjaCBzb3VyY2UgZHVyaW5nIHRoZSB0YXggeWVhci48L2xpPlxyXG4gICAgICA8bGk+PGI+QWNjb3VudCBUeXBlczo8L2I+IElkZW50aWZ5IHRoZSB0eXBlIG9mIGFjY291bnRzIHRoYXQgZ2VuZXJhdGVkIHRoZSBpbnRlcmVzdCAoZS5nLiwgc2F2aW5ncywgY2hlY2tpbmcsIGNlcnRpZmljYXRlcyBvZiBkZXBvc2l0KS48L2xpPlxyXG4gICAgICA8bGk+PGI+VGF4IEZvcm1zIFJlY2VpdmVkOjwvYj4gTGlzdCBhbnkgdGF4IGZvcm1zIHlvdSBoYXZlIHJlY2VpdmVkIHJlbGF0ZWQgdG8gaW50ZXJlc3QgaW5jb21lLCBzdWNoIGFzIEZvcm0gMTA5OS1JTlQgb3IgRm9ybSAxMDk5LU9JRC48L2xpPlxyXG4gICAgICA8bGk+PGI+Rm9yZWlnbiBJbnRlcmVzdDo8L2I+IElmIGFueSBpbnRlcmVzdCBpbmNvbWUgd2FzIGVhcm5lZCBmcm9tIGZvcmVpZ24gYWNjb3VudHMgb3Igc291cmNlcywgcGxlYXNlIHByb3ZpZGUgZGV0YWlscywgaW5jbHVkaW5nIHRoZSBjb3VudHJ5IG9mIG9yaWdpbi48L2xpPlxyXG4gICAgPC9vbD5cclxuICAgIDxwPlByb3ZpZGluZyB0aGVzZSBkZXRhaWxzIHdpbGwgZW5hYmxlIHVzIHRvIGFjY3VyYXRlbHkgYXNzZXNzIHRoZSB0YXggaW1wbGljYXRpb25zIG9mIHlvdXIgaW50ZXJlc3QgaW5jb21lIGFuZCBlbnN1cmUgeW91ciB0YXggcmV0dXJuIGlzIGNvbXBsZXRlIGFuZCBjb3JyZWN0LiBZb3UgY2FuIGF0dGFjaCB0aGUgcmVxdWVzdGVkIGRvY3VtZW50cyBhbmQgaW5mb3JtYXRpb24gYnkgcmVwbHlpbmcgdG8gdGhpcyBlbWFpbCBvciB1cGxvYWRpbmcgdGhlbSBkaXJlY3RseSB0byBvdXIgc2VjdXJlIGNsaWVudCBwb3J0YWwuPC9wPlxyXG4gICAgPHA+SWYgeW91IGhhdmUgYW55IHF1ZXN0aW9ucyBvciByZXF1aXJlIGFzc2lzdGFuY2UgaW4gZ2F0aGVyaW5nIHRoaXMgaW5mb3JtYXRpb24sIGRvIG5vdCBoZXNpdGF0ZSB0byBjb250YWN0IHVzLjwvcD5cclxuICAgIDxwPlRoYW5rIHlvdSBmb3IgeW91ciBwcm9tcHQgYXR0ZW50aW9uIHRvIHRoaXMgbWF0dGVyLjwvcD5gXHJcbiAgfSxcclxuICB7XHJcbiAgICBhY3Rpb25UYXhTdWJqZWN0OiBcIkJhbmsgQWNjb3VudCBPcGVuaW5nIEdpZnRzXCIsXHJcbiAgICBhY3Rpb25UaXRsZTogXCJCYW5rIEFjY291bnQgT3BlbmluZyBHaWZ0c1wiLFxyXG4gICAgYWN0aW9uSW5zdHJ1Y3Rpb25zOiBgPHA+V2UgYXJlIGluIHRoZSBwcm9jZXNzIG9mIHJldmlld2luZyB5b3VyIHRheCBzaXR1YXRpb24gYW5kIGhhdmUgbm90ZWQgdGhhdCB5b3UgcmVjZWl2ZWQgYSBnaWZ0IGZvciBvcGVuaW5nIGFuIGFjY291bnQgYXQgYSBmaW5hbmNpYWwgaW5zdGl0dXRpb24uIFRvIGFjY3VyYXRlbHkgZGV0ZXJtaW5lIHRoZSB0YXhhYmlsaXR5IG9mIHRoaXMgaW5jb21lLCB3ZSBraW5kbHkgcmVxdWVzdCB0aGUgZm9sbG93aW5nIGluZm9ybWF0aW9uOjwvcD5cclxuICAgIDxvbD5cclxuICAgICAgICA8bGk+VGhlIG5hbWUgb2YgdGhlIGZpbmFuY2lhbCBpbnN0aXR1dGlvbiB3aGVyZSB0aGUgYWNjb3VudCB3YXMgb3BlbmVkLjwvbGk+XHJcbiAgICAgICAgPGxpPlRoZSBkYXRlIHRoZSBhY2NvdW50IHdhcyBvcGVuZWQuPC9saT5cclxuICAgICAgICA8bGk+QSBkZXRhaWxlZCBkZXNjcmlwdGlvbiBvZiB0aGUgZ2lmdCByZWNlaXZlZCAoZS5nLiwgY2FzaCwgbWVyY2hhbmRpc2UsIG9yIHNlcnZpY2VzKS48L2xpPlxyXG4gICAgICAgIDxsaT5UaGUgZmFpciBtYXJrZXQgdmFsdWUgb2YgdGhlIGdpZnQgYXQgdGhlIHRpbWUgaXQgd2FzIHJlY2VpdmVkLjwvbGk+XHJcbiAgICAgICAgPGxpPkFueSBkb2N1bWVudGF0aW9uIHByb3ZpZGVkIGJ5IHRoZSBmaW5hbmNpYWwgaW5zdGl0dXRpb24gcmVnYXJkaW5nIHRoZSBnaWZ0IChlLmcuLCBhIGxldHRlciwgZW1haWwgY29uZmlybWF0aW9uLCBvciBzdGF0ZW1lbnQgaW5kaWNhdGluZyB0aGUgdmFsdWUgb2YgdGhlIGdpZnQpLjwvbGk+XHJcbiAgICAgICAgPGxpPkNvbmZpcm1hdGlvbiBpZiB5b3UgaGF2ZSByZWNlaXZlZCBtb3JlIHRoYW4gb25lIGdpZnQgZm9yIG9wZW5pbmcgYWNjb3VudHMgd2l0aGluIHRoZSBzYW1lIHRheCB5ZWFyLCBhbmQgaWYgc28sIHRoZSBkZXRhaWxzIGZvciBlYWNoLjwvbGk+XHJcbiAgICA8L29sPlxyXG4gICAgPHA+UGxlYXNlIHByb3ZpZGUgdGhpcyBpbmZvcm1hdGlvbiBhdCB5b3VyIGVhcmxpZXN0IGNvbnZlbmllbmNlIHRvIGVuc3VyZSB3ZSBjYW4gYWNjdXJhdGVseSBhc3Nlc3MgdGhlIHRheCBpbXBsaWNhdGlvbnMgYW5kIGNvbXBseSB3aXRoIGFsbCBJUlMgcmVxdWlyZW1lbnRzLjwvcD5cclxuICAgIDxwPlRoYW5rIHlvdSBmb3IgeW91ciBwcm9tcHQgYXR0ZW50aW9uIHRvIHRoaXMgbWF0dGVyLjwvcD5gXHJcbiAgfSxcclxuICB7XHJcbiAgICBhY3Rpb25UYXhTdWJqZWN0OiBcIkNEIEludGVyZXN0XCIsXHJcbiAgICBhY3Rpb25UaXRsZTogXCJDRCBJbnRlcmVzdFwiLFxyXG4gICAgYWN0aW9uSW5zdHJ1Y3Rpb25zOiBgPHA+VG8gZW5zdXJlIGFjY3VyYXRlIHJlcG9ydGluZyBvZiB5b3VyIGluY29tZSBmcm9tIENlcnRpZmljYXRlcyBvZiBEZXBvc2l0IChDRHMpIGZvciB0aGUgdGF4IHllYXIsIHdlIGtpbmRseSByZXF1ZXN0IHRoZSBmb2xsb3dpbmcgaW5mb3JtYXRpb24uIFRoaXMgaXMgZXNzZW50aWFsIHRvIGNvbXBseSB3aXRoIElSUyByZWd1bGF0aW9ucyBhbmQgdG8gcG90ZW50aWFsbHkgb3B0aW1pemUgeW91ciB0YXggYmVuZWZpdHMuPC9wPlxyXG4gICAgPG9sPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPk5hbWUgb2YgdGhlIEJhbmsgb3IgRmluYW5jaWFsIEluc3RpdHV0aW9uOjwvc3Ryb25nPiBXaGVyZSB0aGUgQ0QgaXMgaGVsZC48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPkFjY291bnQgTnVtYmVyOjwvc3Ryb25nPiBUaGlzIGhlbHBzIGluIGlkZW50aWZ5aW5nIHRoZSBzcGVjaWZpYyBDRC48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPlRvdGFsIEludGVyZXN0IEVhcm5lZDo8L3N0cm9uZz4gVGhlIGFtb3VudCBvZiBpbnRlcmVzdCBlYXJuZWQgZnJvbSB0aGUgQ0QgZHVyaW5nIHRoZSB0YXggeWVhci48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPkNEIFRlcm06PC9zdHJvbmc+IFRoZSBkdXJhdGlvbiBvciB0ZXJtIG9mIHRoZSBDRCAoZS5nLiwgNiBtb250aHMsIDEgeWVhcikuPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5EYXRlIG9mIFB1cmNoYXNlOjwvc3Ryb25nPiBXaGVuIHlvdSBvcmlnaW5hbGx5IGFjcXVpcmVkIHRoZSBDRC48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPk1hdHVyaXR5IERhdGU6PC9zdHJvbmc+IFdoZW4gdGhlIENEIHJlYWNoZWQgb3Igd2lsbCByZWFjaCBpdHMgZnVsbCB0ZXJtLjwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+MTA5OS1JTlQgRm9ybXM6PC9zdHJvbmc+IElmIHJlY2VpdmVkLCBwbGVhc2UgaW5jbHVkZSBjb3BpZXMgb2YgYW55IDEwOTktSU5UIGZvcm1zIGFzc29jaWF0ZWQgd2l0aCB0aGUgQ0QgaW50ZXJlc3QuPC9saT5cclxuICAgIDwvb2w+XHJcbiAgICA8cD5QbGVhc2UgcHJvdmlkZSB0aGlzIGluZm9ybWF0aW9uIGF0IHlvdXIgZWFybGllc3QgY29udmVuaWVuY2UgdG8gZW5zdXJlIGFjY3VyYXRlIGFuZCB0aW1lbHkgcHJlcGFyYXRpb24gb2YgeW91ciB0YXggZG9jdW1lbnRzLiBZb3UgbWF5IHVwbG9hZCB0aGUgZG9jdW1lbnRzIGRpcmVjdGx5IHRocm91Z2ggb3VyIHNlY3VyZSBjbGllbnQgcG9ydGFsIG9yIGFycmFuZ2UgZm9yIGEgbWVldGluZyB0byBwcm92aWRlIHRoZW0gaW4gcGVyc29uLjwvcD5cclxuICAgIDxwPklmIHlvdSBoYXZlIGFueSBxdWVzdGlvbnMgb3IgbmVlZCBmdXJ0aGVyIGFzc2lzdGFuY2UsIGRvIG5vdCBoZXNpdGF0ZSB0byBjb250YWN0IHVzLjwvcD5cclxuICAgIDxwPlRoYW5rIHlvdSBmb3IgeW91ciBwcm9tcHQgYXR0ZW50aW9uIHRvIHRoaXMgbWF0dGVyLjwvcD5gXHJcbiAgfSxcclxuICB7XHJcbiAgICBhY3Rpb25UYXhTdWJqZWN0OiBcIlRheCBFeGVtcHQgSW50ZXJlc3RcIixcclxuICAgIGFjdGlvblRpdGxlOiBcIlRheCBFeGVtcHQgSW50ZXJlc3RcIixcclxuICAgIGFjdGlvbkluc3RydWN0aW9uczogYDxwPldlIHVuZGVyc3RhbmQgdGhhdCB5b3UgaGF2ZSByZWNlaXZlZCB0YXgtZXhlbXB0IGludGVyZXN0IGR1cmluZyB0aGUgdGF4IHllYXIsIHBvc3NpYmx5IGZyb20gbXVuaWNpcGFsIGJvbmRzIG9yIHNpbWlsYXIgaW52ZXN0bWVudHMuIFRvIGFjY3VyYXRlbHkgcHJlcGFyZSB5b3VyIHRheCByZXR1cm5zIGFuZCBlbnN1cmUgY29tcGxpYW5jZSB3aXRoIHRheCByZWd1bGF0aW9ucywgd2Uga2luZGx5IHJlcXVlc3QgdGhlIGZvbGxvd2luZyBpbmZvcm1hdGlvbjo8L3A+XHJcbiAgICA8b2w+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+U3RhdGVtZW50cyBvZiBUYXgtRXhlbXB0IEludGVyZXN0Ojwvc3Ryb25nPiBQbGVhc2UgcHJvdmlkZSBhbGwgMTA5OS1JTlQgZm9ybXMgb3IgZXF1aXZhbGVudCBzdGF0ZW1lbnRzIHRoYXQgZGV0YWlsIHlvdXIgdGF4LWV4ZW1wdCBpbnRlcmVzdCBpbmNvbWUgZm9yIHRoZSB0YXggeWVhci48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPkRldGFpbHMgb2YgSXNzdWluZyBFbnRpdGllczo8L3N0cm9uZz4gQSBsaXN0IG9yIHN0YXRlbWVudCBpZGVudGlmeWluZyB0aGUgZW50aXRpZXMgdGhhdCBpc3N1ZWQgdGhlIGJvbmRzIG9yIHNpbWlsYXIgaW52ZXN0bWVudHMuIFRoaXMgaW5jbHVkZXMgbXVuaWNpcGFsLCBzdGF0ZSwgb3IgZmVkZXJhbCBlbnRpdGllcy48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPkludmVzdG1lbnQgRGV0YWlsOjwvc3Ryb25nPiBBIGJyZWFrZG93biBvZiB0aGUgaW52ZXN0bWVudHMgY29udHJpYnV0aW5nIHRvIHRheC1leGVtcHQgaW50ZXJlc3QuIFRoaXMgc2hvdWxkIGluY2x1ZGUgdGhlIHB1cmNoYXNlIGRhdGUsIHB1cmNoYXNlIGFtb3VudHMsIGFuZCBhbnkgcmVsYXRlZCBtYXR1cml0eSBkYXRlcy48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPkJyb2tlcmFnZSBBY2NvdW50IFN0YXRlbWVudHM6PC9zdHJvbmc+IENvcGllcyBvZiB5b3VyIGJyb2tlcmFnZSBhY2NvdW50IHN0YXRlbWVudHMgdGhhdCBkZXRhaWwgdHJhbnNhY3Rpb25zIGFuZCBob2xkaW5ncyBpbiB0YXgtZXhlbXB0IGludmVzdG1lbnRzLjwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+QU1UIChBbHRlcm5hdGl2ZSBNaW5pbXVtIFRheCkgQ29uc2lkZXJhdGlvbjo8L3N0cm9uZz4gSWYgYXZhaWxhYmxlLCBkb2N1bWVudGF0aW9uIGluZGljYXRpbmcgd2hldGhlciBhbnkgb2YgdGhlIHRheC1leGVtcHQgaW50ZXJlc3QgaXMgc3ViamVjdCB0byB0aGUgQWx0ZXJuYXRpdmUgTWluaW11bSBUYXguPC9saT5cclxuICAgIDwvb2w+XHJcbiAgICA8cD5UaGlzIGluZm9ybWF0aW9uIGlzIGNydWNpYWwgZm9yIGFuIGFjY3VyYXRlIGFuZCBlZmZpY2llbnQgdGF4IHByZXBhcmF0aW9uIHByb2Nlc3MuIFBsZWFzZSBmb3J3YXJkIHRoZSByZXF1ZXN0ZWQgZG9jdW1lbnRzIGF0IHlvdXIgZWFybGllc3QgY29udmVuaWVuY2UuIElmIHlvdSBoYXZlIGFueSBxdWVzdGlvbnMgb3IgbmVlZCBhc3Npc3RhbmNlIGluIGdhdGhlcmluZyB0aGlzIGluZm9ybWF0aW9uLCBkbyBub3QgaGVzaXRhdGUgdG8gY29udGFjdCB1cy48L3A+XHJcbiAgICA8cD5UaGFuayB5b3UgZm9yIHlvdXIgY29vcGVyYXRpb24gYW5kIHByb21wdCBhdHRlbnRpb24gdG8gdGhpcyBtYXR0ZXIuPC9wPmBcclxuICB9LFxyXG4gIHtcclxuICAgIGFjdGlvblRheFN1YmplY3Q6IFwiRWR1Y2F0aW9uYWwgU2F2aW5ncyBCb25kIEludGVyZXN0XCIsXHJcbiAgICBhY3Rpb25UaXRsZTogXCJFZHVjYXRpb25hbCBTYXZpbmdzIEJvbmQgSW50ZXJlc3RcIixcclxuICAgIGFjdGlvbkluc3RydWN0aW9uczogYDxwPldlIGhvcGUgdGhpcyBtZXNzYWdlIGZpbmRzIHlvdSB3ZWxsLiBBcyBwYXJ0IG9mIG91ciBjb250aW51ZWQgZWZmb3J0IHRvIHByb3ZpZGUgeW91IHdpdGggdGhlIGJlc3QgdGF4IHByZXBhcmF0aW9uIHNlcnZpY2VzLCB3ZSBhcmUgcmVhY2hpbmcgb3V0IHRvIGdhdGhlciBuZWNlc3NhcnkgZG9jdW1lbnRhdGlvbiByZWxhdGVkIHRvIHRoZSBpbnRlcmVzdCB5b3UgbWF5IGhhdmUgcmVjZWl2ZWQgZnJvbSByZWRlZW1pbmcgYW4gRWR1Y2F0aW9uYWwgU2F2aW5ncyBCb25kLjwvcD5cclxuXHJcbiAgICA8cD5UbyBhY2N1cmF0ZWx5IGFzc2VzcyB0aGUgZWxpZ2liaWxpdHkgZm9yIGV4ZW1wdGlvbiBhbmQgdG8gZW5zdXJlIGNvbXBsaWFuY2Ugd2l0aCB0aGUgSVJTLCB3ZSBraW5kbHkgcmVxdWVzdCB5b3UgcHJvdmlkZSB0aGUgZm9sbG93aW5nIGluZm9ybWF0aW9uOjwvcD5cclxuICAgIDxvbD5cclxuICAgICAgICA8bGk+QSBjb3B5IG9mIEZvcm0gMTA5OS1JTlQgb3Igc2ltaWxhciBzdGF0ZW1lbnQgcHJvdmlkZWQgYnkgdGhlIGZpbmFuY2lhbCBpbnN0aXR1dGlvbiwgaW5kaWNhdGluZyB0aGUgYW1vdW50IG9mIGludGVyZXN0IHJlY2VpdmVkIGZyb20gdGhlIEVkdWNhdGlvbmFsIFNhdmluZ3MgQm9uZC48L2xpPlxyXG4gICAgICAgIDxsaT5EZXRhaWxlZCByZWNvcmRzIG9mIHRoZSBFZHVjYXRpb25hbCBTYXZpbmdzIEJvbmRzIHJlZGVlbWVkIGR1cmluZyB0aGUgdGF4IHllYXIsIGluY2x1ZGluZzpcclxuICAgICAgICAgICAgPHVsPlxyXG4gICAgICAgICAgICAgICAgPGxpPkJvbmQgc2VyaWFsIG51bWJlcnM8L2xpPlxyXG4gICAgICAgICAgICAgICAgPGxpPklzc3VlIGRhdGVzPC9saT5cclxuICAgICAgICAgICAgICAgIDxsaT5SZWRlbXB0aW9uIGRhdGVzPC9saT5cclxuICAgICAgICAgICAgICAgIDxsaT5BbW91bnRzPC9saT5cclxuICAgICAgICAgICAgPC91bD5cclxuICAgICAgICA8L2xpPlxyXG4gICAgICAgIDxsaT5SZWNlaXB0cyBvciBkb2N1bWVudGF0aW9uIGZvciBxdWFsaWZpZWQgZWR1Y2F0aW9uYWwgZXhwZW5zZXMgcGFpZCBkdXJpbmcgdGhlIHllYXIsIGluY2x1ZGluZzpcclxuICAgICAgICAgICAgPHVsPlxyXG4gICAgICAgICAgICAgICAgPGxpPlR1aXRpb24gYW5kIGZlZXM8L2xpPlxyXG4gICAgICAgICAgICAgICAgPGxpPkNvdXJzZSBtYXRlcmlhbHM8L2xpPlxyXG4gICAgICAgICAgICAgICAgPGxpPkFueSBvdGhlciByZXF1aXJlZCBleHBlbnNlcyBmb3IgZW5yb2xsbWVudCBvciBhdHRlbmRhbmNlIGF0IGFuIGVsaWdpYmxlIGVkdWNhdGlvbmFsIGluc3RpdHV0aW9uPC9saT5cclxuICAgICAgICAgICAgPC91bD5cclxuICAgICAgICA8L2xpPlxyXG4gICAgICAgIDxsaT5Qcm9vZiBvZiBlbnJvbGxtZW50IGZyb20gYW4gZWxpZ2libGUgZWR1Y2F0aW9uYWwgaW5zdGl0dXRpb24gZm9yIHRoZSBiZW5lZmljaWFyeSBvZiB0aGUgYm9uZC48L2xpPlxyXG4gICAgPC9vbD5cclxuICAgIDxwPlRoaXMgaW5mb3JtYXRpb24gaXMgY3J1Y2lhbCBmb3IgZGV0ZXJtaW5pbmcgdGhlIHRheGFiaWxpdHkgb2YgdGhlIGludGVyZXN0IGluY29tZSBhbmQgcG90ZW50aWFsbHkgbWF4aW1pemluZyB5b3VyIHRheCBiZW5lZml0cy4gV2UgYXBwcmVjaWF0ZSB5b3VyIHByb21wdCBhdHRlbnRpb24gdG8gdGhpcyByZXF1ZXN0IGFuZCByZWNvbW1lbmQgY29tcGlsaW5nIHRoZXNlIGRvY3VtZW50cyBhdCB5b3VyIGVhcmxpZXN0IGNvbnZlbmllbmNlLjwvcD5cclxuICAgIDxwPklmIHlvdSBoYXZlIGFueSBxdWVzdGlvbnMgb3IgbmVlZCBmdXJ0aGVyIGFzc2lzdGFuY2UsIHBsZWFzZSBkbyBub3QgaGVzaXRhdGUgdG8gY29udGFjdCBvdXIgb2ZmaWNlIGRpcmVjdGx5LjwvcD5cclxuICAgIDxwPlRoYW5rIHlvdSBmb3IgeW91ciBjb29wZXJhdGlvbiBhbmQgdHJ1c3QgaW4gb3VyIHNlcnZpY2VzLjwvcD5gXHJcbiAgfSxcclxuICB7XHJcbiAgICBhY3Rpb25UYXhTdWJqZWN0OiBcIkRpdmlkZW5kIEluY29tZVwiLFxyXG4gICAgYWN0aW9uVGl0bGU6IFwiRGl2aWRlbmQgSW5jb21lXCIsXHJcbiAgICBhY3Rpb25JbnN0cnVjdGlvbnM6IGA8cD5XZSBhcmUgY3VycmVudGx5IGluIHRoZSBwcm9jZXNzIG9mIHByZXBhcmluZyB5b3VyIHRheCByZXR1cm5zIGFuZCBoYXZlIG5vdGVkIHRoYXQgeW91IGluZGljYXRlZCByZWNlaXZpbmcgZGl2aWRlbmQgaW5jb21lIG92ZXIgdGhlIHBhc3QgdGF4IHllYXIuIFRvIGVuc3VyZSB3ZSBhY2N1cmF0ZWx5IHJlcG9ydCB0aGlzIGluY29tZSBhbmQgb3B0aW1pemUgeW91ciB0YXggc2l0dWF0aW9uLCB3ZSBraW5kbHkgcmVxdWVzdCB0aGUgZm9sbG93aW5nIGRvY3VtZW50YXRpb24gYW5kIGluZm9ybWF0aW9uOjwvcD5cclxuICAgIDxvbD5cclxuICAgICAgPGxpPkFsbCAxMDk5LURJViBmb3JtcyByZWNlaXZlZCBmcm9tIGNvcnBvcmF0aW9ucyBvciBtdXR1YWwgZnVuZHMuIFRoaXMgaW5jbHVkZXMgZGlzdHJpYnV0aW9ucyBvZiBjYXNoLCBzdG9jaywgb3Igb3RoZXIgcHJvcGVydHkuPC9saT5cclxuICAgICAgPGxpPklmIGFwcGxpY2FibGUsIGRldGFpbHMgcmVnYXJkaW5nIGFueSBmb3JlaWduIGRpdmlkZW5kcyBpbmNsdWRpbmcgdGhlIGFtb3VudCBpbiBmb3JlaWduIGN1cnJlbmN5LCB0aGUgY291bnRyeSBvZiBvcmlnaW4sIGFuZCBhbnkgZm9yZWlnbiB0YXggcGFpZC48L2xpPlxyXG4gICAgICA8bGk+Rm9yIGRpdmlkZW5kcyByZWludmVzdGVkLCBwbGVhc2UgcHJvdmlkZSBzdGF0ZW1lbnRzIG9yIGNvbmZpcm1hdGlvbnMgc2hvd2luZyB0aGVzZSB0cmFuc2FjdGlvbnMuPC9saT5cclxuICAgICAgPGxpPkFueSBvdGhlciByZWxldmFudCBkb2N1bWVudGF0aW9uIG9yIGluZm9ybWF0aW9uIHJlZ2FyZGluZyBkaXZpZGVuZHMgbm90IGNvdmVyZWQgYnkgYSAxMDk5LURJVi48L2xpPlxyXG4gICAgPC9vbD5cclxuICAgIDxwPlBsZWFzZSBlbnN1cmUgYWxsIGRvY3VtZW50cyBhcmUgY2xlYXIgYW5kIGxlZ2libGUgdG8gYXZvaWQgYW55IHByb2Nlc3NpbmcgZGVsYXlzLiBXZSByZWNvbW1lbmQgc2VjdXJlbHkgdXBsb2FkaW5nIHRoZSByZXF1ZXN0ZWQgaW5mb3JtYXRpb24gdGhyb3VnaCBvdXIgY2xpZW50IHBvcnRhbCBvciBhcnJhbmdpbmcgYSBzZWN1cmUgZW1haWwgdHJhbnNtaXNzaW9uLjwvcD5cclxuICAgIDxwPllvdXIgcHJvbXB0IHJlc3BvbnNlIGlzIGFwcHJlY2lhdGVkIGFzIGl0IHdpbGwgaGVscCB1cyBpbiBjb21wbGV0aW5nIHlvdXIgdGF4IHByZXBhcmF0aW9ucyBlZmZpY2llbnRseS4gSWYgeW91IGhhdmUgYW55IHF1ZXN0aW9ucyBvciBuZWVkIGNsYXJpZmljYXRpb24sIGRvIG5vdCBoZXNpdGF0ZSB0byBjb250YWN0IHVzLjwvcD5gXHJcbiAgfVxyXG4gIFxyXG4gIFxyXG4gIFxyXG4gIFxyXG4gIFxyXG4gIFxyXG4gIFxyXG4gIFxyXG4gIFxyXG4gIFxyXG4gIFxyXG4gIFxyXG4gIFxyXG4gIFxyXG4gIFxyXG4gIFxyXG5dO1xyXG4iXX0=
|
|
@@ -23,5 +23,11 @@ var ActionTaxSubjects;
|
|
|
23
23
|
ActionTaxSubjects["DisabilityInsuranceBenefits"] = "Disability Insurance Benefits";
|
|
24
24
|
ActionTaxSubjects["DisabilityRetirementBenefits"] = "Disability Retirement Benefits";
|
|
25
25
|
ActionTaxSubjects["ClergyWages"] = "Clergy Wages";
|
|
26
|
+
ActionTaxSubjects["InterestIncome"] = "Interest Income";
|
|
27
|
+
ActionTaxSubjects["BankAccountOpeningGifts"] = "Bank Account Opening Gifts";
|
|
28
|
+
ActionTaxSubjects["CDInterest"] = "CD Interest";
|
|
29
|
+
ActionTaxSubjects["TaxExemptInterest"] = "Tax Exempt Interest";
|
|
30
|
+
ActionTaxSubjects["EducationalBondInterst"] = "Educational Savings Bond Interest";
|
|
31
|
+
ActionTaxSubjects["DividendIncome"] = "Dividend Income";
|
|
26
32
|
})(ActionTaxSubjects = exports.ActionTaxSubjects || (exports.ActionTaxSubjects = {}));
|
|
27
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
33
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLXRheC1zdWJqZWN0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hY3Rpb24tdGVtcy9hY3Rpb24tdGF4LXN1YmplY3RzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLElBQW1CLGlCQTJCbEI7QUEzQkQsV0FBbUIsaUJBQWlCO0lBQ2hDLGtFQUE2QyxDQUFBO0lBQzdDLGlFQUE0QyxDQUFBO0lBQzVDLDhDQUF5QixDQUFBO0lBQ3pCLHdEQUFtQyxDQUFBO0lBQ25DLHlEQUFvQyxDQUFBO0lBQ3BDLHdEQUFtQyxDQUFBO0lBQ25DLHNEQUFpQyxDQUFBO0lBQ2pDLHVFQUFrRCxDQUFBO0lBQ2xELCtFQUEwRCxDQUFBO0lBQzFELHlEQUFvQyxDQUFBO0lBQ3BDLGtGQUE2RCxDQUFBO0lBQzdELDBFQUFxRCxDQUFBO0lBQ3JELHNFQUFpRCxDQUFBO0lBQ2pELDZFQUF3RCxDQUFBO0lBQ3hELHlEQUFvQyxDQUFBO0lBQ3BDLHNFQUFpRCxDQUFBO0lBQ2pELHdFQUFtRCxDQUFBO0lBQ25ELGtGQUE2RCxDQUFBO0lBQzdELG9GQUErRCxDQUFBO0lBQy9ELGlEQUE0QixDQUFBO0lBQzVCLHVEQUFrQyxDQUFBO0lBQ2xDLDJFQUFzRCxDQUFBO0lBQ3RELCtDQUEwQixDQUFBO0lBQzFCLDhEQUF5QyxDQUFBO0lBQ3pDLGlGQUE0RCxDQUFBO0lBQzVELHVEQUFrQyxDQUFBO0FBQ3RDLENBQUMsRUEzQmtCLGlCQUFpQixHQUFqQix5QkFBaUIsS0FBakIseUJBQWlCLFFBMkJuQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBlbnVtICBBY3Rpb25UYXhTdWJqZWN0cyB7XHJcbiAgICBQcmlvclllYXJUYXhSZXR1cm4gPSBcIlByaW9yIFllYXIgVGF4IFJldHVybnNcIixcclxuICAgIFN0YXR1dG9yeUV4dGVuc2lvbnMgPSBcIlN0YXR1dG9yeSBFeHRlbnNpb25zXCIsXHJcbiAgICBEZXBlbmRlbnRzID0gXCJEZXBlbmRlbnRzXCIsXHJcbiAgICBIZWFkSG91c2Vob2xkID0gXCJIZWFkIG9mIEhvdXNlaG9sZFwiLFxyXG4gICAgUmVzaWRlbmN5U3RhdHVzID0gXCJSZXNpZGVuY3kgU3RhdHVzXCIsXHJcbiAgICBKb2ludFRheFJlbGllZiA9IFwiSm9pbnQgVGF4IFJlbGllZlwiLFxyXG4gICAgSW5jb21lMTA5OU5FQyA9IFwiMTA5OSBORUMgSW5jb21lXCIsXHJcbiAgICBTY2hlZHVsZUsxSW5mb3JtYXRpb24gPSBcIlNjaGVkdWxlIEstMSBJbmZvcm1hdGlvblwiLFxyXG4gICAgT3RoZXJTZWxmRW1wbG95bWVudEluY29tZSA9IFwiT3RoZXIgU2VsZi1FbXBsb3ltZW50IEluY29tZVwiLFxyXG4gICAgRW1wbG95bWVudFdhZ2VzID0gXCJFbXBsb3ltZW50IFdhZ2VzXCIsXHJcbiAgICBQcm9wZXJ0eVNlcnZpY2VzTGlldVdhZ2VzID0gXCJQcm9wZXJ0eSBvciBTZXJ2aWNlcyBMaWV1IFdhZ2VzXCIsXHJcbiAgICBFbXBsb3llZUFjY291bnRhYmxlUGxhbiA9IFwiRW1wbG95ZWUgQWNjb3VudGFibGUgUGxhblwiLFxyXG4gICAgVGF4YWJsZUZyaW5nZUJlbmVmaXRzID0gXCJUYXhhYmxlIEZyaW5nZSBCZW5lZml0c1wiLFxyXG4gICAgTm9uVGF4YWJsZUZyaW5nZUJlbmVmaXRzID0gXCJOb24gVGF4YWJsZSBGcmluZ2UgQmVuZWZpdHNcIixcclxuICAgIFZldGVyYW5CZW5lZml0cyA9IFwiVmV0ZXJhbiBCZW5lZml0c1wiLFxyXG4gICAgTGlmZUluc3VyYW5jZVBheW1lbnRzID0gXCJMaWZlIEluc3VyYW5jZSBQYXltZW50c1wiLFxyXG4gICAgTWVkaWNhcmVXYWl2ZXJQYXltZW50cyA9IFwiTWVkaWNhcmUgV2FpdmVyIFBheW1lbnRzXCIsXHJcbiAgICBEaXNhYmlsaXR5SW5zdXJhbmNlQmVuZWZpdHMgPSBcIkRpc2FiaWxpdHkgSW5zdXJhbmNlIEJlbmVmaXRzXCIsXHJcbiAgICBEaXNhYmlsaXR5UmV0aXJlbWVudEJlbmVmaXRzID0gXCJEaXNhYmlsaXR5IFJldGlyZW1lbnQgQmVuZWZpdHNcIixcclxuICAgIENsZXJneVdhZ2VzID0gXCJDbGVyZ3kgV2FnZXNcIixcclxuICAgIEludGVyZXN0SW5jb21lID0gXCJJbnRlcmVzdCBJbmNvbWVcIixcclxuICAgIEJhbmtBY2NvdW50T3BlbmluZ0dpZnRzID0gXCJCYW5rIEFjY291bnQgT3BlbmluZyBHaWZ0c1wiLFxyXG4gICAgQ0RJbnRlcmVzdCA9IFwiQ0QgSW50ZXJlc3RcIixcclxuICAgIFRheEV4ZW1wdEludGVyZXN0ID0gXCJUYXggRXhlbXB0IEludGVyZXN0XCIsXHJcbiAgICBFZHVjYXRpb25hbEJvbmRJbnRlcnN0ID0gXCJFZHVjYXRpb25hbCBTYXZpbmdzIEJvbmQgSW50ZXJlc3RcIixcclxuICAgIERpdmlkZW5kSW5jb21lID0gXCJEaXZpZGVuZCBJbmNvbWVcIlxyXG59Il19
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaS1pbnZlc3RtZW50LWluY29tZS1tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9mb3JtLW1vZGVscy9pLWludmVzdG1lbnQtaW5jb21lLW1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIElJbnZlc3RtZW50SW5jb21lTW9kZWwge1xyXG4gICAgaW50ZXJlc3RJbmNvbWU6IGJvb2xlYW47XHJcbiAgICBpbnRlcmVzdFJlY2VpdmVkMTA5OTogYm9vbGVhbjtcclxuICAgIGludGVyZXN0QW1vdW50MTA5OTogbnVtYmVyO1xyXG4gICAgb3RoZXJJbnRlcmVzdEluY29tZUFtb3VudDogbnVtYmVyO1xyXG4gICAgYmFua0FjY291bnRHaWZ0T3BlbmluZzogYm9vbGVhbjtcclxuICAgIGJhbmtBY2NvdW50R2lmdE9wZW5pbmdBbW91bnQ6IG51bWJlcjtcclxuICAgIGNkSW50ZXJlc3Q6IGJvb2xlYW47XHJcbiAgICBjZEludGVyZXN0QW1vdW50OiBudW1iZXI7XHJcbiAgICB0YXhFeGVtcHRJbnRlcmVzdDogYm9vbGVhbjtcclxuICAgIHRheEV4ZW1wdEludGVyZXN0QW1vdW50OiBudW1iZXI7XHJcbiAgICBlZHVjYXRpb25hbFNhdmluZ3NCb25kSW50ZXJlc3Q6IGJvb2xlYW47XHJcbiAgICBlZHVjYXRpb25hbFNhdmluZ3NCb25kSW50ZXJlc3RBbW91bnQ6IG51bWJlcjtcclxuICAgIGRpdmlkZW5kSW5jb21lOiBib29sZWFuO1xyXG4gICAgb3JkaW5hcnlEaXZpZGVudEFtb3VudDogbnVtYmVyO1xyXG4gICAgcXVhbGlmaWVkRGl2aWRlbnRBbW91bnQ6IG51bWJlcjtcclxuICAgIG5vbkRpdmlkZW5kRGlzdHJpYnV0aW9uQW1vdW50OiBudW1iZXI7XHJcbiAgICBtb25leU1hcmtldERpdmlkZW5kQW1vdW50OiBudW1iZXI7XHJcbiAgICBzdG9ja0RpdmlkZW5kczogYm9vbGVhbjtcclxuICAgIHN0b2NrRGl2aWRlbmRBbW91bnQ6IG51bWJlcjtcclxuICAgIGhhc0RSSVBQbGFuOiBib29sZWFuO1xyXG4gICAgbXV0dWFsRnVuZERpc3RyaWJ1dGlvbnM6IGJvb2xlYW47XHJcbiAgICBtdXR1YWxGdW5kRGlzdHJpYnV0aW9uQW1vdW50OiBudW1iZXI7XHJcbn0iXX0=
|
|
@@ -98,6 +98,36 @@ export var ActionTaxFragments = [
|
|
|
98
98
|
actionTaxSubject: "Clergy Wages",
|
|
99
99
|
actionTitle: "Clergy Wages",
|
|
100
100
|
actionInstructions: "<p>We are in the process of preparing your tax returns and have noted that you received W-2 wages as a clergy member. To ensure accurate reporting and to potentially maximize your tax benefits, we require further details regarding your compensation package.</p>\n <p>Please provide the following documents and information at your earliest convenience:</p>\n <ol>\n <li><b>W-2 Form:</b> If not already provided, include any W-2 forms issued by your religious institution.</li>\n <li><b>Housing Allowance Documentation:</b> Detailed statement or letter from your religious institution specifying the amount designated as housing allowance.</li>\n <li><b>Self-Employment Tax:</b> Confirmation on whether you have taken a vow of poverty (if applicable), or any documentation related to opting out of self-employment tax.</li>\n <li><b>Expense Reimbursements:</b> Documentation showing any expense reimbursements received under an accountable plan.</li>\n <li><b>Other Compensation:</b> Information on any other compensation received in your capacity as clergy, including but not limited to love offerings, fees for services (weddings, funerals, etc.), and parsonage allowances.</li>\n </ol>\n <p>This information is crucial for us to accurately represent your earnings and to calculate any potential deductions correctly. Your prompt attention to this request will help ensure that your tax returns are prepared in a timely and efficient manner.</p>\n <p>If you have any questions or need further clarification on what is required, please do not hesitate to contact us. We are here to assist you through every step of this process.</p>\n <p>Thank you for your cooperation and prompt attention to this matter.</p>"
|
|
101
|
+
},
|
|
102
|
+
{
|
|
103
|
+
actionTaxSubject: "Interest Income",
|
|
104
|
+
actionTitle: "Interest Income",
|
|
105
|
+
actionInstructions: "<p>In reviewing your financial activities for the tax year, you indicated receiving interest income. To accurately determine the taxability of this income and ensure compliance with tax regulations, we require additional details. Kindly provide the following information:</p>\n <ol>\n <li><b>Source of Interest Income:</b> Please specify the institution(s) or entity(ies) from which you received interest income (e.g., banks, credit unions).</li>\n <li><b>Amount Received:</b> Confirm the total amount of interest income received from each source during the tax year.</li>\n <li><b>Account Types:</b> Identify the type of accounts that generated the interest (e.g., savings, checking, certificates of deposit).</li>\n <li><b>Tax Forms Received:</b> List any tax forms you have received related to interest income, such as Form 1099-INT or Form 1099-OID.</li>\n <li><b>Foreign Interest:</b> If any interest income was earned from foreign accounts or sources, please provide details, including the country of origin.</li>\n </ol>\n <p>Providing these details will enable us to accurately assess the tax implications of your interest income and ensure your tax return is complete and correct. You can attach the requested documents and information by replying to this email or uploading them directly to our secure client portal.</p>\n <p>If you have any questions or require assistance in gathering this information, do not hesitate to contact us.</p>\n <p>Thank you for your prompt attention to this matter.</p>"
|
|
106
|
+
},
|
|
107
|
+
{
|
|
108
|
+
actionTaxSubject: "Bank Account Opening Gifts",
|
|
109
|
+
actionTitle: "Bank Account Opening Gifts",
|
|
110
|
+
actionInstructions: "<p>We are in the process of reviewing your tax situation and have noted that you received a gift for opening an account at a financial institution. To accurately determine the taxability of this income, we kindly request the following information:</p>\n <ol>\n <li>The name of the financial institution where the account was opened.</li>\n <li>The date the account was opened.</li>\n <li>A detailed description of the gift received (e.g., cash, merchandise, or services).</li>\n <li>The fair market value of the gift at the time it was received.</li>\n <li>Any documentation provided by the financial institution regarding the gift (e.g., a letter, email confirmation, or statement indicating the value of the gift).</li>\n <li>Confirmation if you have received more than one gift for opening accounts within the same tax year, and if so, the details for each.</li>\n </ol>\n <p>Please provide this information at your earliest convenience to ensure we can accurately assess the tax implications and comply with all IRS requirements.</p>\n <p>Thank you for your prompt attention to this matter.</p>"
|
|
111
|
+
},
|
|
112
|
+
{
|
|
113
|
+
actionTaxSubject: "CD Interest",
|
|
114
|
+
actionTitle: "CD Interest",
|
|
115
|
+
actionInstructions: "<p>To ensure accurate reporting of your income from Certificates of Deposit (CDs) for the tax year, we kindly request the following information. This is essential to comply with IRS regulations and to potentially optimize your tax benefits.</p>\n <ol>\n <li><strong>Name of the Bank or Financial Institution:</strong> Where the CD is held.</li>\n <li><strong>Account Number:</strong> This helps in identifying the specific CD.</li>\n <li><strong>Total Interest Earned:</strong> The amount of interest earned from the CD during the tax year.</li>\n <li><strong>CD Term:</strong> The duration or term of the CD (e.g., 6 months, 1 year).</li>\n <li><strong>Date of Purchase:</strong> When you originally acquired the CD.</li>\n <li><strong>Maturity Date:</strong> When the CD reached or will reach its full term.</li>\n <li><strong>1099-INT Forms:</strong> If received, please include copies of any 1099-INT forms associated with the CD interest.</li>\n </ol>\n <p>Please provide this information at your earliest convenience to ensure accurate and timely preparation of your tax documents. You may upload the documents directly through our secure client portal or arrange for a meeting to provide them in person.</p>\n <p>If you have any questions or need further assistance, do not hesitate to contact us.</p>\n <p>Thank you for your prompt attention to this matter.</p>"
|
|
116
|
+
},
|
|
117
|
+
{
|
|
118
|
+
actionTaxSubject: "Tax Exempt Interest",
|
|
119
|
+
actionTitle: "Tax Exempt Interest",
|
|
120
|
+
actionInstructions: "<p>We understand that you have received tax-exempt interest during the tax year, possibly from municipal bonds or similar investments. To accurately prepare your tax returns and ensure compliance with tax regulations, we kindly request the following information:</p>\n <ol>\n <li><strong>Statements of Tax-Exempt Interest:</strong> Please provide all 1099-INT forms or equivalent statements that detail your tax-exempt interest income for the tax year.</li>\n <li><strong>Details of Issuing Entities:</strong> A list or statement identifying the entities that issued the bonds or similar investments. This includes municipal, state, or federal entities.</li>\n <li><strong>Investment Detail:</strong> A breakdown of the investments contributing to tax-exempt interest. This should include the purchase date, purchase amounts, and any related maturity dates.</li>\n <li><strong>Brokerage Account Statements:</strong> Copies of your brokerage account statements that detail transactions and holdings in tax-exempt investments.</li>\n <li><strong>AMT (Alternative Minimum Tax) Consideration:</strong> If available, documentation indicating whether any of the tax-exempt interest is subject to the Alternative Minimum Tax.</li>\n </ol>\n <p>This information is crucial for an accurate and efficient tax preparation process. Please forward the requested documents at your earliest convenience. If you have any questions or need assistance in gathering this information, do not hesitate to contact us.</p>\n <p>Thank you for your cooperation and prompt attention to this matter.</p>"
|
|
121
|
+
},
|
|
122
|
+
{
|
|
123
|
+
actionTaxSubject: "Educational Savings Bond Interest",
|
|
124
|
+
actionTitle: "Educational Savings Bond Interest",
|
|
125
|
+
actionInstructions: "<p>We hope this message finds you well. As part of our continued effort to provide you with the best tax preparation services, we are reaching out to gather necessary documentation related to the interest you may have received from redeeming an Educational Savings Bond.</p>\n\n <p>To accurately assess the eligibility for exemption and to ensure compliance with the IRS, we kindly request you provide the following information:</p>\n <ol>\n <li>A copy of Form 1099-INT or similar statement provided by the financial institution, indicating the amount of interest received from the Educational Savings Bond.</li>\n <li>Detailed records of the Educational Savings Bonds redeemed during the tax year, including:\n <ul>\n <li>Bond serial numbers</li>\n <li>Issue dates</li>\n <li>Redemption dates</li>\n <li>Amounts</li>\n </ul>\n </li>\n <li>Receipts or documentation for qualified educational expenses paid during the year, including:\n <ul>\n <li>Tuition and fees</li>\n <li>Course materials</li>\n <li>Any other required expenses for enrollment or attendance at an eligible educational institution</li>\n </ul>\n </li>\n <li>Proof of enrollment from an eligible educational institution for the beneficiary of the bond.</li>\n </ol>\n <p>This information is crucial for determining the taxability of the interest income and potentially maximizing your tax benefits. We appreciate your prompt attention to this request and recommend compiling these documents at your earliest convenience.</p>\n <p>If you have any questions or need further assistance, please do not hesitate to contact our office directly.</p>\n <p>Thank you for your cooperation and trust in our services.</p>"
|
|
126
|
+
},
|
|
127
|
+
{
|
|
128
|
+
actionTaxSubject: "Dividend Income",
|
|
129
|
+
actionTitle: "Dividend Income",
|
|
130
|
+
actionInstructions: "<p>We are currently in the process of preparing your tax returns and have noted that you indicated receiving dividend income over the past tax year. To ensure we accurately report this income and optimize your tax situation, we kindly request the following documentation and information:</p>\n <ol>\n <li>All 1099-DIV forms received from corporations or mutual funds. This includes distributions of cash, stock, or other property.</li>\n <li>If applicable, details regarding any foreign dividends including the amount in foreign currency, the country of origin, and any foreign tax paid.</li>\n <li>For dividends reinvested, please provide statements or confirmations showing these transactions.</li>\n <li>Any other relevant documentation or information regarding dividends not covered by a 1099-DIV.</li>\n </ol>\n <p>Please ensure all documents are clear and legible to avoid any processing delays. We recommend securely uploading the requested information through our client portal or arranging a secure email transmission.</p>\n <p>Your prompt response is appreciated as it will help us in completing your tax preparations efficiently. If you have any questions or need clarification, do not hesitate to contact us.</p>"
|
|
101
131
|
}
|
|
102
132
|
];
|
|
103
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLXRheC1mcmFnbWVudHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYWN0aW9uLXRlbXMvYWN0aW9uLXRheC1mcmFnbWVudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFDLElBQU0sa0JBQWtCLEdBQUc7SUFDaEM7UUFDRSxnQkFBZ0IsRUFBRSx3QkFBd0I7UUFDMUMsV0FBVyxFQUFFLGdDQUFnQztRQUM3QyxrQkFBa0IsRUFBRSxnbENBUXVIO0tBQzVJO0lBQ0Q7UUFDRSxnQkFBZ0IsRUFBRSxzQkFBc0I7UUFDeEMsV0FBVyxFQUFFLHlEQUF5RDtRQUN0RSxrQkFBa0IsRUFBRSxzekRBMkIrTjtLQUNwUDtJQUNEO1FBQ0UsZ0JBQWdCLEVBQUUsWUFBWTtRQUM5QixXQUFXLEVBQUUsbUNBQW1DO1FBQ2hELGtCQUFrQixFQUFFLGcyREFhc0k7S0FDM0o7SUFDRDtRQUNFLGdCQUFnQixFQUFFLG1CQUFtQjtRQUNyQyxXQUFXLEVBQUUsMEJBQTBCO1FBQ3ZDLGtCQUFrQixFQUFFLDRrREFhME47S0FDL087SUFDRDtRQUNFLGdCQUFnQixFQUFFLGtCQUFrQjtRQUNwQyxXQUFXLEVBQUUsaUNBQWlDO1FBQzlDLGtCQUFrQixFQUFFLHV3REFhbUc7S0FDeEg7SUFDRDtRQUNFLGdCQUFnQixFQUFFLGtCQUFrQjtRQUNwQyxXQUFXLEVBQUUsMEJBQTBCO1FBQ3ZDLGtCQUFrQixFQUFFLCtnRUFXcU47S0FDMU87SUFDRDtRQUNFLGdCQUFnQixFQUFFLGlCQUFpQjtRQUNuQyxXQUFXLEVBQUUsaUJBQWlCO1FBQzlCLGtCQUFrQixFQUFFLHNwQ0FTdkI7S0FDRTtJQUNEO1FBQ0UsZ0JBQWdCLEVBQUUsMEJBQTBCO1FBQzVDLFdBQVcsRUFBRSwwQkFBMEI7UUFDdkMsa0JBQWtCLEVBQUUsd3VDQVlzSTtLQUMzSjtJQUNEO1FBQ0UsZ0JBQWdCLEVBQUUsOEJBQThCO1FBQ2hELFdBQVcsRUFBRSw4QkFBOEI7UUFDM0Msa0JBQWtCLEVBQUUseXREQVNvTTtLQUN6TjtJQUNEO1FBQ0UsZ0JBQWdCLEVBQUUsa0JBQWtCO1FBQ3BDLFdBQVcsRUFBRSxrQkFBa0I7UUFDL0Isa0JBQWtCLEVBQUUscWpEQVErSTtLQUNwSztJQUNEO1FBQ0UsZ0JBQWdCLEVBQUUsaUNBQWlDO1FBQ25ELFdBQVcsRUFBRSxvQ0FBb0M7UUFDakQsa0JBQWtCLEVBQUUsbytEQVU0UDtLQUNqUjtJQUNEO1FBQ0UsZ0JBQWdCLEVBQUUsMkJBQTJCO1FBQzdDLFdBQVcsRUFBRSwyQkFBMkI7UUFDeEMsa0JBQWtCLEVBQUUsMHdDQVN1QztLQUM1RDtJQUNEO1FBQ0UsZ0JBQWdCLEVBQUUseUJBQXlCO1FBQzNDLFdBQVcsRUFBRSx5QkFBeUI7UUFDdEMsa0JBQWtCLEVBQUUsMHJEQVc2RTtLQUNsRztJQUNEO1FBQ0UsZ0JBQWdCLEVBQUUsNkJBQTZCO1FBQy9DLFdBQVcsRUFBRSw2QkFBNkI7UUFDMUMsa0JBQWtCLEVBQUUsdzBEQVUwSjtLQUMvSztJQUNEO1FBQ0UsZ0JBQWdCLEVBQUUsa0JBQWtCO1FBQ3BDLFdBQVcsRUFBRSxhQUFhO1FBQzFCLGtCQUFrQixFQUFFLDA0Q0FVaUs7S0FDdEw7SUFDRDtRQUNFLGdCQUFnQixFQUFFLHlCQUF5QjtRQUMzQyxXQUFXLEVBQUUseUJBQXlCO1FBQ3RDLGtCQUFrQixFQUFFLG1tQ0FVMEY7S0FDL0c7SUFDRDtRQUNFLGdCQUFnQixFQUFFLDBCQUEwQjtRQUM1QyxXQUFXLEVBQUUsMEJBQTBCO1FBQ3ZDLGtCQUFrQixFQUFFLDY1REFTaUY7S0FDdEc7SUFDRDtRQUNFLGdCQUFnQixFQUFFLCtCQUErQjtRQUNqRCxXQUFXLEVBQUUsK0JBQStCO1FBQzVDLGtCQUFrQixFQUFFLG1yREFvQjRJO0tBQ2pLO0lBQ0Q7UUFDRSxnQkFBZ0IsRUFBRSxnQ0FBZ0M7UUFDbEQsV0FBVyxFQUFFLGdDQUFnQztRQUM3QyxrQkFBa0IsRUFBRSxtekRBVWdJO0tBQ3JKO0lBQ0Q7UUFDRSxnQkFBZ0IsRUFBRSxjQUFjO1FBQ2hDLFdBQVcsRUFBRSxjQUFjO1FBQzNCLGtCQUFrQixFQUFFLG11REFXdUQ7S0FDNUU7Q0FhRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IEFjdGlvblRheEZyYWdtZW50cyA9IFtcclxuICB7XHJcbiAgICBhY3Rpb25UYXhTdWJqZWN0OiBcIlByaW9yIFllYXIgVGF4IFJldHVybnNcIixcclxuICAgIGFjdGlvblRpdGxlOiBgUHJvdmlkZSBQcmlvciBZZWFyIFRheCBSZXR1cm5zYCxcclxuICAgIGFjdGlvbkluc3RydWN0aW9uczogYDxwPldlIGFyZSBpbiB0aGUgcHJvY2VzcyBvZiBwcmVwYXJpbmcgeW91ciB0YXggcmV0dXJucyBhbmQgcmVxdWlyZSB5b3VyIGFzc2lzdGFuY2UgdG8gZW5zdXJlIGFjY3VyYWN5IGFuZCBjb21wbGV0ZW5lc3MuIE9uZSBjcml0aWNhbCBwaWVjZSBvZiBpbmZvcm1hdGlvbiB3ZSBuZWVkIGlzIHlvdXIgPHN0cm9uZz5QcmlvciBZZWFyIFRheCBSZXR1cm5zPC9zdHJvbmc+LiBUaGlzIGRvY3VtZW50IGlzIGVzc2VudGlhbCBmb3Igc2V2ZXJhbCByZWFzb25zLCBpbmNsdWRpbmcgYnV0IG5vdCBsaW1pdGVkIHRvOiB2ZXJpZnlpbmcgY2FycnktZm9yd2FyZCBhbW91bnRzLCBjb21wYXJpbmcgeWVhci1vdmVyLXllYXIgaW5jb21lIGFuZCBkZWR1Y3Rpb25zLCBhbmQgZW5zdXJpbmcgY29tcGxpYW5jZSB3aXRoIHRheCBsYXdzLjwvcD5cclxuICAgIDxwPlRvIGZhY2lsaXRhdGUgeW91ciB0YXggcHJlcGFyYXRpb24sIHBsZWFzZSBwcm92aWRlIHRoZSBmb2xsb3dpbmc6PC9wPlxyXG4gICAgPG9sPlxyXG4gICAgICAgIDxsaT5BIGNvcHkgb2YgeW91ciA8c3Ryb25nPkZlZGVyYWwgdGF4IHJldHVybjwvc3Ryb25nPiBmb3IgdGhlIGxhc3QgdGF4IHllYXIuPC9saT5cclxuICAgICAgICA8bGk+QSBjb3B5IG9mIHlvdXIgPHN0cm9uZz5TdGF0ZSB0YXggcmV0dXJuPC9zdHJvbmc+IGZvciB0aGUgbGFzdCB0YXggeWVhciwgaWYgYXBwbGljYWJsZS48L2xpPlxyXG4gICAgICAgIDxsaT5BbnkgPHN0cm9uZz5ub3RpY2VzIG9yIGFtZW5kbWVudHM8L3N0cm9uZz4gcmVsYXRlZCB0byB5b3VyIHByaW9yIHllYXIgdGF4IHJldHVybnMuPC9saT5cclxuICAgIDwvb2w+XHJcbiAgICA8cD5JZiB5b3UgaGF2ZSBhbnkgZGlmZmljdWx0eSBpbiBnYXRoZXJpbmcgdGhlc2UgZG9jdW1lbnRzLCBwbGVhc2UgbGV0IHVzIGtub3cgYXMgc29vbiBhcyBwb3NzaWJsZSBzbyB3ZSBjYW4gZGlzY3VzcyBhbHRlcm5hdGl2ZSBzb2x1dGlvbnMuPC9wPlxyXG4gICAgPHA+V2UgYXBwcmVjaWF0ZSB5b3VyIHByb21wdCBhdHRlbnRpb24gdG8gdGhpcyByZXF1ZXN0LiBQcm92aWRpbmcgdGhlc2Ugd2lsbCBlbmFibGUgdXMgdG8gY29tcGxldGUgeW91ciB0YXggcHJlcGFyYXRpb24gd2l0aG91dCBkZWxheS48L3A+YCxcclxuICB9LFxyXG4gIHtcclxuICAgIGFjdGlvblRheFN1YmplY3Q6IFwiU3RhdHV0b3J5IEV4dGVuc2lvbnNcIixcclxuICAgIGFjdGlvblRpdGxlOiBgRGV0ZXJtaW5pbmcgRWxpZ2liaWxpdHkgZm9yIFN0YXR1dG9yeSBGaWxpbmcgRXh0ZW5zaW9uc2AsXHJcbiAgICBhY3Rpb25JbnN0cnVjdGlvbnM6IGA8cD5UbyBlbnN1cmUgdGhhdCB3ZSBjYW4gYWNjdXJhdGVseSBkZXRlcm1pbmUgaWYgeW91IHF1YWxpZnkgZm9yIHN0YXR1dG9yeSBmaWxpbmcgZXh0ZW5zaW9ucyBmb3IgeW91ciB0YXggcmV0dXJucywgd2UgcmVxdWlyZSBzcGVjaWZpYyBpbmZvcm1hdGlvbiBmcm9tIHlvdS4gUGxlYXNlIHNlZSBiZWxvdyB0aGUgY2F0ZWdvcmllcyBvZiBpbmZvcm1hdGlvbiBuZWVkZWQgYmFzZWQgb24gZGlmZmVyZW50IGVsaWdpYmlsaXR5IGNyaXRlcmlhOjwvcD5cclxuICAgIDxvbD5cclxuICAgICAgICA8bGk+PHN0cm9uZz5GZWRlcmFsIERpc2FzdGVyIEFyZWFzPC9zdHJvbmc+XHJcbiAgICAgICAgICAgIDx1bD5cclxuICAgICAgICAgICAgICAgIDxsaT5Db25maXJtYXRpb24gb2YgeW91ciBwcmltYXJ5IHJlc2lkZW5jZSBsb2NhdGlvbiBkdXJpbmcgdGhlIHRheCB5ZWFyLjwvbGk+XHJcbiAgICAgICAgICAgICAgICA8bGk+QW55IG9mZmljaWFsIGRvY3VtZW50YXRpb24gb3IgY29ycmVzcG9uZGVuY2UgcmVjZWl2ZWQgcmVnYXJkaW5nIGRpc2FzdGVyIGRlY2xhcmF0aW9ucyBpbiB5b3VyIGFyZWEuPC9saT5cclxuICAgICAgICAgICAgPC91bD5cclxuICAgICAgICA8L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPkxpdmluZyBBYnJvYWQ8L3N0cm9uZz5cclxuICAgICAgICAgICAgPHVsPlxyXG4gICAgICAgICAgICAgICAgPGxpPlByb29mIG9mIHJlc2lkZW5jZSBvdXRzaWRlIHRoZSBVbml0ZWQgU3RhdGVzIGZvciBtb3JlIHRoYW4gMzMwIGZ1bGwgZGF5cyB3aXRoaW4gYSAxMi1tb250aCBwZXJpb2QuPC9saT5cclxuICAgICAgICAgICAgICAgIDxsaT5Eb2N1bWVudGF0aW9uIHN1cHBvcnRpbmcgeW91ciBwaHlzaWNhbCBwcmVzZW5jZSBvciBib25hIGZpZGUgcmVzaWRlbmNlIGluIGEgZm9yZWlnbiBjb3VudHJ5LjwvbGk+XHJcbiAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5BY3RpdmUgTWlsaXRhcnk8L3N0cm9uZz5cclxuICAgICAgICAgICAgPHVsPlxyXG4gICAgICAgICAgICAgICAgPGxpPkRvY3VtZW50YXRpb24gaW5kaWNhdGluZyBhY3RpdmUgZHV0eSBzdGF0dXMsIGluY2x1ZGluZyBkYXRlcyBvZiBzZXJ2aWNlIHdpdGhpbiB0aGUgdGF4IHllYXIuPC9saT5cclxuICAgICAgICAgICAgICAgIDxsaT5JZiBhcHBsaWNhYmxlLCBvcmRlcnMgZm9yIG92ZXJzZWFzIGRlcGxveW1lbnQuPC9saT5cclxuICAgICAgICAgICAgPC91bD5cclxuICAgICAgICA8L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPkNvbWJhdCBab25lPC9zdHJvbmc+XHJcbiAgICAgICAgICAgIDx1bD5cclxuICAgICAgICAgICAgICAgIDxsaT5PZmZpY2lhbCBvcmRlcnMgZGVtb25zdHJhdGluZyB5b3VyIGRlcGxveW1lbnQgdG8gYSBjb21iYXQgem9uZSwgaW5jbHVkaW5nIHRoZSBzcGVjaWZpYyBkYXRlcy48L2xpPlxyXG4gICAgICAgICAgICAgICAgPGxpPkFueSByZWxldmFudCBjb21tdW5pY2F0aW9uIGZyb20gdGhlIERlcGFydG1lbnQgb2YgRGVmZW5zZSBvciBvdGhlciBvZmZpY2lhbCBib2RpZXMgcmVnYXJkaW5nIHlvdXIgc2VydmljZSBpbiBhIGNvbWJhdCB6b25lLjwvbGk+XHJcbiAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgPC9saT5cclxuICAgIDwvb2w+XHJcbiAgICA8cD5QbGVhc2UgZW5zdXJlIHRoYXQgeW91IHByb3ZpZGUgdGhpcyBpbmZvcm1hdGlvbiBhdCB5b3VyIGVhcmxpZXN0IGNvbnZlbmllbmNlIHRvIGZhY2lsaXRhdGUgdGhlIGFjY3VyYXRlIGFuZCB0aW1lbHkgcHJlcGFyYXRpb24gb2YgeW91ciB0YXggcmV0dXJucy4gSWYgeW91IGhhdmUgYW55IHF1ZXN0aW9ucyBvciBuZWVkIGZ1cnRoZXIgY2xhcmlmaWNhdGlvbiwgZG8gbm90IGhlc2l0YXRlIHRvIGNvbnRhY3QgdXMuPC9wPmBcclxuICB9LFxyXG4gIHtcclxuICAgIGFjdGlvblRheFN1YmplY3Q6IFwiRGVwZW5kZW50c1wiLFxyXG4gICAgYWN0aW9uVGl0bGU6IFwiUmVxdWVzdCBmb3IgRGVwZW5kZW50IEluZm9ybWF0aW9uXCIsXHJcbiAgICBhY3Rpb25JbnN0cnVjdGlvbnM6IGA8cD5XZSBhcmUgaW4gdGhlIHByb2Nlc3Mgb2YgcHJlcGFyaW5nIHlvdXIgdGF4IGRvY3VtZW50cyBhbmQgbmVlZCBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIHJlZ2FyZGluZyB5b3VyIGRlcGVuZGVudHMuIFRoaXMgaW5mb3JtYXRpb24gaXMgY3J1Y2lhbCBmb3IgYXBwbHlpbmcgdGhlIG1vc3QgYmVuZWZpY2lhbCBkZXBlbmRlbmN5IHRlc3RzLCBpbmNsdWRpbmcgcXVhbGlmaWNhdGlvbnMgZm9yIEhlYWQgb2YgSG91c2Vob2xkIChIT0gpLCBDaGlsZCBUYXggQ3JlZGl0LCBhbmQgb3RoZXIgcmVsYXRlZCBiZW5lZml0cy4gUGxlYXNlIHByb3ZpZGUgdGhlIGZvbGxvd2luZyBkZXRhaWxzIGZvciBlYWNoIG9mIHlvdXIgY2xhaW1lZCBkZXBlbmRlbnRzOjwvcD5cclxuICAgIDxvbD5cclxuICAgICAgICA8bGk+PHN0cm9uZz5GdWxsIE5hbWU6PC9zdHJvbmc+IFRoZSBjb21wbGV0ZSBsZWdhbCBuYW1lIG9mIHRoZSBkZXBlbmRlbnQuPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5Tb2NpYWwgU2VjdXJpdHkgTnVtYmVyIChTU04pIG9yIFRheHBheWVyIElkZW50aWZpY2F0aW9uIE51bWJlciAoVElOKTo8L3N0cm9uZz4gVGhpcyBpcyBuZWNlc3NhcnkgZm9yIGlkZW50aWZpY2F0aW9uIHB1cnBvc2VzLjwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+RGF0ZSBvZiBCaXJ0aDo8L3N0cm9uZz4gSGVscHMgdG8gZGV0ZXJtaW5lIGVsaWdpYmlsaXR5IGZvciBjZXJ0YWluIGNyZWRpdHMgbGlrZSB0aGUgQ2hpbGQgVGF4IENyZWRpdC48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPlJlbGF0aW9uc2hpcCB0byBZb3U6PC9zdHJvbmc+IFNwZWNpZnkgdGhlIGRlcGVuZGVudCdzIHJlbGF0aW9uc2hpcCAoc29uLCBkYXVnaHRlciwgc3RlcGNoaWxkLCBmb3N0ZXIgY2hpbGQsIGJyb3RoZXIsIHNpc3RlciwgZXRjLikgdG8geW91LjwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+UmVzaWRlbmN5Ojwvc3Ryb25nPiBDb25maXJtIHRoZSBkZXBlbmRlbnQgbGl2ZWQgd2l0aCB5b3UgZm9yIG1vcmUgdGhhbiBoYWxmIHRoZSB5ZWFyLjwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+RmluYW5jaWFsIFN1cHBvcnQ6PC9zdHJvbmc+IENvbmZpcm0geW91IHByb3ZpZGVkIG1vcmUgdGhhbiBoYWxmIG9mIHRoZSBkZXBlbmRlbnTigJlzIGZpbmFuY2lhbCBzdXBwb3J0IGZvciB0aGUgeWVhci48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPkNpdGl6ZW5zaGlwOjwvc3Ryb25nPiBDb25maXJtIHRoZSBkZXBlbmRlbnQgaXMgYSBVLlMuIGNpdGl6ZW4sIFUuUy4gbmF0aW9uYWwsIG9yIGEgcmVzaWRlbnQgYWxpZW4uPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5NYXJpdGFsIFN0YXR1czo8L3N0cm9uZz4gSW5kaWNhdGUgd2hldGhlciB0aGUgZGVwZW5kZW50IGlzIG1hcnJpZWQgYW5kLCBpZiBzbywgd2hldGhlciB0aGV5IGFyZSBmaWxpbmcgam9pbnRseS48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPkluY29tZSBJbmZvcm1hdGlvbjo8L3N0cm9uZz4gSWYgYXBwbGljYWJsZSwgcHJvdmlkZSBkZXRhaWxzIHJlZ2FyZGluZyBhbnkgaW5jb21lIHRoZSBkZXBlbmRlbnQgbWF5IGhhdmUgZWFybmVkIG9yIHJlY2VpdmVkLjwvbGk+XHJcbiAgICA8L29sPlxyXG4gICAgPHA+UGxlYXNlIGVuc3VyZSB5b3UgcHJvdmlkZSBjb21wbGV0ZSBhbmQgYWNjdXJhdGUgaW5mb3JtYXRpb24gdG8gYXZvaWQgYW55IGRlbGF5cyBpbiB0aGUgcHJvY2Vzc2luZyBvZiB5b3VyIHRheCByZXR1cm4uPC9wPlxyXG4gICAgPHA+VGhhbmsgeW91IGZvciB5b3VyIHByb21wdCBhdHRlbnRpb24gdG8gdGhpcyBtYXR0ZXIuIElmIHlvdSBoYXZlIGFueSBxdWVzdGlvbnMgb3IgcmVxdWlyZSBmdXJ0aGVyIGFzc2lzdGFuY2UsIHBsZWFzZSBkbyBub3QgaGVzaXRhdGUgdG8gY29udGFjdCB1cy48L3A+YFxyXG4gIH0sXHJcbiAge1xyXG4gICAgYWN0aW9uVGF4U3ViamVjdDogXCJIZWFkIG9mIEhvdXNlaG9sZFwiLFxyXG4gICAgYWN0aW9uVGl0bGU6IFwiSGVhZCBvZiBIb3VzZWhvbGQgRmlsaW5nXCIsXHJcbiAgICBhY3Rpb25JbnN0cnVjdGlvbnM6IGA8cD5UbyBlbnN1cmUgYWNjdXJhdGUgYW5kIGNvbXBsaWFudCB0YXggZmlsaW5nIHVuZGVyIHRoZSBcIkhlYWQgb2YgSG91c2Vob2xkXCIgc3RhdHVzLCB3ZSBraW5kbHkgcmVxdWVzdCB0aGUgZm9sbG93aW5nIGluZm9ybWF0aW9uLiBUaGlzIHN0YXR1cyBjYW4gcHJvdmlkZSBzaWduaWZpY2FudCB0YXggYmVuZWZpdHMsIGFuZCBpdCBpcyBjcnVjaWFsIHRoYXQgYWxsIElSUyByZXF1aXJlbWVudHMgYXJlIG1ldC4gUGxlYXNlIHByb3ZpZGU6PC9wPlxyXG4gICAgPG9sPlxyXG4gICAgPGxpPjxzdHJvbmc+TWFyaXRhbCBTdGF0dXM6PC9zdHJvbmc+IENvbmZpcm1hdGlvbiBvZiB5b3VyIG1hcml0YWwgc3RhdHVzIGFzIG9mIHRoZSBsYXN0IGRheSBvZiB0aGUgdGF4IHllYXIgKGUuZy4sIHNpbmdsZSwgZGl2b3JjZWQsIGxlZ2FsbHkgc2VwYXJhdGVkKS48L2xpPlxyXG4gICAgPGxpPjxzdHJvbmc+SG91c2Vob2xkIEV4cGVuc2VzOjwvc3Ryb25nPiBEZXRhaWxlZCByZWNvcmRzIGluZGljYXRpbmcgdGhhdCB5b3UgcGFpZCBtb3JlIHRoYW4gaGFsZiBvZiB0aGUgY29zdHMgb2Yga2VlcGluZyB1cCBhIGhvbWUgZm9yIHRoZSB0YXggeWVhci4gVGhpcyBpbmNsdWRlcyByZW50LCBtb3J0Z2FnZSBpbnRlcmVzdCwgcHJvcGVydHkgdGF4ZXMsIHV0aWxpdGllcywgcmVwYWlycywgbWFpbnRlbmFuY2UsIGFuZCBncm9jZXJpZXMuPC9saT5cclxuICAgIDxsaT48c3Ryb25nPlF1YWxpZnlpbmcgUGVyc29uOjwvc3Ryb25nPiBJbmZvcm1hdGlvbiBvbiB0aGUgcXVhbGlmeWluZyBwZXJzb24ocykgd2hvIGxpdmVkIHdpdGggeW91IGluIHRoZSBob21lIGZvciBtb3JlIHRoYW4gaGFsZiBvZiB0aGUgeWVhciwgZXhjZXB0IGZvciB0ZW1wb3JhcnkgYWJzZW5jZXMgc3VjaCBhcyBzY2hvb2wuIFBsZWFzZSBpbmNsdWRlOlxyXG4gICAgICA8dWw+XHJcbiAgICAgIDxsaT5GdWxsIG5hbWUgYW5kIHJlbGF0aW9uc2hpcCB0byB5b3UgKGUuZy4sIGNoaWxkLCBwYXJlbnQsIHNpYmxpbmcpLjwvbGk+XHJcbiAgICAgIDxsaT5EdXJhdGlvbiBvZiByZXNpZGVuY3kgYXQgeW91ciBob21lIGR1cmluZyB0aGUgdGF4IHllYXIuPC9saT5cclxuICAgICAgPGxpPlN1cHBvcnRpbmcgZG9jdW1lbnRzIChiaXJ0aCBjZXJ0aWZpY2F0ZXMsIHNjaG9vbCByZWNvcmRzLCBldGMuKSBwcm92aW5nIHRoZSByZXNpZGVuY3kgYW5kIHJlbGF0aW9uc2hpcC48L2xpPlxyXG4gICAgICA8L3VsPlxyXG4gICAgPC9saT5cclxuICAgIDxsaT48c3Ryb25nPkFkZGl0aW9uYWwgU3VwcG9ydDo8L3N0cm9uZz4gQW55IGZ1cnRoZXIgZG9jdW1lbnRhdGlvbiB0aGF0IGNhbiBzdXBwb3J0IHlvdXIgY2xhaW0gZm9yIHRoZSBIZWFkIG9mIEhvdXNlaG9sZCBmaWxpbmcgc3RhdHVzLjwvbGk+XHJcbiAgICA8L29sPlxyXG4gICAgPHA+UGxlYXNlIG5vdGUgdGhhdCBwcm92aWRpbmcgYWNjdXJhdGUgYW5kIGNvbXBsZXRlIGluZm9ybWF0aW9uIGlzIGVzc2VudGlhbCBmb3IgeW91ciBiZW5lZml0IGFuZCB0byBjb21wbHkgd2l0aCB0YXggbGF3cy4gU2hvdWxkIHlvdSBoYXZlIGFueSBxdWVzdGlvbnMgb3IgcmVxdWlyZSBhc3Npc3RhbmNlIGluIGdhdGhlcmluZyB0aGVzZSBkZXRhaWxzLCBkbyBub3QgaGVzaXRhdGUgdG8gY29udGFjdCB1cy48L3A+YFxyXG4gIH0sXHJcbiAge1xyXG4gICAgYWN0aW9uVGF4U3ViamVjdDogXCJSZXNpZGVuY3kgU3RhdHVzXCIsXHJcbiAgICBhY3Rpb25UaXRsZTogXCJJbmZvcm1hdGlvbiBvbiBSZXNpZGVuY3kgU3RhdHVzXCIsXHJcbiAgICBhY3Rpb25JbnN0cnVjdGlvbnM6IGA8cD5XZSB1bmRlcnN0YW5kIHRoYXQgZWl0aGVyIHlvdSBvciB5b3VyIHNwb3VzZSBpcyBub3QgYSBVLlMuIGNpdGl6ZW4uIFRvIGFjY3VyYXRlbHkgZGV0ZXJtaW5lIHlvdXIgdGF4IHN0YXR1cywgd2UgbmVlZCB0byBhcHBseSB0aGUgbmVjZXNzYXJ5IFRheCBSZXNpZGVuY3kgVGVzdHMsIHdoaWNoIGluY2x1ZGUgdGhlIDxzdHJvbmc+R3JlZW4gQ2FyZCBUZXN0PC9zdHJvbmc+IGFuZCB0aGUgPHN0cm9uZz5TdWJzdGFudGlhbCBQcmVzZW5jZSBUZXN0PC9zdHJvbmc+LiBUaGlzIHdpbGwgaGVscCB1cyBlbnN1cmUgeW91ciB0YXggcmV0dXJucyBhcmUgY29tcGxldGVkIGNvcnJlY3RseSBhbmQgY29tcGx5IHdpdGggVS5TLiByZWd1bGF0aW9ucy48L3A+XHJcblxyXG4gICAgPHA+VG8gcHJvY2VlZCwgd2Uga2luZGx5IGFzayB5b3UgdG8gcHJvdmlkZSB0aGUgZm9sbG93aW5nIGluZm9ybWF0aW9uOjwvcD5cclxuICAgIDxvbD5cclxuICAgICAgICA8bGk+PHN0cm9uZz5HcmVlbiBDYXJkIFN0YXR1czo8L3N0cm9uZz4gUGxlYXNlIGNvbmZpcm0gaWYgeW91IG9yIHlvdXIgc3BvdXNlIGhhdmUgYmVlbiBpc3N1ZWQgYSBVLlMuIGdyZWVuIGNhcmQgKExhd2Z1bCBQZXJtYW5lbnQgUmVzaWRlbnQgQ2FyZCkgYXQgYW55IHBvaW50IGR1cmluZyB0aGUgdGF4IHllYXIuIElmIHllcywgcHJvdmlkZSBhIGNvcHkgb2YgdGhlIGdyZWVuIGNhcmQgb3IgdGhlIG9mZmljaWFsIGRvY3VtZW50IGNvbmZpcm1pbmcgdGhlIHN0YXR1cy48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPkRhdGUgb2YgQXJyaXZhbCBpbiB0aGUgVS5TLjo8L3N0cm9uZz4gVGhlIGV4YWN0IGRhdGVzIHdoZW4geW91IGFuZC9vciB5b3VyIHNwb3VzZSBmaXJzdCBhcnJpdmVkIGluIHRoZSBVLlMuIGR1cmluZyB0aGUgdGF4IHllYXIuPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5UcmF2ZWwgSGlzdG9yeTo8L3N0cm9uZz4gQSBkZXRhaWxlZCBsaXN0IG9mIGFsbCB0aGUgZGF0ZXMgeW91IGFuZC9vciB5b3VyIHNwb3VzZSBlbnRlcmVkIGFuZCBsZWZ0IHRoZSBVLlMuIGR1cmluZyB0aGUgdGF4IHllYXIuIFRoaXMgaW5mb3JtYXRpb24gaXMgY3J1Y2lhbCBmb3IgdGhlIFN1YnN0YW50aWFsIFByZXNlbmNlIFRlc3QuPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5WaXNhIFR5cGU6PC9zdHJvbmc+IElmIHlvdSBvciB5b3VyIHNwb3VzZSBhcmUgb24gYSB2aXNhLCBwbGVhc2Ugc3BlY2lmeSB0aGUgdHlwZSBhbmQgcHJvdmlkZSBhIGNvcHkgb2YgdGhlIHZpc2EuPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5QcmV2aW91cyBZZWFyIFRheCBGaWxpbmdzOjwvc3Ryb25nPiBDb3BpZXMgb2YgbGFzdCB5ZWFyJ3MgdGF4IHJldHVybnMsIGlmIGFwcGxpY2FibGUuIFRoaXMgaW5mb3JtYXRpb24gY2FuIHByb3ZpZGUgY29udGV4dCBhbmQgaGVscCBkZXRlcm1pbmUgcmVzaWRlbmN5IHN0YXR1cyBtb3JlIGFjY3VyYXRlbHkuPC9saT5cclxuICAgIDwvb2w+XHJcblxyXG4gICAgPHA+UGxlYXNlIGVuc3VyZSBhbGwgZG9jdW1lbnRzIGFyZSBjbGVhciBhbmQgbGVnaWJsZS4gWW91IGNhbiBzZW5kIHRoZW0gdG8gdXMgdmlhIGVtYWlsIG9yIHRocm91Z2ggb3VyIHNlY3VyZSBjbGllbnQgcG9ydGFsLiBGb3IgYW55IHF1ZXN0aW9ucyBvciBhc3Npc3RhbmNlLCBmZWVsIGZyZWUgdG8gY29udGFjdCB1cyBkaXJlY3RseS48L3A+XHJcblxyXG4gICAgPHA+V2UgYXBwcmVjaWF0ZSB5b3VyIHByb21wdCBhdHRlbnRpb24gdG8gdGhpcyBtYXR0ZXIgYW5kIGxvb2sgZm9yd2FyZCB0byBhc3Npc3RpbmcgeW91IHdpdGggeW91ciB0YXggcHJlcGFyYXRpb24uPC9wPmBcclxuICB9LFxyXG4gIHtcclxuICAgIGFjdGlvblRheFN1YmplY3Q6IFwiSm9pbnQgVGF4IFJlbGllZlwiLFxyXG4gICAgYWN0aW9uVGl0bGU6IFwiSm9pbnQgVGF4IFJlbGllZiBEZXRhaWxzXCIsXHJcbiAgICBhY3Rpb25JbnN0cnVjdGlvbnM6IGA8cD5UbyBhc3Npc3QgeW91IGVmZmVjdGl2ZWx5IHdpdGggeW91ciByZXF1ZXN0IGZvciBqb2ludCB0YXggcmVsaWVmLCB3ZSBuZWVkIHRvIGNvbGxlY3Qgc3BlY2lmaWMgaW5mb3JtYXRpb24gdG8gdW5kZXJzdGFuZCB5b3VyIHNpdHVhdGlvbiB0aG9yb3VnaGx5LiBUaGlzIHdpbGwgaGVscCB1cyBkZXRlcm1pbmUgdGhlIG1vc3Qgc3VpdGFibGUgdHlwZSBvZiByZWxpZWYgZm9yIHlvdXIgY2lyY3Vtc3RhbmNlcywgd2hpY2ggbWF5IGluY2x1ZGUgSW5ub2NlbnQgU3BvdXNlIFJlbGllZiwgSW5qdXJlZCBTcG91c2UgQWxsb2NhdGlvbiwgU2VwYXJhdGlvbiBvZiBMaWFiaWxpdHkgUmVsaWVmLCBvciBFcXVpdGFibGUgUmVsaWVmLiBQbGVhc2UgcHJvdmlkZSB0aGUgZm9sbG93aW5nIGRvY3VtZW50cyBhbmQgaW5mb3JtYXRpb24gYXQgeW91ciBlYXJsaWVzdCBjb252ZW5pZW5jZTo8L3A+XHJcbiAgICA8b2w+XHJcbiAgICAgIDxsaT48c3Ryb25nPkNvbXBsZXRlIFRheCBSZXR1cm5zOjwvc3Ryb25nPiBDb3BpZXMgb2YgYWxsIHRheCByZXR1cm5zIGZvciB0aGUgeWVhcnMgeW91IGFyZSByZXF1ZXN0aW5nIHJlbGllZi48L2xpPlxyXG4gICAgICA8bGk+PHN0cm9uZz5EZXRhaWxlZCBTdGF0ZW1lbnQ6PC9zdHJvbmc+IEEgd3JpdHRlbiBzdGF0ZW1lbnQgZXhwbGFpbmluZyB3aHkgeW91IGJlbGlldmUgeW91IHF1YWxpZnkgZm9yIHJlbGllZiwgaW5jbHVkaW5nIGFueSBzcGVjaWZpYyBldmVudHMgb3IgY2lyY3Vtc3RhbmNlcyB5b3Ugd2FudCB1cyB0byBjb25zaWRlci48L2xpPlxyXG4gICAgICA8bGk+PHN0cm9uZz5JbmNvbWUgRG9jdW1lbnRhdGlvbjo8L3N0cm9uZz4gUHJvb2Ygb2YgeW91ciBjdXJyZW50IGluY29tZSBhbmQgdGhhdCBvZiB5b3VyIHNwb3VzZSBpZiBhcHBsaWNhYmxlLCBzdWNoIGFzIHJlY2VudCBwYXkgc3R1YnMsIFctMiBmb3Jtcywgb3Igb3RoZXIgaW5jb21lIHN0YXRlbWVudHMuPC9saT5cclxuICAgICAgPGxpPjxzdHJvbmc+UHJvb2Ygb2YgRmluYW5jaWFsIFNpdHVhdGlvbjo8L3N0cm9uZz4gRG9jdW1lbnRzIHNob3dpbmcgeW91ciBjdXJyZW50IGZpbmFuY2lhbCBzaXR1YXRpb24sIGluY2x1ZGluZyBiYW5rIHN0YXRlbWVudHMsIG1vbnRobHkgYmlsbHMsIGFuZCBhbnkgb3RoZXIgbGlhYmlsaXRpZXMuPC9saT5cclxuICAgICAgPGxpPjxzdHJvbmc+RG9jdW1lbnRhdGlvbiBvZiBNYXJpdGFsIFN0YXR1czo8L3N0cm9uZz4gSWYgYXBwbGljYWJsZSwgbGVnYWwgZG9jdW1lbnRzIHJlbGF0ZWQgdG8gc2VwYXJhdGlvbiwgZGl2b3JjZSwgb3IgYW5udWxtZW50LjwvbGk+XHJcbiAgICAgIDxsaT48c3Ryb25nPlByb29mIG9mIFJlc2lkZW5jZTo8L3N0cm9uZz4gRG9jdW1lbnRzIHRoYXQgcHJvdmUgd2hlcmUgZWFjaCBvZiB5b3UgaGFzIGxpdmVkIGR1cmluZyB0aGUgdGF4IHllYXJzIGluIHF1ZXN0aW9uLjwvbGk+XHJcbiAgICAgIDxsaT48c3Ryb25nPkFueSBDb3JyZXNwb25kZW5jZSBmcm9tIHRoZSBJUlM6PC9zdHJvbmc+IElmIHlvdSBoYXZlIHJlY2VpdmVkIGFueSBub3RpY2VzIG9yIGxldHRlcnMgZnJvbSB0aGUgSVJTIHJlZ2FyZGluZyB5b3VyIGpvaW50IHRheCBsaWFiaWxpdHksIHBsZWFzZSBpbmNsdWRlIGNvcGllcy48L2xpPlxyXG4gICAgPC9vbD5cclxuICAgIDxwPlBsZWFzZSBlbnN1cmUgYWxsIGRvY3VtZW50cyBhcmUgY2xlYXJseSBsZWdpYmxlLiBZb3UgbWF5IHNlbmQgdGhlbSB2aWEgZW1haWwsIG9yIHVwbG9hZC4gSWYgeW91IGhhdmUgYW55IHF1ZXN0aW9ucyBvciBuZWVkIGZ1cnRoZXIgY2xhcmlmaWNhdGlvbiBvbiB3aGF0IHRvIHByb3ZpZGUsIGRvbid0IGhlc2l0YXRlIHRvIHJlYWNoIG91dC48L3A+XHJcbiAgICA8cD5XZSB1bmRlcnN0YW5kIHRoYXQgdGhpcyBwcm9jZXNzIGNhbiBiZSBjb21wbGV4LCBidXQgd2UgYXJlIGhlcmUgdG8gZ3VpZGUgeW91IHRocm91Z2ggaXQuIE91ciBnb2FsIGlzIHRvIGVuc3VyZSB3ZSBoYXZlIGEgY29tcHJlaGVuc2l2ZSB1bmRlcnN0YW5kaW5nIG9mIHlvdXIgc2l0dWF0aW9uIHRvIGFkdm9jYXRlIGZvciB0aGUgbW9zdCBmYXZvcmFibGUgb3V0Y29tZSBvbiB5b3VyIGJlaGFsZi48L3A+YFxyXG4gIH0sXHJcbiAge1xyXG4gICAgYWN0aW9uVGF4U3ViamVjdDogXCIxMDk5IE5FQyBJbmNvbWVcIixcclxuICAgIGFjdGlvblRpdGxlOiBcIjEwOTkgTkVDIEluY29tZVwiLFxyXG4gICAgYWN0aW9uSW5zdHJ1Y3Rpb25zOiBgPHA+V2UgYXJlIGluIHRoZSBwcm9jZXNzIG9mIHByZXBhcmluZyB5b3VyIHRheCByZXR1cm4gYW5kIHJlcXVpcmUgYSBjb21wcmVoZW5zaXZlIHVuZGVyc3RhbmRpbmcgb2YgYWxsIHlvdXIgc291cmNlcyBvZiBpbmNvbWUuIFNwZWNpZmljYWxseSwgd2UgbmVlZCB0byBhY2NvdW50IGZvciB5b3VyIDEwOTkgTkVDIEluY29tZS4gVGhlIDEwOTktTkVDIGZvcm0gaXMgY3J1Y2lhbCBmb3IgY29ycmVjdGx5IHJlcG9ydGluZyB5b3VyIG5vbi1lbXBsb3llZSBjb21wZW5zYXRpb24uPC9wPlxyXG4gICAgPHA+VG8gZW5zdXJlIGEgdGhvcm91Z2ggYW5kIGFjY3VyYXRlIHRheCBwcmVwYXJhdGlvbiwgcGxlYXNlIHByb3ZpZGUgdXMgd2l0aCB0aGUgZm9sbG93aW5nOjwvcD5cclxuICAgIDxvbD5cclxuICAgICAgICA8bGk+PGI+QWxsIDEwOTktTkVDIGZvcm1zPC9iPiB5b3UgcmVjZWl2ZWQgZm9yIHRoZSB0YXggeWVhci48L2xpPlxyXG4gICAgICAgIDxsaT5EZXRhaWxzIG9mIGFueSA8Yj5hZGRpdGlvbmFsIG5vbi1lbXBsb3llZSBjb21wZW5zYXRpb248L2I+IG5vdCByZXBvcnRlZCBvbiBhIDEwOTktTkVDIGZvcm0uPC9saT5cclxuICAgICAgICA8bGk+SW5mb3JtYXRpb24gcmVnYXJkaW5nIDxiPmV4cGVuc2VzIHJlbGF0ZWQgdG8geW91ciAxMDk5IE5FQyBpbmNvbWU8L2I+LCBpZiBhcHBsaWNhYmxlLjwvbGk+XHJcbiAgICA8L29sPlxyXG4gICAgPHA+SWYgeW91IGhhdmUgbm90IHlldCByZWNlaXZlZCBhbGwgeW91ciAxMDk5LU5FQyBmb3JtcywgcGxlYXNlIGxldCB1cyBrbm93LCBhbmQgcHJvdmlkZSBhbiBlc3RpbWF0ZSBvZiB3aGVuIHlvdSBleHBlY3QgdG8gcmVjZWl2ZSB0aGVtLiBUaGlzIGluZm9ybWF0aW9uIGlzIGNyaXRpY2FsIGZvciBhY2N1cmF0ZWx5IHJlcG9ydGluZyB5b3VyIGluY29tZSBhbmQgYXZvaWRpbmcgcG90ZW50aWFsIHBlbmFsdGllcyBvciBhdWRpdHMgZnJvbSB0aGUgSVJTLjwvcD5cclxuICAgIDxwPlBsZWFzZSByZWFjaCBvdXQgdG8gdXMgZGlyZWN0bHkgc2hvdWxkIHlvdSBoYXZlIGFueSBxdWVzdGlvbnMgb3IgbmVlZCBmdXJ0aGVyIGNsYXJpZmljYXRpb24uIFlvdXIgcHJvbXB0IHJlc3BvbnNlIGlzIGdyZWF0bHkgYXBwcmVjaWF0ZWQgdG8gZW5zdXJlIHlvdXIgdGF4IHJldHVybiBpcyBwcm9jZXNzZWQgZWZmaWNpZW50bHkgYW5kIGFjY3VyYXRlbHkuPC9wPlxyXG5gXHJcbiAgfSxcclxuICB7XHJcbiAgICBhY3Rpb25UYXhTdWJqZWN0OiBcIlNjaGVkdWxlIEstMSBJbmZvcm1hdGlvblwiLFxyXG4gICAgYWN0aW9uVGl0bGU6IFwiU2NoZWR1bGUgSy0xIEluZm9ybWF0aW9uXCIsXHJcbiAgICBhY3Rpb25JbnN0cnVjdGlvbnM6IGA8cD5XZSB1bmRlcnN0YW5kIHRoYXQgeW91IGhhdmUgaW5kaWNhdGVkIHRoZSBwcmVzZW5jZSBvZiBTY2hlZHVsZSBLIGluY29tZSBmb3IgdGhlIGN1cnJlbnQgdGF4IHllYXIuIEluIG9yZGVyIHRvIGVuc3VyZSB0aGUgYWNjdXJhY3kgYW5kIGNvbXBsZXRlbmVzcyBvZiB5b3VyIHRheCByZXR1cm4sIGl0IGlzIGltcGVyYXRpdmUgdGhhdCB3ZSBnYXRoZXIgYWxsIG5lY2Vzc2FyeSBkb2N1bWVudHMgcmVsYXRlZCB0byB0aGlzIGluY29tZS48L3A+XHJcbiAgICA8cD5JZiB3ZSBhcmUgcHJlcGFyaW5nIHlvdXIgYnVzaW5lc3MgcmV0dXJuLCByZXN0IGFzc3VyZWQgdGhhdCB3ZSB3aWxsIGdlbmVyYXRlIHRoZSBhcHBsaWNhYmxlIFNjaGVkdWxlIEstMShzKSBmb3IgeW91ciBidXNpbmVzcyBpbnRlcmVzdHMuIEhvd2V2ZXIsIGl0IGlzIGVzc2VudGlhbCB0aGF0IHdlIGNvbGxlY3QgY29waWVzIG9mIDxzdHJvbmc+YWxsIG90aGVyIFNjaGVkdWxlIEstMXM8L3N0cm9uZz4geW91IG1heSBoYXZlIHJlY2VpdmVkIHRvIGluY29ycG9yYXRlIGludG8geW91ciBwZXJzb25hbCB0YXggcmV0dXJuLjwvcD4gIFxyXG4gICAgPGgzPlNwZWNpZmljIERvY3VtZW50IFJlcXVlc3Q6PC9oMz5cclxuICAgIDxvbD5cclxuICAgICAgICA8bGk+QW55IGFuZCBhbGwgU2NoZWR1bGUgSy0xKHMpIHlvdSBoYXZlIHJlY2VpdmVkIGZyb206PC9saT5cclxuICAgICAgICA8dWw+XHJcbiAgICAgICAgICAgIDxsaT5QYXJ0bmVyc2hpcHM8L2xpPlxyXG4gICAgICAgICAgICA8bGk+UyBDb3Jwb3JhdGlvbnM8L2xpPlxyXG4gICAgICAgICAgICA8bGk+RXN0YXRlIG9yIFRydXN0czwvbGk+XHJcbiAgICAgICAgPC91bD5cclxuICAgIDwvb2w+XHJcbiAgICA8cD5QbGVhc2UgZW5zdXJlIHRoYXQgYWxsIGRvY3VtZW50cyBhcmUgPHN0cm9uZz5jbGVhciBhbmQgbGVnaWJsZTwvc3Ryb25nPiB0byBwcmV2ZW50IGFueSBkZWxheXMgaW4gcHJvY2Vzc2luZyB5b3VyIHJldHVybi4gWW91IG1heSBzdWJtaXQgdGhlc2UgZG9jdW1lbnRzIHRocm91Z2ggb3VyIHNlY3VyZSBjbGllbnQgcG9ydGFsLCBvciBjb250YWN0IHVzIHRvIG1ha2UgYWx0ZXJuYXRpdmUgYXJyYW5nZW1lbnRzIGlmIG5lY2Vzc2FyeS48L3A+XHJcbiAgICA8cD5XZSBhcHByZWNpYXRlIHlvdXIgcHJvbXB0IGF0dGVudGlvbiB0byB0aGlzIHJlcXVlc3QuIFNob3VsZCB5b3UgaGF2ZSBhbnkgcXVlc3Rpb25zIG9yIHJlcXVpcmUgYW55IGFzc2lzdGFuY2UsIHBsZWFzZSBkbyBub3QgaGVzaXRhdGUgdG8gcmVhY2ggb3V0LjwvcD5gXHJcbiAgfSxcclxuICB7XHJcbiAgICBhY3Rpb25UYXhTdWJqZWN0OiBcIk90aGVyIFNlbGYtRW1wbG95bWVudCBJbmNvbWVcIixcclxuICAgIGFjdGlvblRpdGxlOiBcIk90aGVyIFNlbGYtRW1wbG95bWVudCBJbmNvbWVcIixcclxuICAgIGFjdGlvbkluc3RydWN0aW9uczogYDxwPldlIGFyZSBpbiB0aGUgcHJvY2VzcyBvZiBwcmVwYXJpbmcgeW91ciB0YXhlcyBhbmQgaGF2ZSBub3RlZCB0aGF0IHlvdSBoYXZlIGluZGljYXRlZCB0aGUgcHJlc2VuY2Ugb2Ygc2VsZi1lbXBsb3ltZW50IGluY29tZSBub3QgcmVwb3J0ZWQgdGhyb3VnaCAxMDk5LU5FQyBmb3JtcyBvciBhIFNjaGVkdWxlIEstMS4gVG8gZW5zdXJlIHlvdXIgdGF4IHJldHVybiBpcyBhY2N1cmF0ZSBhbmQgbWF4aW1pemVzIHlvdXIgYmVuZWZpdHMsIGl0J3MgY3J1Y2lhbCB3ZSBnYXRoZXIgbW9yZSBkZXRhaWxzIGFib3V0IHRoZXNlIHNvdXJjZXMgb2YgaW5jb21lLiBQbGVhc2UgcHJvdmlkZSB0aGUgZm9sbG93aW5nIGluZm9ybWF0aW9uOjwvcD5cclxuICAgIDxvbD5cclxuICAgICAgICA8bGk+PHN0cm9uZz5EZXNjcmlwdGlvbiBvZiBlYWNoIHNlbGYtZW1wbG95bWVudCBhY3Rpdml0eTo8L3N0cm9uZz4gQnJpZWZseSBkZXNjcmliZSB0aGUgbmF0dXJlIG9mIGVhY2ggYWN0aXZpdHkgZnJvbSB3aGljaCB5b3UgZGVyaXZlIHNlbGYtZW1wbG95bWVudCBpbmNvbWUuPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5EYXRlcyBvZiBvcGVyYXRpb246PC9zdHJvbmc+IEZvciBlYWNoIHNlbGYtZW1wbG95bWVudCBhY3Rpdml0eSwgc3BlY2lmeSB0aGUgZGF0ZXMgb3IgcmFuZ2Ugb2YgZGF0ZXMgZHVyaW5nIHdoaWNoIHlvdSBlYXJuZWQgaW5jb21lLjwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+VG90YWwgaW5jb21lIGdlbmVyYXRlZDo8L3N0cm9uZz4gRm9yIGVhY2ggYWN0aXZpdHksIHByb3ZpZGUgdGhlIHRvdGFsIGFtb3VudCBvZiBpbmNvbWUgZWFybmVkIGJlZm9yZSBhbnkgZXhwZW5zZXMuPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5FeHBlbnNlcyBpbmN1cnJlZDo8L3N0cm9uZz4gTGlzdCBhbGwgZXhwZW5zZXMgcmVsYXRlZCB0byBlYWNoIHNlbGYtZW1wbG95bWVudCBhY3Rpdml0eS4gUGxlYXNlIGNhdGVnb3JpemUgdGhlc2UgZXhwZW5zZXMgKGUuZy4sIG9mZmljZSBzdXBwbGllcywgdHJhdmVsLCBhZHZlcnRpc2luZykuPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5SZWNvcmRzIG9yIGRvY3VtZW50YXRpb246PC9zdHJvbmc+IEFueSBleGlzdGluZyByZWNvcmRzIG9yIGRvY3VtZW50YXRpb24gdGhhdCBjb3Jyb2JvcmF0ZSB5b3VyIGluY29tZSBhbmQgZXhwZW5zZXMsIHN1Y2ggYXMgYmFuayBzdGF0ZW1lbnRzLCByZWNlaXB0cywgaW52b2ljZXMsIG9yIGNvbnRyYWN0cy48L2xpPlxyXG4gICAgPC9vbD5cclxuICAgIDxwPlRoaXMgaW5mb3JtYXRpb24gaXMgdml0YWwgZm9yIGRldGVybWluaW5nIHRoZSBjb3JyZWN0IGFtb3VudCBvZiB0YXggeW91IG93ZSBhbmQgaWRlbnRpZnlpbmcgYW55IHBvdGVudGlhbCBkZWR1Y3Rpb25zIHRoYXQgY2FuIG1pbmltaXplIHlvdXIgdGF4IGxpYWJpbGl0eS4gUGxlYXNlIHByb3ZpZGUgdGhlc2UgZGV0YWlscyBhdCB5b3VyIGVhcmxpZXN0IGNvbnZlbmllbmNlIHRvIGVuc3VyZSBhIHNtb290aCBhbmQgZWZmaWNpZW50IHRheCBwcmVwYXJhdGlvbiBwcm9jZXNzLjwvcD5cclxuICAgIDxwPklmIHlvdSBoYXZlIGFueSBxdWVzdGlvbnMgb3IgbmVlZCBhc3Npc3RhbmNlIGluIGdhdGhlcmluZyB0aGlzIGluZm9ybWF0aW9uLCBwbGVhc2UgZG8gbm90IGhlc2l0YXRlIHRvIGNvbnRhY3QgdXMuIFlvdXIgdGltZWx5IGNvb3BlcmF0aW9uIGlzIGdyZWF0bHkgYXBwcmVjaWF0ZWQsIGFuZCB3ZSBhcmUgaGVyZSB0byBoZWxwIGV2ZXJ5IHN0ZXAgb2YgdGhlIHdheS48L3A+YFxyXG4gIH0sXHJcbiAge1xyXG4gICAgYWN0aW9uVGF4U3ViamVjdDogXCJFbXBsb3ltZW50IFdhZ2VzXCIsXHJcbiAgICBhY3Rpb25UaXRsZTogXCJFbXBsb3ltZW50IFdhZ2VzXCIsXHJcbiAgICBhY3Rpb25JbnN0cnVjdGlvbnM6IGA8cD5UaGFuayB5b3UgZm9yIGVudHJ1c3RpbmcgdXMgd2l0aCB0aGUgcHJlcGFyYXRpb24gb2YgeW91ciB0YXggcmV0dXJucy4gQXMgcGFydCBvZiBvdXIgY29tcHJlaGVuc2l2ZSByZXZpZXcgYW5kIGluIG91ciBxdWVzdCB0byBlbnN1cmUgdGhlIGFjY3VyYWN5IG9mIHlvdXIgdGF4IGZpbGluZ3MsIHdlIHVuZGVyc3RhbmQgdGhhdCB5b3UgaGF2ZSByZWNlaXZlZCB3YWdlcyBmcm9tIGVtcGxveW1lbnQgb3ZlciB0aGUgcGFzdCB0YXggeWVhci48L3A+XHJcbiAgICA8cD5UbyBwcm9jZWVkIGVmZmVjdGl2ZWx5LCB3ZSBraW5kbHkgcmVxdWVzdCB0aGUgZm9sbG93aW5nIGRvY3VtZW50cyBhbmQgaW5mb3JtYXRpb246PC9wPlxyXG4gICAgPG9sPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPlctMiBGb3Jtczo8L3N0cm9uZz4gUGxlYXNlIHByb3ZpZGUgY29waWVzIG9mIGFsbCBXLTIgZm9ybXMgcmVjZWl2ZWQgZnJvbSB5b3VyIGVtcGxveWVycy4gVGhpcyBpbmNsdWRlcyB3YWdlcyBlYXJuZWQgZnJvbSBhbGwgc291cmNlcywgbm90IGp1c3QgZnJvbSB0aGUgUy1Db3Jwb3JhdGlvbiwgaWYgYXBwbGljYWJsZS48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPlZlcmlmaWNhdGlvbiBvZiBTLUNvcnBvcmF0aW9uIFdhZ2VzOjwvc3Ryb25nPiBJZiB3ZSBhcmUgYWxzbyBoYW5kbGluZyB5b3VyIGJ1c2luZXNzIHRheGVzIGZvciBhbiBTLUNvcnBvcmF0aW9uLCB3ZSBsaWtlbHkgaGF2ZSB0aGUgd2FnZSBpbmZvcm1hdGlvbiBmb3IgdGhhdCBlbnRpdHkuIEhvd2V2ZXIsIGZvciB0aG9yb3VnaG5lc3MgYW5kIGNvbXBsaWFuY2UsIHBsZWFzZSBjb25maXJtIGlmIHRoZSB3YWdlcyBmcm9tIHRoZSBTLUNvcnBvcmF0aW9uIGFyZSBmdWxseSByZXByZXNlbnRlZCBpbiB0aGUgZG9jdW1lbnRzIHdlIGFscmVhZHkgaG9sZC4gVGhpcyB3aWxsIGhlbHAgdXMgdmVyaWZ5IHRoYXQgYWxsIGluY29tZSBpcyBhY2N1cmF0ZWx5IHJlcG9ydGVkLjwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+QWRkaXRpb25hbCBJbmNvbWUgRG9jdW1lbnRzOjwvc3Ryb25nPiBTaG91bGQgeW91IGhhdmUgb3RoZXIgc291cmNlcyBvZiB3YWdlIGluY29tZSAoZS5nLiwgY29udHJhY3Qgd29yaywgYm9udXNlcywgZXRjLikgbm90IGNvdmVyZWQgYnkgdGhlIFctMiBmb3JtcyBwcm92aWRlZCwgcGxlYXNlIGluY2x1ZGUgYW55IDEwOTkgZm9ybXMgb3Igb3RoZXIgcmVsZXZhbnQgZG9jdW1lbnRhdGlvbi48L2xpPlxyXG4gICAgPC9vbD5cclxuICAgIDxwPllvdXIgY29vcGVyYXRpb24gaXMgY3J1Y2lhbCBmb3IgZW5zdXJpbmcgYSBzbW9vdGggYW5kIGVmZmljaWVudCB0YXggcHJlcGFyYXRpb24gcHJvY2Vzcy4gS2luZGx5IHByb3ZpZGUgdGhlIHJlcXVlc3RlZCBkb2N1bWVudHMgYW5kIGluZm9ybWF0aW9uIGF0IHlvdXIgZWFybGllc3QgY29udmVuaWVuY2UuPC9wPlxyXG4gICAgPHA+SWYgeW91IGhhdmUgYW55IHF1ZXN0aW9ucyBvciBuZWVkIGZ1cnRoZXIgY2xhcmlmaWNhdGlvbiwgcGxlYXNlIGRvIG5vdCBoZXNpdGF0ZSB0byBjb250YWN0IHVzIGRpcmVjdGx5LiBUaGFuayB5b3UgZm9yIHlvdXIgcHJvbXB0IGF0dGVudGlvbiB0byB0aGlzIG1hdHRlci48L3A+YFxyXG4gIH0sXHJcbiAge1xyXG4gICAgYWN0aW9uVGF4U3ViamVjdDogXCJQcm9wZXJ0eSBvciBTZXJ2aWNlcyBMaWV1IFdhZ2VzXCIsXHJcbiAgICBhY3Rpb25UaXRsZTogXCJQcm9wZXJ0eS9TZXJ2aWNlcyBpbiBMaWV1IG9mIFdhZ2VzXCIsXHJcbiAgICBhY3Rpb25JbnN0cnVjdGlvbnM6IGA8cD5XZSBhcmUgY3VycmVudGx5IGluIHRoZSBwcm9jZXNzIG9mIHByZXBhcmluZyB5b3VyIHRheCByZXR1cm4gYW5kIGhhdmUgbm90ZWQgdGhhdCB5b3UgcmVjZWl2ZWQgcHJvcGVydHkgYW5kL29yIHNlcnZpY2VzIGluIGxpZXUgb2YgdHJhZGl0aW9uYWwgd2FnZXMgZHVyaW5nIHRoZSB0YXggeWVhci4gVGhpcyB0eXBlIG9mIGNvbXBlbnNhdGlvbiBjb25zdGl0dXRlcyB0YXhhYmxlIGluY29tZSBhbmQgbXVzdCBiZSBhY2N1cmF0ZWx5IHJlcG9ydGVkIHRvIGVuc3VyZSB5b3VyIHRheCByZXR1cm4gaXMgZnVsbHkgY29tcGxpYW50IHdpdGggSVJTIHJlZ3VsYXRpb25zLjwvcD5cclxuICAgIDxwPlRvIGFjY3VyYXRlbHkgcmVjb2duaXplIGFuZCByZXBvcnQgdGhlc2UgaXRlbXMgYXMgdGF4YWJsZSBpbmNvbWUsIHdlIHJlcXVpcmUgdGhlIGZvbGxvd2luZyBkZXRhaWxlZCBpbmZvcm1hdGlvbjo8L3A+XHJcbiAgICA8b2w+XHJcbiAgICA8bGk+PHN0cm9uZz5EZXNjcmlwdGlvbiBvZiBQcm9wZXJ0eSBvciBTZXJ2aWNlczo8L3N0cm9uZz4gUHJvdmlkZSBhIGRldGFpbGVkIGRlc2NyaXB0aW9uIG9mIGFueSBwcm9wZXJ0eSBvciBzZXJ2aWNlcyB5b3UgcmVjZWl2ZWQuIFBsZWFzZSBpbmNsdWRlIHBoeXNpY2FsIGNoYXJhY3RlcmlzdGljcyBmb3IgcHJvcGVydHkgb3IgdGhlIHNjb3BlIG9mIHNlcnZpY2VzIHJlbmRlcmVkLjwvbGk+XHJcbiAgICA8bGk+PHN0cm9uZz5GYWlyIE1hcmtldCBWYWx1ZSBhdCBUaW1lIG9mIFJlY2VpcHQ6PC9zdHJvbmc+IEluZGljYXRlIHRoZSBmYWlyIG1hcmtldCB2YWx1ZSAoRk1WKSBvZiBlYWNoIHByb3BlcnR5IG9yIHNlcnZpY2UgYXQgdGhlIHRpbWUgeW91IHJlY2VpdmVkIGl0LiBJZiB5b3UgaGF2ZSBhbnkgYXBwcmFpc2FscyBvciBkb2N1bWVudHMgdG8gc3VwcG9ydCB0aGUgRk1WLCBwbGVhc2UgaW5jbHVkZSB0aGVtLjwvbGk+XHJcbiAgICA8bGk+PHN0cm9uZz5Eb2N1bWVudGF0aW9uIG9yIEFncmVlbWVudHM6PC9zdHJvbmc+IFByb3ZpZGUgYW55IGRvY3VtZW50YXRpb24gb3Igd3JpdHRlbiBhZ3JlZW1lbnRzIHRoYXQgZGV0YWlsIHRoZSBhcnJhbmdlbWVudCBmb3IgcmVjZWl2aW5nIHByb3BlcnR5IG9yIHNlcnZpY2VzIGluIGxpZXUgb2Ygd2FnZXMuIFRoaXMgY2FuIGluY2x1ZGUgY29udHJhY3RzLCBlbWFpbHMsIG9yIGFueSBmb3JtIG9mIGNvbW11bmljYXRpb24gdGhhdCBvdXRsaW5lcyB0aGUgYWdyZWVtZW50LjwvbGk+XHJcbiAgICA8bGk+PHN0cm9uZz5EYXRlIG9mIFJlY2VpcHQ6PC9zdHJvbmc+IFNwZWNpZnkgdGhlIGRhdGUocykgb24gd2hpY2ggeW91IHJlY2VpdmVkIHRoZSBwcm9wZXJ0eSBvciBzZXJ2aWNlcy48L2xpPlxyXG4gICAgPGxpPjxzdHJvbmc+RW1wbG95ZXIvUHJvdmlkZXIgSW5mb3JtYXRpb246PC9zdHJvbmc+IFByb3ZpZGUgdGhlIG5hbWUgYW5kIGNvbnRhY3QgaW5mb3JtYXRpb24gb2YgdGhlIGluZGl2aWR1YWwgb3IgZW50aXR5IHRoYXQgcHJvdmlkZWQgdGhlIHByb3BlcnR5IG9yIHNlcnZpY2VzLjwvbGk+XHJcbiAgICA8L29sPlxyXG4gICAgPHA+UGxlYXNlIGVuc3VyZSB0aGF0IGFsbCBwcm92aWRlZCBpbmZvcm1hdGlvbiBpcyBhcyBhY2N1cmF0ZSBhbmQgY29tcGxldGUgYXMgcG9zc2libGUuIEluY29tcGxldGUgb3IgaW5hY2N1cmF0ZSBpbmZvcm1hdGlvbiBtYXkgbGVhZCB0byBkZWxheXMgaW4gdGhlIHByZXBhcmF0aW9uIG9mIHlvdXIgdGF4IHJldHVybiBvciBwb3RlbnRpYWwgaXNzdWVzIHdpdGggdGhlIElSUy48L3A+XHJcbiAgICA8cD5JZiB5b3UgaGF2ZSBhbnkgcXVlc3Rpb25zIG9yIG5lZWQgY2xhcmlmaWNhdGlvbiByZWdhcmRpbmcgdGhlIGluZm9ybWF0aW9uIHJlcXVlc3RlZCwgcGxlYXNlIGRvIG5vdCBoZXNpdGF0ZSB0byBjb250YWN0IHVzIGRpcmVjdGx5LiBZb3VyIHByb21wdCBhdHRlbnRpb24gdG8gdGhpcyByZXF1ZXN0IGlzIGdyZWF0bHkgYXBwcmVjaWF0ZWQgYW5kIGNyaXRpY2FsIGZvciB0aGUgdGltZWx5IGFuZCBhY2N1cmF0ZSBjb21wbGV0aW9uIG9mIHlvdXIgdGF4IHJldHVybi48L3A+YFxyXG4gIH0sXHJcbiAge1xyXG4gICAgYWN0aW9uVGF4U3ViamVjdDogXCJFbXBsb3llZSBBY2NvdW50YWJsZSBQbGFuXCIsXHJcbiAgICBhY3Rpb25UaXRsZTogXCJFbXBsb3llZSBBY2NvdW50YWJsZSBQbGFuXCIsXHJcbiAgICBhY3Rpb25JbnN0cnVjdGlvbnM6IGA8cD5XZSBhcmUgaW4gdGhlIHByb2Nlc3Mgb2YgcHJlcGFyaW5nIHlvdXIgdGF4IHJldHVybiBhbmQgbm90aWNlZCB5b3UndmUgbWVudGlvbmVkIGJlaW5nIHJlaW1idXJzZWQgZm9yIGNlcnRhaW4gZXhwZW5zZXMgdW5kZXIgYW4gRW1wbG95ZWUgQWNjb3VudGFibGUgUGxhbi4gVG8gYWNjdXJhdGVseSBhY2NvdW50IGZvciB0aGVzZSByZWltYnVyc2VtZW50cyBhbmQgZW5zdXJlIGNvbXBsaWFuY2Ugd2l0aCBJUlMgcnVsZXMsIHdlIGtpbmRseSByZXF1ZXN0IHRoZSBmb2xsb3dpbmcgZG9jdW1lbnRzIGFuZCBpbmZvcm1hdGlvbjo8L3A+XHJcbiAgICA8b2w+XHJcbiAgICAgICAgPGxpPkEgY29weSBvZiB0aGUgZm9ybWFsIHdyaXR0ZW4gQWNjb3VudGFibGUgUGxhbiBwcm92aWRlZCBieSB5b3VyIGVtcGxveWVyLiBUaGlzIHNob3VsZCBvdXRsaW5lIHRoZSBleHBlbnNlIGFsbG93YW5jZSBhbmQgdGhlIHNwZWNpZmljcyBvZiB0aGUgcmVpbWJ1cnNlbWVudCBwb2xpY3kuPC9saT5cclxuICAgICAgICA8bGk+QW55IGRvY3VtZW50YXRpb24gb3IgY29ycmVzcG9uZGVuY2UgZnJvbSB5b3VyIGVtcGxveWVyIGNvbmZpcm1pbmcgeW91ciBwYXJ0aWNpcGF0aW9uIGluIHRoZSBBY2NvdW50YWJsZSBQbGFuLjwvbGk+XHJcbiAgICAgICAgPGxpPkRldGFpbHMgb2YgdGhlIGV4cGVuc2VzIHJlaW1idXJzZWQgdW5kZXIgdGhlIHBsYW4sIGluY2x1ZGluZyBkYXRlcywgYW1vdW50cywgYW5kIHRoZSBuYXR1cmUgb2YgdGhlIGV4cGVuc2VzLjwvbGk+XHJcbiAgICAgICAgPGxpPlByb29mIG9mIGV4cGVuc2UgKHJlY2VpcHRzIG9yIGludm9pY2VzKSBwcm92aWRlZCB0byB5b3VyIGVtcGxveWVyIGZvciByZWltYnVyc2VtZW50IHVuZGVyIHRoZSBwbGFuLjwvbGk+XHJcbiAgICAgICAgPGxpPkFueSBhZGRpdGlvbmFsIGRvY3VtZW50YXRpb24gb3IgaW5mb3JtYXRpb24gcmVsZXZhbnQgdG8gdGhlIHJlaW1idXJzZW1lbnRzIG9yIHRoZSBBY2NvdW50YWJsZSBQbGFuLjwvbGk+XHJcbiAgICA8L29sPlxyXG4gICAgPHA+UGxlYXNlIHNlbmQgdXMgdGhpcyBpbmZvcm1hdGlvbiBhdCB5b3VyIGVhcmxpZXN0IGNvbnZlbmllbmNlIHRvIGVuc3VyZSB3ZSBjYW4gcHJvY2VlZCBzbW9vdGhseSB3aXRoIHlvdXIgdGF4IHJldHVybiBwcmVwYXJhdGlvbi4gSWYgeW91IGhhdmUgYW55IHF1ZXN0aW9ucyBvciBuZWVkIGZ1cnRoZXIgY2xhcmlmaWNhdGlvbiwgZG8gbm90IGhlc2l0YXRlIHRvIHJlYWNoIG91dC48L3A+XHJcbiAgICA8cD5UaGFuayB5b3UgZm9yIHlvdXIgcHJvbXB0IGF0dGVudGlvbiB0byB0aGlzIG1hdHRlci48L3A+YFxyXG4gIH0sXHJcbiAge1xyXG4gICAgYWN0aW9uVGF4U3ViamVjdDogXCJUYXhhYmxlIEZyaW5nZSBCZW5lZml0c1wiLFxyXG4gICAgYWN0aW9uVGl0bGU6IFwiVGF4YWJsZSBGcmluZ2UgQmVuZWZpdHNcIixcclxuICAgIGFjdGlvbkluc3RydWN0aW9uczogYFxyXG4gICAgPHA+V2UgYXJlIGluIHRoZSBwcm9jZXNzIG9mIGVuc3VyaW5nIGFsbCBmb3JtcyBvZiBjb21wZW5zYXRpb24sIGluY2x1ZGluZyB0YXhhYmxlIGZyaW5nZSBiZW5lZml0cywgYXJlIGFjY3VyYXRlbHkgcmVwb3J0ZWQgb24geW91ciB0YXggcmV0dXJucy4gQmFzZWQgb24gb3VyIHByZXZpb3VzIGNvbW11bmljYXRpb24sIGl0IGFwcGVhcnMgeW91IG1heSBoYXZlIHJlY2VpdmVkIGJlbmVmaXRzIHRoYXQgbmVlZCB0byBiZSByZXZpZXdlZCBmdXJ0aGVyLiBUbyBhc3Npc3QgeW91IHByb3Blcmx5LCB3ZSByZXF1ZXN0IHRoZSBmb2xsb3dpbmcgc3BlY2lmaWMgZGV0YWlsczo8L3A+XHJcbjxvbD5cclxuICA8bGk+PHN0cm9uZz5EZXNjcmlwdGlvbiBvZiBlYWNoIGJlbmVmaXQgcmVjZWl2ZWQ6PC9zdHJvbmc+IFBsZWFzZSBwcm92aWRlIGEgYnJpZWYgZGVzY3JpcHRpb24gb2YgdGhlIGZyaW5nZSBiZW5lZml0cyByZWNlaXZlZCBkdXJpbmcgdGhlIHRheCB5ZWFyLCBpbmNsdWRpbmcgYnV0IG5vdCBsaW1pdGVkIHRvIGNvbXBhbnkgY2FycywgbWVtYmVyc2hpcHMsIGVkdWNhdGlvbmFsIGFzc2lzdGFuY2UsIGV0Yy48L2xpPlxyXG4gIDxsaT48c3Ryb25nPlZhbHVlIG9mIGVhY2ggYmVuZWZpdDo8L3N0cm9uZz4gVGhlIGZhaXIgbWFya2V0IHZhbHVlIChGTVYpIG9mIGVhY2ggYmVuZWZpdC4gSWYgeW91J3JlIHVuc3VyZSwgcGxlYXNlIHByb3ZpZGUgYW4gZXN0aW1hdGUgYW5kIHRoZSBiYXNpcyBmb3IgdGhpcyBlc3RpbWF0ZS48L2xpPlxyXG4gIDxsaT48c3Ryb25nPkFueSBhbW91bnRzIGNvbnRyaWJ1dGVkIGJ5IHlvdTo8L3N0cm9uZz4gSWYgeW91IG1hZGUgY29udHJpYnV0aW9ucyB0b3dhcmQgdGhlIGNvc3Qgb2YgYW55IGJlbmVmaXQsIHBsZWFzZSBzcGVjaWZ5IHRoZSBhbW91bnRzIGFuZCBmb3Igd2hpY2ggYmVuZWZpdHMuPC9saT5cclxuICA8bGk+PHN0cm9uZz5CZW5lZml0IGRvY3VtZW50YXRpb246PC9zdHJvbmc+IEFueSBhdmFpbGFibGUgZG9jdW1lbnRhdGlvbiB0aGF0IGNhbiBzdXBwb3J0IHRoZSBpbmZvcm1hdGlvbiBwcm92aWRlZCwgc3VjaCBhcyBzdGF0ZW1lbnRzLCBhZ3JlZW1lbnRzLCBvciByZWNlaXB0cy48L2xpPlxyXG4gIDxsaT48c3Ryb25nPkRhdGVzOjwvc3Ryb25nPiBUaGUgcGVyaW9kIGR1cmluZyB3aGljaCB5b3UgcmVjZWl2ZWQgdGhlc2UgYmVuZWZpdHMuIEluY2x1ZGUgc3BlY2lmaWMgZGF0ZXMgaWYgcG9zc2libGUuPC9saT5cclxuICA8bGk+PHN0cm9uZz5FbXBsb3llciBJbmZvcm1hdGlvbjo8L3N0cm9uZz4gVGhlIG5hbWUgYW5kIGNvbnRhY3QgaW5mb3JtYXRpb24gb2YgdGhlIGVtcGxveWVyKHMpIHByb3ZpZGluZyB0aGVzZSBiZW5lZml0cy48L2xpPlxyXG48L29sPlxyXG48cD5UaGlzIGluZm9ybWF0aW9uIGlzIGNydWNpYWwgZm9yIGFjY3VyYXRlbHkgZGV0ZXJtaW5pbmcgdGhlIHRheGFibGUgdmFsdWUgb2YgdGhlc2UgZnJpbmdlIGJlbmVmaXRzIGFuZCBlbnN1cmluZyBjb21wbGlhbmNlIHdpdGggSVJTIHJlZ3VsYXRpb25zLiBJZiB5b3UgaGF2ZSBhbnkgcXVlc3Rpb25zIG9yIG5lZWQgYXNzaXN0YW5jZSBpbiBnYXRoZXJpbmcgdGhpcyBpbmZvcm1hdGlvbiwgcGxlYXNlIGRvbid0IGhlc2l0YXRlIHRvIGNvbnRhY3QgdXMuPC9wPlxyXG48cD5XZSBhcHByZWNpYXRlIHlvdXIgcHJvbXB0IGF0dGVudGlvbiB0byB0aGlzIG1hdHRlciBhbmQgbG9vayBmb3J3YXJkIHRvIGFzc2lzdGluZyB5b3UgZnVydGhlci48L3A+YFxyXG4gIH0sXHJcbiAge1xyXG4gICAgYWN0aW9uVGF4U3ViamVjdDogXCJOb24gVGF4YWJsZSBGcmluZ2UgQmVuZWZpdHNcIixcclxuICAgIGFjdGlvblRpdGxlOiBcIk5vbiBUYXhhYmxlIEZyaW5nZSBCZW5lZml0c1wiLFxyXG4gICAgYWN0aW9uSW5zdHJ1Y3Rpb25zOiBgPHA+V2UgYXJlIGluIHRoZSBwcm9jZXNzIG9mIGZpbmFsaXppbmcgeW91ciB0YXggcmV0dXJuIGFuZCBoYXZlIGlkZW50aWZpZWQgcG90ZW50aWFsIG5vbi10YXhhYmxlIGZyaW5nZSBiZW5lZml0cyB0aGF0IG1heSBhcHBseSB0byB5b3VyIHNpdHVhdGlvbi4gVG8gZW5zdXJlIGFjY3VyYXRlIHJlcG9ydGluZyBhbmQgb3B0aW1pemUgeW91ciB0YXggb3V0Y29tZSwgd2Uga2luZGx5IHJlcXVlc3QgdGhlIGZvbGxvd2luZyBkZXRhaWxlZCBpbmZvcm1hdGlvbiByZWdhcmRpbmcgYW55IG5vbi10YXhhYmxlIGZyaW5nZSBiZW5lZml0cyB5b3UgbWF5IGhhdmUgcmVjZWl2ZWQ6PC9wPlxyXG4gICAgPG9sPlxyXG4gICAgICA8bGk+PHN0cm9uZz5EZXNjcmlwdGlvbiBvZiBlYWNoIGJlbmVmaXQ6PC9zdHJvbmc+IFBsZWFzZSBwcm92aWRlIGEgZGV0YWlsZWQgZGVzY3JpcHRpb24gb2YgdGhlIG5vbi10YXhhYmxlIGZyaW5nZSBiZW5lZml0cyByZWNlaXZlZCBkdXJpbmcgdGhlIHRheCB5ZWFyLiBUaGlzIG1heSBpbmNsdWRlIGhlYWx0aCBzYXZpbmdzIGFjY291bnRzIChIU0FzKSwgZW1wbG95ZWUgZGlzY291bnRzLCBwdWJsaWMgdHJhbnNpdCBwYXNzZXMsIGV0Yy48L2xpPlxyXG4gICAgICA8bGk+PHN0cm9uZz5WYWx1ZSBvZiBlYWNoIGJlbmVmaXQ6PC9zdHJvbmc+IFRoZSBmYWlyIG1hcmtldCB2YWx1ZSAoRk1WKSBvZiBlYWNoIGJlbmVmaXQuIEZvciBub24tdGF4YWJsZSBiZW5lZml0cywgdGhpcyBoZWxwcyBpbiByZWNvcmQta2VlcGluZyBhbmQgY29uZmlybWluZyBleGVtcHRpb24gc3RhdHVzLjwvbGk+XHJcbiAgICAgIDxsaT48c3Ryb25nPkNvbnRyaWJ1dGlvbiBhbW91bnRzLCBpZiBhbnk6PC9zdHJvbmc+IElmIHlvdSBoYXZlIGNvbnRyaWJ1dGVkIHRvd2FyZHMgYW55IG9mIHRoZXNlIGJlbmVmaXRzLCBpbmRpY2F0ZSB0aGUgYW1vdW50cyBhbmQgZm9yIHdoaWNoIGJlbmVmaXRzLjwvbGk+XHJcbiAgICAgIDxsaT48c3Ryb25nPkJlbmVmaXQgZG9jdW1lbnRhdGlvbjo8L3N0cm9uZz4gQW55IGRvY3VtZW50YXRpb24gdGhhdCBjYW4gY29ycm9ib3JhdGUgdGhlIGluZm9ybWF0aW9uIHByb3ZpZGVkLCBzdWNoIGFzIHN0YXRlbWVudHMsIGFncmVlbWVudHMsIG9yIHJlY2VpcHRzLjwvbGk+XHJcbiAgICAgIDxsaT48c3Ryb25nPkRhdGVzIG9mIHJlY2VpcHQ6PC9zdHJvbmc+IFRoZSB0aW1lZnJhbWUgZHVyaW5nIHdoaWNoIHlvdSByZWNlaXZlZCB0aGVzZSBiZW5lZml0cy4gSW5jbHVkZSBhcyBwcmVjaXNlIGRhdGVzIGFzIHBvc3NpYmxlLjwvbGk+XHJcbiAgICAgIDxsaT48c3Ryb25nPkVtcGxveWVyIG9yIHByb3ZpZGVyIGluZm9ybWF0aW9uOjwvc3Ryb25nPiBUaGUgbmFtZSBhbmQgY29udGFjdCBkZXRhaWxzIG9mIHRoZSBlbXBsb3llcihzKSBvciB0aGlyZC1wYXJ0eSBwcm92aWRlcihzKSBvZmZlcmluZyB0aGVzZSBiZW5lZml0cy48L2xpPlxyXG4gICAgPC9vbD5cclxuICAgIDxwPkdhdGhlcmluZyB0aGlzIGluZm9ybWF0aW9uIGhlbHBzIGVuc3VyZSB0aGF0IHlvdXIgdGF4IGZpbGluZ3MgYXJlIGFjY3VyYXRlIGFuZCB0aGF0IHlvdSByZWNlaXZlIHRoZSBmdWxsIGFkdmFudGFnZSBvZiBub24tdGF4YWJsZSBmcmluZ2UgYmVuZWZpdHMuIFBsZWFzZSBsZXQgdXMga25vdyBpZiB5b3UgbmVlZCBhbnkgaGVscCBpZGVudGlmeWluZyBvciBkb2N1bWVudGluZyB0aGVzZSBiZW5lZml0cy48L3A+XHJcbiAgICA8cD5Zb3VyIHByb21wdCByZXNwb25zZSBpcyBoaWdobHkgYXBwcmVjaWF0ZWQgYXMgd2Ugc3RyaXZlIHRvIGNvbXBsZXRlIHlvdXIgdGF4IHByZXBhcmF0aW9uIGVmZmljaWVudGx5LiBTaG91bGQgeW91IGhhdmUgYW55IHF1ZXN0aW9ucywgZmVlbCBmcmVlIHRvIGNvbnRhY3QgdXMgZGlyZWN0bHkuPC9wPmBcclxuICB9LFxyXG4gIHtcclxuICAgIGFjdGlvblRheFN1YmplY3Q6IFwiVmV0ZXJhbiBCZW5lZml0c1wiLFxyXG4gICAgYWN0aW9uVGl0bGU6IFwiVkEgQmVuZWZpdHNcIixcclxuICAgIGFjdGlvbkluc3RydWN0aW9uczogYDxwPldlIGhvcGUgdGhpcyBtZXNzYWdlIGZpbmRzIHlvdSB3ZWxsLiBBcyBwYXJ0IG9mIG91ciBvbmdvaW5nIGVmZm9ydCB0byBlbnN1cmUgdGhlIGFjY3VyYWN5IGFuZCBjb21wbGV0ZW5lc3Mgb2YgeW91ciB0YXggcmV0dXJuLCB3ZSB1bmRlcnN0YW5kIHRoYXQgeW91IGhhdmUgcmVjZWl2ZWQgVmV0ZXJhbiBCZW5lZml0cyBkdXJpbmcgdGhlIHRheCB5ZWFyLiBUbyBhY2N1cmF0ZWx5IGFzc2VzcyB0aGUgdGF4IGltcGxpY2F0aW9ucyBvZiB0aGVzZSBiZW5lZml0cywgd2Uga2luZGx5IHJlcXVlc3QgYWRkaXRpb25hbCBpbmZvcm1hdGlvbi48L3A+XHJcbiAgICA8cD5UbyBhc3Npc3QgdXMgaW4gdGhpcyB0YXNrLCBwbGVhc2UgcHJvdmlkZSB0aGUgZm9sbG93aW5nIGluZm9ybWF0aW9uOjwvcD5cclxuICAgIDxvbD5cclxuICAgICAgICA8bGk+QSBkZXRhaWxlZCBsaXN0IG9mIHRoZSBWZXRlcmFuIEJlbmVmaXRzIHlvdSByZWNlaXZlZCwgaW5jbHVkaW5nIGFueSBkaXNhYmlsaXR5LCBlZHVjYXRpb24sIGFuZCBwZW5zaW9uIGJlbmVmaXRzLjwvbGk+XHJcbiAgICAgICAgPGxpPk9mZmljaWFsIGRvY3VtZW50YXRpb24gZm9yIGVhY2ggdHlwZSBvZiBiZW5lZml0IHJlY2VpdmVkLCBzdWNoIGFzIGF3YXJkIGxldHRlcnMgb3Igc3RhdGVtZW50cyBmcm9tIHRoZSBEZXBhcnRtZW50IG9mIFZldGVyYW5zIEFmZmFpcnMgKFZBKS48L2xpPlxyXG4gICAgICAgIDxsaT5BbnkgY29ycmVzcG9uZGVuY2UgZnJvbSB0aGUgVkEgb3Igb3RoZXIgcmVsZXZhbnQgZW50aXRpZXMgcmVnYXJkaW5nIHRoZSB0YXhhYmlsaXR5IG9mIHlvdXIgYmVuZWZpdHMuPC9saT5cclxuICAgICAgICA8bGk+VG90YWwgYW1vdW50IHJlY2VpdmVkIGZvciBlYWNoIGJlbmVmaXQgdGhyb3VnaG91dCB0aGUgdGF4IHllYXIuPC9saT5cclxuICAgICAgICA8bGk+QW55IG90aGVyIHN1cHBvcnRpbmcgZG9jdW1lbnRhdGlvbiB0aGF0IGNhbiBwcm92aWRlIGNsYXJpdHkgb24gdGhlIG5hdHVyZSBhbmQgYW1vdW50IG9mIHlvdXIgVmV0ZXJhbiBCZW5lZml0cy48L2xpPlxyXG4gICAgPC9vbD5cclxuICAgIDxwPlRoaXMgaW5mb3JtYXRpb24gaXMgY3J1Y2lhbCBmb3IgZGV0ZXJtaW5pbmcgd2hpY2ggYmVuZWZpdHMgYXJlIHRheGFibGUgYW5kIGVuc3VyaW5nIHlvdXIgdGF4IHJldHVybiBpcyBjb21wbGV0ZSBhbmQgYWNjdXJhdGUuIFBsZWFzZSBzdWJtaXQgdGhlc2UgZG9jdW1lbnRzIGF0IHlvdXIgZWFybGllc3QgY29udmVuaWVuY2UuPC9wPlxyXG4gICAgPHA+SWYgeW91IGhhdmUgYW55IHF1ZXN0aW9ucyBvciByZXF1aXJlIGFzc2lzdGFuY2UgaW4gZ2F0aGVyaW5nIHRoZXNlIGRvY3VtZW50cywgcGxlYXNlIGRvIG5vdCBoZXNpdGF0ZSB0byBjb250YWN0IHVzLiBUaGFuayB5b3UgZm9yIHlvdXIgY29vcGVyYXRpb24gYW5kIHRydXN0IGluIG91ciBzZXJ2aWNlcy48L3A+YFxyXG4gIH0sXHJcbiAge1xyXG4gICAgYWN0aW9uVGF4U3ViamVjdDogXCJMaWZlIEluc3VyYW5jZSBQYXltZW50c1wiLFxyXG4gICAgYWN0aW9uVGl0bGU6IFwiTGlmZSBJbnN1cmFuY2UgUGF5bWVudHNcIixcclxuICAgIGFjdGlvbkluc3RydWN0aW9uczogYDxwPldlIGhhdmUgbm90ZWQgeW91ciBtZW50aW9uIG9mIHJlY2VpdmluZyBsaWZlIGluc3VyYW5jZSBwYXltZW50cyBkdXJpbmcgdGhlIHRheCB5ZWFyLiBUbyBhY2N1cmF0ZWx5IGFzc2VzcyB0aGUgdGF4IGltcGxpY2F0aW9ucyBhbmQgZW5zdXJlIHRoZXNlIHByb2NlZWRzIGFyZSBpbmRlZWQgbm9uLXRheGFibGUsIHdlIHJlcXVpcmUgdGhlIGZvbGxvd2luZyBkZXRhaWxzOjwvcD5cclxuICAgIDxvbD5cclxuICAgICAgPGxpPlRoZSB0b3RhbCBhbW91bnQgcmVjZWl2ZWQgZnJvbSBsaWZlIGluc3VyYW5jZSBwYXltZW50cy48L2xpPlxyXG4gICAgICA8bGk+RG9jdW1lbnRhdGlvbiBvciBzdGF0ZW1lbnRzIHBlcnRhaW5pbmcgdG8gdGhlIGxpZmUgaW5zdXJhbmNlIHBheW1lbnRzLjwvbGk+XHJcbiAgICAgIDxsaT5UaGUgbmFtZSBvZiB0aGUgaW5zdXJlZCBpbmRpdmlkdWFsIGFuZCB0aGVpciByZWxhdGlvbnNoaXAgdG8geW91LjwvbGk+XHJcbiAgICAgIDxsaT5BbnkgY29tbXVuaWNhdGlvbnMgb3IgbGV0dGVycyBmcm9tIHRoZSBpbnN1cmFuY2UgY29tcGFueSByZWdhcmRpbmcgdGhlIHRheCBzdGF0dXMgb2YgdGhlc2UgcGF5bWVudHMuPC9saT5cclxuICAgICAgPGxpPkRldGFpbHMgcmVnYXJkaW5nIGlmIHRoZSBwb2xpY3kgd2FzIHB1cmNoYXNlZCB3aXRoIGFmdGVyLXRheCBvciBwcmUtdGF4IGRvbGxhcnMuPC9saT5cclxuICAgICAgPGxpPklmIGFueSBwb3J0aW9uIG9mIHRoZSBsaWZlIGluc3VyYW5jZSBwYXltZW50IHdhcyBhbiBpbnZlc3RtZW50IHJldHVybiwgcGxlYXNlIHByb3ZpZGUgcmVsYXRlZCBkb2N1bWVudHMuPC9saT5cclxuICAgIDwvb2w+XHJcbiAgICA8cD5UaGlzIGluZm9ybWF0aW9uIGlzIGNydWNpYWwgZm9yIHVzIHRvIGd1YXJhbnRlZSB0aGUgYWNjdXJhY3kgYW5kIGludGVncml0eSBvZiB5b3VyIHRheCByZXR1cm4uIFBsZWFzZSBwcm92aWRlIHRoZSByZXF1ZXN0ZWQgZG9jdW1lbnRzIGFuZCBpbmZvcm1hdGlvbiBhdCB5b3VyIGVhcmxpZXN0IGNvbnZlbmllbmNlLjwvcD5cclxuICAgIDxwPlNob3VsZCB5b3UgaGF2ZSBhbnkgcXVlc3Rpb25zIG9yIG5lZWQgZnVydGhlciBhc3Npc3RhbmNlLCBmZWVsIGZyZWUgdG8gY29udGFjdCB1cy4gV2UncmUgaGVyZSB0byBoZWxwITwvcD5gXHJcbiAgfSxcclxuICB7XHJcbiAgICBhY3Rpb25UYXhTdWJqZWN0OiBcIk1lZGljYXJlIFdhaXZlciBQYXltZW50c1wiLFxyXG4gICAgYWN0aW9uVGl0bGU6IFwiTWVkaWNhcmUgV2FpdmVyIFBheW1lbnRzXCIsXHJcbiAgICBhY3Rpb25JbnN0cnVjdGlvbnM6IGA8cD5XZSBob3BlIHRoaXMgbWVzc2FnZSBmaW5kcyB5b3Ugd2VsbC4gQXMgd2UgcHJvY2VlZCB3aXRoIHByZXBhcmluZyB5b3VyIHRheCByZXR1cm5zLCB3ZSBub3RlZCB0aGF0IHlvdSBoYXZlIHJlY2VpdmVkIE1lZGljYXJlIFdhaXZlciBQYXltZW50cyB1bmRlciB0aGUgZGlmZmljdWx0eS1vZi1jYXJlIHByb3Zpc2lvbnMgZHVyaW5nIHRoZSB0YXggeWVhci4gVG8gZW5zdXJlIHdlIG1heGltaXplIHlvdXIgZWxpZ2libGUgaW5jb21lIGV4Y2x1c2lvbnMsIGl0J3MgY3J1Y2lhbCB3ZSB2ZXJpZnkgY2VydGFpbiBpbmZvcm1hdGlvbiByZWdhcmRpbmcgeW91ciBsaXZpbmcgYXJyYW5nZW1lbnQsIGFzIHBlciBJUlMgZ3VpZGVsaW5lcy48L3A+XHJcbiAgICA8cD5UbyBhc3Npc3QgdXMgaW4gY29uZmlybWluZyB0aGF0IHRoZXNlIHBheW1lbnRzIHF1YWxpZnkgZm9yIGluY29tZSBleGNsdXNpb24sIHBsZWFzZSBwcm92aWRlIHRoZSBmb2xsb3dpbmcgaW5mb3JtYXRpb246PC9wPlxyXG4gICAgPG9sPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPlByb29mIG9mIFJlc2lkZW5jZTo8L3N0cm9uZz4gRG9jdW1lbnRzIHByb3ZpbmcgdGhhdCB5b3UgYW5kIHRoZSBpbmRpdmlkdWFsIHVuZGVyIGNhcmUgc2hhcmVkIHRoZSBzYW1lIHByaW1hcnkgcmVzaWRlbmNlIGR1cmluZyB0aGUgcmVjZWlwdCBvZiB0aGVzZSBwYXltZW50cy4gVGhpcyBjb3VsZCBpbmNsdWRlIHV0aWxpdHkgYmlsbHMsIGEgcmVudGFsIGFncmVlbWVudCwgb3IgaG9tZW93bmVyJ3MgaW5zdXJhbmNlIGluIGJvdGggb2YgeW91ciBuYW1lcy48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPkRldGFpbHMgb2YgdGhlIENhcmUgUmVjaXBpZW50Ojwvc3Ryb25nPiBJbmZvcm1hdGlvbiBhYm91dCB0aGUgcGVyc29uIHJlY2VpdmluZyBjYXJlLCBpbmNsdWRpbmcgdGhlaXIgcmVsYXRpb25zaGlwIHRvIHlvdSBhbmQgYW55IGRvY3VtZW50YXRpb24gdGhhdCBpZGVudGlmaWVzIHRoZWlyIG5lZWQgZm9yIGNhcmUgKGUuZy4sIGEgbGV0dGVyIGZyb20gYSBoZWFsdGhjYXJlIHByb3ZpZGVyKS48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPlBheW1lbnQgUmVjb3Jkczo8L3N0cm9uZz4gQW55IHJlY29yZHMgb2YgdGhlIE1lZGljYXJlIFdhaXZlciBQYXltZW50cyB5b3UgcmVjZWl2ZWQsIGFzIHRoaXMgd2lsbCBoZWxwIHVzIGRldGVybWluZSB0aGUgZXhhY3QgYW1vdW50cyBhbmQgdGhlIHBlcmlvZHMgY292ZXJlZC48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPkFueSBGb3JtYWwgQWdyZWVtZW50cyBvciBDb250cmFjdHM6PC9zdHJvbmc+IElmIHRoZXJlIHdhcyBhIGZvcm1hbCBhZ3JlZW1lbnQgb3IgY29udHJhY3QgZGV0YWlsaW5nIHRoZSBjYXJlIHByb3ZpZGVkLCBwbGVhc2UgaW5jbHVkZSB0aGlzIGFzIHdlbGwuIFRoaXMgaXMgZXNwZWNpYWxseSBpbXBvcnRhbnQgaWYgdGhlIGNhcmUgYXJyYW5nZW1lbnQgd2FzIGZhY2lsaXRhdGVkIHRocm91Z2ggYSBzdGF0ZSBvciB0aGlyZC1wYXJ0eSBhZ2VuY3kuPC9saT5cclxuICAgIDwvb2w+XHJcbiAgICA8cD5UaGlzIGluZm9ybWF0aW9uIGlzIHZpdGFsIHRvIGVuc3VyZSB3ZSBjb21wbHkgd2l0aCB0YXhpbmcgYXV0aG9yaXRpZXMgd2hpbGUgYWNjdXJhdGVseSByZWZsZWN0aW5nIHlvdXIgZmluYW5jZXMuIElmIGFueSBvZiB0aGVzZSByZXF1aXJlbWVudHMgcG9zZSBhIGRpZmZpY3VsdHkgb3IgaWYgeW91IGhhdmUgcXVlc3Rpb25zLCBwbGVhc2UgZG9uJ3QgaGVzaXRhdGUgdG8gY29udGFjdCB1cyBkaXJlY3RseS4gT3VyIGdvYWwgaXMgdG8gc3VwcG9ydCB5b3UgdGhyb3VnaCB0aGlzIHByb2Nlc3MgYW5kIG9wdGltaXplIHlvdXIgdGF4IGJlbmVmaXRzLjwvcD5cclxuICAgIDxwPlRoYW5rIHlvdSBmb3IgeW91ciBwcm9tcHQgYXR0ZW50aW9uIHRvIHRoaXMgbWF0dGVyLiBXZSBsb29rIGZvcndhcmQgdG8gYXNzaXN0aW5nIHlvdSBmdXJ0aGVyLjwvcD5gXHJcbiAgfSxcclxuICB7XHJcbiAgICBhY3Rpb25UYXhTdWJqZWN0OiBcIkRpc2FiaWxpdHkgSW5zdXJhbmNlIEJlbmVmaXRzXCIsXHJcbiAgICBhY3Rpb25UaXRsZTogXCJEaXNhYmlsaXR5IEluc3VyYW5jZSBCZW5lZml0c1wiLFxyXG4gICAgYWN0aW9uSW5zdHJ1Y3Rpb25zOiBgPHA+V2UgYXJlIGluIHRoZSBwcm9jZXNzIG9mIHByZXBhcmluZyB5b3VyIHRheCByZXR1cm4gYW5kIG5vdGVkIHRoYXQgeW91IHJlY2VpdmVkIGRpc2FiaWxpdHkgaW5zdXJhbmNlIGJlbmVmaXRzIGR1cmluZyB0aGUgdGF4IHllYXIuIFRvIGFjY3VyYXRlbHkgZGV0ZXJtaW5lIGlmIHRoZXNlIGJlbmVmaXRzIGFyZSBlbGlnaWJsZSB0byBiZSBleGNsdWRlZCBmcm9tIHlvdXIgaW5jb21lLCB3ZSByZXF1aXJlIGZ1cnRoZXIgZGV0YWlscyByZWdhcmRpbmcgdGhlIGluc3VyYW5jZSBwcmVtaXVtcyBwYWlkLjwvcD5cclxuICAgIDxwPktpbmRseSBwcm92aWRlIHRoZSBmb2xsb3dpbmcgaW5mb3JtYXRpb24gYXQgeW91ciBlYXJsaWVzdCBjb252ZW5pZW5jZTo8L3A+XHJcbiAgICA8b2w+XHJcbiAgICAgICAgPGxpPlRoZSB0b3RhbCBhbW91bnQgb2YgZGlzYWJpbGl0eSBpbnN1cmFuY2UgYmVuZWZpdHMgcmVjZWl2ZWQgZHVyaW5nIHRoZSB0YXggeWVhci48L2xpPlxyXG4gICAgICAgIDxsaT5EZXRhaWxlZCBzdGF0ZW1lbnRzIG9yIGRvY3VtZW50YXRpb24gc2hvd2luZyB0aGUgZGlzYWJpbGl0eSBpbnN1cmFuY2UgYmVuZWZpdHMgcmVjZWl2ZWQuPC9saT5cclxuICAgICAgICA8bGk+Q29uZmlybWF0aW9uIG9uIHdobyBwYWlkIHRoZSBpbnN1cmFuY2UgcHJlbWl1bXMgKHlvdSBvciB5b3VyIGVtcGxveWVyKS48L2xpPlxyXG4gICAgICAgIDxsaT5JZiB5b3UgaGF2ZSBjb250cmlidXRlZCB0byB0aGUgcGF5bWVudCBvZiB0aGUgcHJlbWl1bXM6XHJcbiAgICAgICAgICAgIDx1bD5cclxuICAgICAgICAgICAgICAgIDxsaT5UaGUgYW1vdW50IHlvdSBwYWlkIHRvd2FyZHMgdGhlIHByZW1pdW1zLjwvbGk+XHJcbiAgICAgICAgICAgICAgICA8bGk+QW55IHN1cHBvcnRpbmcgZG9jdW1lbnRzIGZvciB0aGUgcGF5bWVudHMgbWFkZSBieSB5b3UgKHJlY2VpcHRzIG9yIGJhbmsgc3RhdGVtZW50cykuPC9saT5cclxuICAgICAgICAgICAgPC91bD5cclxuICAgICAgICA8L2xpPlxyXG4gICAgICAgIDxsaT5JZiB5b3VyIGVtcGxveWVyIGNvbnRyaWJ1dGVkIHRvIHRoZSBwYXltZW50IG9mIHRoZSBwcmVtaXVtczpcclxuICAgICAgICAgICAgPHVsPlxyXG4gICAgICAgICAgICAgICAgPGxpPlRoZSBhbW91bnQgcGFpZCBieSB5b3VyIGVtcGxveWVyIHRvd2FyZHMgdGhlIHByZW1pdW1zLjwvbGk+XHJcbiAgICAgICAgICAgICAgICA8bGk+QW55IGRvY3VtZW50cyBpbmRpY2F0aW5nIGVtcGxveWVyIGNvbnRyaWJ1dGlvbnMgKHBheSBzdHVicywgZW1wbG95ZXIgbGV0dGVycykuPC9saT5cclxuICAgICAgICAgICAgPC91bD5cclxuICAgICAgICA8L2xpPlxyXG4gICAgPC9vbD5cclxuICAgIDxwPlRoaXMgaW5mb3JtYXRpb24gaXMgY3J1Y2lhbCBmb3IgdXMgdG8gZGV0ZXJtaW5lIHRoZSB0YXhhYmxlIHBvcnRpb24sIGlmIGFueSwgb2YgeW91ciBkaXNhYmlsaXR5IGluc3VyYW5jZSBiZW5lZml0cy4gUHJvdmlkaW5nIHRoZXNlIGRldGFpbHMgd2lsbCBoZWxwIHVzIGVuc3VyZSB0aGUgYWNjdXJhY3kgb2YgeW91ciB0YXggZmlsaW5nIGFuZCBwb3RlbnRpYWxseSBsb3dlciB5b3VyIHRheGFibGUgaW5jb21lLjwvcD5cclxuICAgIDxwPlBsZWFzZSBkbyBub3QgaGVzaXRhdGUgdG8gcmVhY2ggb3V0IGlmIHlvdSBoYXZlIGFueSBxdWVzdGlvbnMgb3IgaWYgd2UgY2FuIGJlIG9mIGZ1cnRoZXIgYXNzaXN0YW5jZS4gV2UgYXBwcmVjaWF0ZSB5b3VyIHByb21wdCByZXNwb25zZSB0byB0aGlzIHJlcXVlc3QuPC9wPmBcclxuICB9LFxyXG4gIHtcclxuICAgIGFjdGlvblRheFN1YmplY3Q6IFwiRGlzYWJpbGl0eSBSZXRpcmVtZW50IEJlbmVmaXRzXCIsXHJcbiAgICBhY3Rpb25UaXRsZTogXCJEaXNhYmlsaXR5IFJldGlyZW1lbnQgQmVuZWZpdHNcIixcclxuICAgIGFjdGlvbkluc3RydWN0aW9uczogYDxwPldlIGFyZSBpbiB0aGUgcHJvY2VzcyBvZiBwcmVwYXJpbmcgeW91ciB0YXggZG9jdW1lbnRzIGFuZCBoYXZlIG5vdGVkIHRoYXQgeW91IHJlY2VpdmVkIGRpc2FiaWxpdHkgcmV0aXJlbWVudCBiZW5lZml0cyBkdXJpbmcgdGhlIHRheCB5ZWFyLiBJbiBvcmRlciB0byBhY2N1cmF0ZWx5IGRldGVybWluZSB0aGUgdGF4YWJpbGl0eSBvZiB0aGVzZSBiZW5lZml0cywgd2UgbmVlZCBhZGRpdGlvbmFsIGRldGFpbHMuIFRoZSB0YXhhYmlsaXR5IG9mIHRoZXNlIGJlbmVmaXRzIGNhbiBkZXBlbmQgb24gd2hlbiB5b3UgdG9vayByZXRpcmVtZW50IGR1ZSB0byBkaXNhYmlsaXR5LjwvcD5cclxuICAgIDxwPlBsZWFzZSBwcm92aWRlIHRoZSBmb2xsb3dpbmcgaW5mb3JtYXRpb24gYXMgc29vbiBhcyBwb3NzaWJsZTo8L3A+XHJcbiAgICA8b2w+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+RGF0ZSBvZiBSZXRpcmVtZW50Ojwvc3Ryb25nPiBUaGUgZXhhY3QgZGF0ZSB5b3UgcmV0aXJlZCBkdWUgdG8gZGlzYWJpbGl0eS48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPkRvY3VtZW50YXRpb24gb2YgRGlzYWJpbGl0eSBSZXRpcmVtZW50Ojwvc3Ryb25nPiBBbnkgb2ZmaWNpYWwgZG9jdW1lbnRhdGlvbiB5b3UgaGF2ZSB0aGF0IGNvbmZpcm1zIHlvdXIgcmV0aXJlbWVudCB3YXMgZHVlIHRvIGRpc2FiaWxpdHkuIFRoaXMgbWF5IGluY2x1ZGUgbGV0dGVycyBmcm9tIHlvdXIgZW1wbG95ZXIsIHRoZSByZXRpcmVtZW50IHBsYW4sIG9yIG1lZGljYWwgcmVjb3Jkcy48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPkRldGFpbHMgb2YgQmVuZWZpdHMgUmVjZWl2ZWQ6PC9zdHJvbmc+IFNwZWNpZmljIGFtb3VudHMgYW5kIHRoZSBzb3VyY2Ugb2YgdGhlIGRpc2FiaWxpdHkgcmV0aXJlbWVudCBiZW5lZml0cy4gUGxlYXNlIGluY2x1ZGUgYW55IHJlbGF0ZWQgZG9jdW1lbnRzIHN1Y2ggYXMgc3RhdGVtZW50cyBvciBub3RpY2VzLjwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+UHJldmlvdXMgWWVhciBXLTIgb3IgMTA5OSBGb3Jtczo8L3N0cm9uZz4gSWYgeW91IHJlY2VpdmVkIGFueSB3YWdlcyBvciBkaXNhYmlsaXR5IHBheW1lbnRzIHRoYXQgd2VyZSByZXBvcnRlZCBvbiBXLTIgb3IgMTA5OSBmb3JtcyBpbiB0aGUgeWVhciBvZiB5b3VyIHJldGlyZW1lbnQsIHBsZWFzZSBwcm92aWRlIHRoZXNlIGZvcm1zLjwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+QW55IENvcnJlc3BvbmRlbmNlIGZyb20gdGhlIElSUzo8L3N0cm9uZz4gSWYgeW91IGhhdmUgcmVjZWl2ZWQgYW55IG5vdGljZXMgb3IgbGV0dGVycyBmcm9tIHRoZSBJUlMgcmVnYXJkaW5nIHlvdXIgZGlzYWJpbGl0eSByZXRpcmVtZW50IGJlbmVmaXRzLCBwbGVhc2UgaW5jbHVkZSBjb3BpZXMgb2YgdGhlc2UgY29tbXVuaWNhdGlvbnMuPC9saT5cclxuICAgIDwvb2w+XHJcbiAgICA8cD5UaGUgYWJvdmUgaW5mb3JtYXRpb24gaXMgdml0YWwgdG8gZW5zdXJlIHlvdXIgdGF4IHJldHVybiBpcyBjb21wbGV0ZSBhbmQgYWNjdXJhdGUuIFVuZGVyc3RhbmRpbmcgdGhlIHNwZWNpZmljcyBvZiB5b3VyIGRpc2FiaWxpdHkgcmV0aXJlbWVudCBiZW5lZml0cyB3aWxsIGFpZCB1cyBpbiBkZXRlcm1pbmluZyB0aGVpciB0YXhhYmlsaXR5IGFuZCBlbnN1cmluZyB0aGF0IHlvdXIgdGF4IG9ibGlnYXRpb25zIGFyZSBwcmVjaXNlbHkgY2FsY3VsYXRlZC48L3A+XHJcbiAgICA8cD5JZiB5b3UgaGF2ZSBhbnkgcXVlc3Rpb25zIG9yIG5lZWQgYXNzaXN0YW5jZSBnYXRoZXJpbmcgdGhlc2UgZG9jdW1lbnRzLCBmZWVsIGZyZWUgdG8gY29udGFjdCB1cy4gWW91ciBwcm9tcHQgcmVzcG9uc2UgaXMgaGlnaGx5IGFwcHJlY2lhdGVkLjwvcD5gXHJcbiAgfSxcclxuICB7XHJcbiAgICBhY3Rpb25UYXhTdWJqZWN0OiBcIkNsZXJneSBXYWdlc1wiLFxyXG4gICAgYWN0aW9uVGl0bGU6IFwiQ2xlcmd5IFdhZ2VzXCIsXHJcbiAgICBhY3Rpb25JbnN0cnVjdGlvbnM6IGA8cD5XZSBhcmUgaW4gdGhlIHByb2Nlc3Mgb2YgcHJlcGFyaW5nIHlvdXIgdGF4IHJldHVybnMgYW5kIGhhdmUgbm90ZWQgdGhhdCB5b3UgcmVjZWl2ZWQgVy0yIHdhZ2VzIGFzIGEgY2xlcmd5IG1lbWJlci4gVG8gZW5zdXJlIGFjY3VyYXRlIHJlcG9ydGluZyBhbmQgdG8gcG90ZW50aWFsbHkgbWF4aW1pemUgeW91ciB0YXggYmVuZWZpdHMsIHdlIHJlcXVpcmUgZnVydGhlciBkZXRhaWxzIHJlZ2FyZGluZyB5b3VyIGNvbXBlbnNhdGlvbiBwYWNrYWdlLjwvcD5cclxuICAgIDxwPlBsZWFzZSBwcm92aWRlIHRoZSBmb2xsb3dpbmcgZG9jdW1lbnRzIGFuZCBpbmZvcm1hdGlvbiBhdCB5b3VyIGVhcmxpZXN0IGNvbnZlbmllbmNlOjwvcD5cclxuICAgIDxvbD5cclxuICAgICAgICA8bGk+PGI+Vy0yIEZvcm06PC9iPiBJZiBub3QgYWxyZWFkeSBwcm92aWRlZCwgaW5jbHVkZSBhbnkgVy0yIGZvcm1zIGlzc3VlZCBieSB5b3VyIHJlbGlnaW91cyBpbnN0aXR1dGlvbi48L2xpPlxyXG4gICAgICAgIDxsaT48Yj5Ib3VzaW5nIEFsbG93YW5jZSBEb2N1bWVudGF0aW9uOjwvYj4gRGV0YWlsZWQgc3RhdGVtZW50IG9yIGxldHRlciBmcm9tIHlvdXIgcmVsaWdpb3VzIGluc3RpdHV0aW9uIHNwZWNpZnlpbmcgdGhlIGFtb3VudCBkZXNpZ25hdGVkIGFzIGhvdXNpbmcgYWxsb3dhbmNlLjwvbGk+XHJcbiAgICAgICAgPGxpPjxiPlNlbGYtRW1wbG95bWVudCBUYXg6PC9iPiBDb25maXJtYXRpb24gb24gd2hldGhlciB5b3UgaGF2ZSB0YWtlbiBhIHZvdyBvZiBwb3ZlcnR5IChpZiBhcHBsaWNhYmxlKSwgb3IgYW55IGRvY3VtZW50YXRpb24gcmVsYXRlZCB0byBvcHRpbmcgb3V0IG9mIHNlbGYtZW1wbG95bWVudCB0YXguPC9saT5cclxuICAgICAgICA8bGk+PGI+RXhwZW5zZSBSZWltYnVyc2VtZW50czo8L2I+IERvY3VtZW50YXRpb24gc2hvd2luZyBhbnkgZXhwZW5zZSByZWltYnVyc2VtZW50cyByZWNlaXZlZCB1bmRlciBhbiBhY2NvdW50YWJsZSBwbGFuLjwvbGk+XHJcbiAgICAgICAgPGxpPjxiPk90aGVyIENvbXBlbnNhdGlvbjo8L2I+IEluZm9ybWF0aW9uIG9uIGFueSBvdGhlciBjb21wZW5zYXRpb24gcmVjZWl2ZWQgaW4geW91ciBjYXBhY2l0eSBhcyBjbGVyZ3ksIGluY2x1ZGluZyBidXQgbm90IGxpbWl0ZWQgdG8gbG92ZSBvZmZlcmluZ3MsIGZlZXMgZm9yIHNlcnZpY2VzICh3ZWRkaW5ncywgZnVuZXJhbHMsIGV0Yy4pLCBhbmQgcGFyc29uYWdlIGFsbG93YW5jZXMuPC9saT5cclxuICAgIDwvb2w+XHJcbiAgICA8cD5UaGlzIGluZm9ybWF0aW9uIGlzIGNydWNpYWwgZm9yIHVzIHRvIGFjY3VyYXRlbHkgcmVwcmVzZW50IHlvdXIgZWFybmluZ3MgYW5kIHRvIGNhbGN1bGF0ZSBhbnkgcG90ZW50aWFsIGRlZHVjdGlvbnMgY29ycmVjdGx5LiBZb3VyIHByb21wdCBhdHRlbnRpb24gdG8gdGhpcyByZXF1ZXN0IHdpbGwgaGVscCBlbnN1cmUgdGhhdCB5b3VyIHRheCByZXR1cm5zIGFyZSBwcmVwYXJlZCBpbiBhIHRpbWVseSBhbmQgZWZmaWNpZW50IG1hbm5lci48L3A+XHJcbiAgICA8cD5JZiB5b3UgaGF2ZSBhbnkgcXVlc3Rpb25zIG9yIG5lZWQgZnVydGhlciBjbGFyaWZpY2F0aW9uIG9uIHdoYXQgaXMgcmVxdWlyZWQsIHBsZWFzZSBkbyBub3QgaGVzaXRhdGUgdG8gY29udGFjdCB1cy4gV2UgYXJlIGhlcmUgdG8gYXNzaXN0IHlvdSB0aHJvdWdoIGV2ZXJ5IHN0ZXAgb2YgdGhpcyBwcm9jZXNzLjwvcD5cclxuICAgIDxwPlRoYW5rIHlvdSBmb3IgeW91ciBjb29wZXJhdGlvbiBhbmQgcHJvbXB0IGF0dGVudGlvbiB0byB0aGlzIG1hdHRlci48L3A+YFxyXG4gIH1cclxuICBcclxuICBcclxuICBcclxuICBcclxuICBcclxuICBcclxuICBcclxuICBcclxuICBcclxuICBcclxuICBcclxuICBcclxuXTtcclxuIl19
|
|
133
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLXRheC1mcmFnbWVudHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYWN0aW9uLXRlbXMvYWN0aW9uLXRheC1mcmFnbWVudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFDLElBQU0sa0JBQWtCLEdBQUc7SUFDaEM7UUFDRSxnQkFBZ0IsRUFBRSx3QkFBd0I7UUFDMUMsV0FBVyxFQUFFLGdDQUFnQztRQUM3QyxrQkFBa0IsRUFBRSxnbENBUXVIO0tBQzVJO0lBQ0Q7UUFDRSxnQkFBZ0IsRUFBRSxzQkFBc0I7UUFDeEMsV0FBVyxFQUFFLHlEQUF5RDtRQUN0RSxrQkFBa0IsRUFBRSxzekRBMkIrTjtLQUNwUDtJQUNEO1FBQ0UsZ0JBQWdCLEVBQUUsWUFBWTtRQUM5QixXQUFXLEVBQUUsbUNBQW1DO1FBQ2hELGtCQUFrQixFQUFFLGcyREFhc0k7S0FDM0o7SUFDRDtRQUNFLGdCQUFnQixFQUFFLG1CQUFtQjtRQUNyQyxXQUFXLEVBQUUsMEJBQTBCO1FBQ3ZDLGtCQUFrQixFQUFFLDRrREFhME47S0FDL087SUFDRDtRQUNFLGdCQUFnQixFQUFFLGtCQUFrQjtRQUNwQyxXQUFXLEVBQUUsaUNBQWlDO1FBQzlDLGtCQUFrQixFQUFFLHV3REFhbUc7S0FDeEg7SUFDRDtRQUNFLGdCQUFnQixFQUFFLGtCQUFrQjtRQUNwQyxXQUFXLEVBQUUsMEJBQTBCO1FBQ3ZDLGtCQUFrQixFQUFFLCtnRUFXcU47S0FDMU87SUFDRDtRQUNFLGdCQUFnQixFQUFFLGlCQUFpQjtRQUNuQyxXQUFXLEVBQUUsaUJBQWlCO1FBQzlCLGtCQUFrQixFQUFFLHNwQ0FTdkI7S0FDRTtJQUNEO1FBQ0UsZ0JBQWdCLEVBQUUsMEJBQTBCO1FBQzVDLFdBQVcsRUFBRSwwQkFBMEI7UUFDdkMsa0JBQWtCLEVBQUUsd3VDQVlzSTtLQUMzSjtJQUNEO1FBQ0UsZ0JBQWdCLEVBQUUsOEJBQThCO1FBQ2hELFdBQVcsRUFBRSw4QkFBOEI7UUFDM0Msa0JBQWtCLEVBQUUseXREQVNvTTtLQUN6TjtJQUNEO1FBQ0UsZ0JBQWdCLEVBQUUsa0JBQWtCO1FBQ3BDLFdBQVcsRUFBRSxrQkFBa0I7UUFDL0Isa0JBQWtCLEVBQUUscWpEQVErSTtLQUNwSztJQUNEO1FBQ0UsZ0JBQWdCLEVBQUUsaUNBQWlDO1FBQ25ELFdBQVcsRUFBRSxvQ0FBb0M7UUFDakQsa0JBQWtCLEVBQUUsbytEQVU0UDtLQUNqUjtJQUNEO1FBQ0UsZ0JBQWdCLEVBQUUsMkJBQTJCO1FBQzdDLFdBQVcsRUFBRSwyQkFBMkI7UUFDeEMsa0JBQWtCLEVBQUUsMHdDQVN1QztLQUM1RDtJQUNEO1FBQ0UsZ0JBQWdCLEVBQUUseUJBQXlCO1FBQzNDLFdBQVcsRUFBRSx5QkFBeUI7UUFDdEMsa0JBQWtCLEVBQUUsMHJEQVc2RTtLQUNsRztJQUNEO1FBQ0UsZ0JBQWdCLEVBQUUsNkJBQTZCO1FBQy9DLFdBQVcsRUFBRSw2QkFBNkI7UUFDMUMsa0JBQWtCLEVBQUUsdzBEQVUwSjtLQUMvSztJQUNEO1FBQ0UsZ0JBQWdCLEVBQUUsa0JBQWtCO1FBQ3BDLFdBQVcsRUFBRSxhQUFhO1FBQzFCLGtCQUFrQixFQUFFLDA0Q0FVaUs7S0FDdEw7SUFDRDtRQUNFLGdCQUFnQixFQUFFLHlCQUF5QjtRQUMzQyxXQUFXLEVBQUUseUJBQXlCO1FBQ3RDLGtCQUFrQixFQUFFLG1tQ0FVMEY7S0FDL0c7SUFDRDtRQUNFLGdCQUFnQixFQUFFLDBCQUEwQjtRQUM1QyxXQUFXLEVBQUUsMEJBQTBCO1FBQ3ZDLGtCQUFrQixFQUFFLDY1REFTaUY7S0FDdEc7SUFDRDtRQUNFLGdCQUFnQixFQUFFLCtCQUErQjtRQUNqRCxXQUFXLEVBQUUsK0JBQStCO1FBQzVDLGtCQUFrQixFQUFFLG1yREFvQjRJO0tBQ2pLO0lBQ0Q7UUFDRSxnQkFBZ0IsRUFBRSxnQ0FBZ0M7UUFDbEQsV0FBVyxFQUFFLGdDQUFnQztRQUM3QyxrQkFBa0IsRUFBRSxtekRBVWdJO0tBQ3JKO0lBQ0Q7UUFDRSxnQkFBZ0IsRUFBRSxjQUFjO1FBQ2hDLFdBQVcsRUFBRSxjQUFjO1FBQzNCLGtCQUFrQixFQUFFLG11REFXdUQ7S0FDNUU7SUFDRDtRQUNFLGdCQUFnQixFQUFFLGlCQUFpQjtRQUNuQyxXQUFXLEVBQUUsaUJBQWlCO1FBQzlCLGtCQUFrQixFQUFFLGdoREFVdUM7S0FDNUQ7SUFDRDtRQUNFLGdCQUFnQixFQUFFLDRCQUE0QjtRQUM5QyxXQUFXLEVBQUUsNEJBQTRCO1FBQ3pDLGtCQUFrQixFQUFFLGtvQ0FVdUM7S0FDNUQ7SUFDRDtRQUNFLGdCQUFnQixFQUFFLGFBQWE7UUFDL0IsV0FBVyxFQUFFLGFBQWE7UUFDMUIsa0JBQWtCLEVBQUUsMjVDQVl1QztLQUM1RDtJQUNEO1FBQ0UsZ0JBQWdCLEVBQUUscUJBQXFCO1FBQ3ZDLFdBQVcsRUFBRSxxQkFBcUI7UUFDbEMsa0JBQWtCLEVBQUUseWxEQVN1RDtLQUM1RTtJQUNEO1FBQ0UsZ0JBQWdCLEVBQUUsbUNBQW1DO1FBQ3JELFdBQVcsRUFBRSxtQ0FBbUM7UUFDaEQsa0JBQWtCLEVBQUUsKzFEQXdCNkM7S0FDbEU7SUFDRDtRQUNFLGdCQUFnQixFQUFFLGlCQUFpQjtRQUNuQyxXQUFXLEVBQUUsaUJBQWlCO1FBQzlCLGtCQUFrQixFQUFFLDB1Q0FRMks7S0FDaE07Q0FpQkYsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBBY3Rpb25UYXhGcmFnbWVudHMgPSBbXHJcbiAge1xyXG4gICAgYWN0aW9uVGF4U3ViamVjdDogXCJQcmlvciBZZWFyIFRheCBSZXR1cm5zXCIsXHJcbiAgICBhY3Rpb25UaXRsZTogYFByb3ZpZGUgUHJpb3IgWWVhciBUYXggUmV0dXJuc2AsXHJcbiAgICBhY3Rpb25JbnN0cnVjdGlvbnM6IGA8cD5XZSBhcmUgaW4gdGhlIHByb2Nlc3Mgb2YgcHJlcGFyaW5nIHlvdXIgdGF4IHJldHVybnMgYW5kIHJlcXVpcmUgeW91ciBhc3Npc3RhbmNlIHRvIGVuc3VyZSBhY2N1cmFjeSBhbmQgY29tcGxldGVuZXNzLiBPbmUgY3JpdGljYWwgcGllY2Ugb2YgaW5mb3JtYXRpb24gd2UgbmVlZCBpcyB5b3VyIDxzdHJvbmc+UHJpb3IgWWVhciBUYXggUmV0dXJuczwvc3Ryb25nPi4gVGhpcyBkb2N1bWVudCBpcyBlc3NlbnRpYWwgZm9yIHNldmVyYWwgcmVhc29ucywgaW5jbHVkaW5nIGJ1dCBub3QgbGltaXRlZCB0bzogdmVyaWZ5aW5nIGNhcnJ5LWZvcndhcmQgYW1vdW50cywgY29tcGFyaW5nIHllYXItb3Zlci15ZWFyIGluY29tZSBhbmQgZGVkdWN0aW9ucywgYW5kIGVuc3VyaW5nIGNvbXBsaWFuY2Ugd2l0aCB0YXggbGF3cy48L3A+XHJcbiAgICA8cD5UbyBmYWNpbGl0YXRlIHlvdXIgdGF4IHByZXBhcmF0aW9uLCBwbGVhc2UgcHJvdmlkZSB0aGUgZm9sbG93aW5nOjwvcD5cclxuICAgIDxvbD5cclxuICAgICAgICA8bGk+QSBjb3B5IG9mIHlvdXIgPHN0cm9uZz5GZWRlcmFsIHRheCByZXR1cm48L3N0cm9uZz4gZm9yIHRoZSBsYXN0IHRheCB5ZWFyLjwvbGk+XHJcbiAgICAgICAgPGxpPkEgY29weSBvZiB5b3VyIDxzdHJvbmc+U3RhdGUgdGF4IHJldHVybjwvc3Ryb25nPiBmb3IgdGhlIGxhc3QgdGF4IHllYXIsIGlmIGFwcGxpY2FibGUuPC9saT5cclxuICAgICAgICA8bGk+QW55IDxzdHJvbmc+bm90aWNlcyBvciBhbWVuZG1lbnRzPC9zdHJvbmc+IHJlbGF0ZWQgdG8geW91ciBwcmlvciB5ZWFyIHRheCByZXR1cm5zLjwvbGk+XHJcbiAgICA8L29sPlxyXG4gICAgPHA+SWYgeW91IGhhdmUgYW55IGRpZmZpY3VsdHkgaW4gZ2F0aGVyaW5nIHRoZXNlIGRvY3VtZW50cywgcGxlYXNlIGxldCB1cyBrbm93IGFzIHNvb24gYXMgcG9zc2libGUgc28gd2UgY2FuIGRpc2N1c3MgYWx0ZXJuYXRpdmUgc29sdXRpb25zLjwvcD5cclxuICAgIDxwPldlIGFwcHJlY2lhdGUgeW91ciBwcm9tcHQgYXR0ZW50aW9uIHRvIHRoaXMgcmVxdWVzdC4gUHJvdmlkaW5nIHRoZXNlIHdpbGwgZW5hYmxlIHVzIHRvIGNvbXBsZXRlIHlvdXIgdGF4IHByZXBhcmF0aW9uIHdpdGhvdXQgZGVsYXkuPC9wPmAsXHJcbiAgfSxcclxuICB7XHJcbiAgICBhY3Rpb25UYXhTdWJqZWN0OiBcIlN0YXR1dG9yeSBFeHRlbnNpb25zXCIsXHJcbiAgICBhY3Rpb25UaXRsZTogYERldGVybWluaW5nIEVsaWdpYmlsaXR5IGZvciBTdGF0dXRvcnkgRmlsaW5nIEV4dGVuc2lvbnNgLFxyXG4gICAgYWN0aW9uSW5zdHJ1Y3Rpb25zOiBgPHA+VG8gZW5zdXJlIHRoYXQgd2UgY2FuIGFjY3VyYXRlbHkgZGV0ZXJtaW5lIGlmIHlvdSBxdWFsaWZ5IGZvciBzdGF0dXRvcnkgZmlsaW5nIGV4dGVuc2lvbnMgZm9yIHlvdXIgdGF4IHJldHVybnMsIHdlIHJlcXVpcmUgc3BlY2lmaWMgaW5mb3JtYXRpb24gZnJvbSB5b3UuIFBsZWFzZSBzZWUgYmVsb3cgdGhlIGNhdGVnb3JpZXMgb2YgaW5mb3JtYXRpb24gbmVlZGVkIGJhc2VkIG9uIGRpZmZlcmVudCBlbGlnaWJpbGl0eSBjcml0ZXJpYTo8L3A+XHJcbiAgICA8b2w+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+RmVkZXJhbCBEaXNhc3RlciBBcmVhczwvc3Ryb25nPlxyXG4gICAgICAgICAgICA8dWw+XHJcbiAgICAgICAgICAgICAgICA8bGk+Q29uZmlybWF0aW9uIG9mIHlvdXIgcHJpbWFyeSByZXNpZGVuY2UgbG9jYXRpb24gZHVyaW5nIHRoZSB0YXggeWVhci48L2xpPlxyXG4gICAgICAgICAgICAgICAgPGxpPkFueSBvZmZpY2lhbCBkb2N1bWVudGF0aW9uIG9yIGNvcnJlc3BvbmRlbmNlIHJlY2VpdmVkIHJlZ2FyZGluZyBkaXNhc3RlciBkZWNsYXJhdGlvbnMgaW4geW91ciBhcmVhLjwvbGk+XHJcbiAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5MaXZpbmcgQWJyb2FkPC9zdHJvbmc+XHJcbiAgICAgICAgICAgIDx1bD5cclxuICAgICAgICAgICAgICAgIDxsaT5Qcm9vZiBvZiByZXNpZGVuY2Ugb3V0c2lkZSB0aGUgVW5pdGVkIFN0YXRlcyBmb3IgbW9yZSB0aGFuIDMzMCBmdWxsIGRheXMgd2l0aGluIGEgMTItbW9udGggcGVyaW9kLjwvbGk+XHJcbiAgICAgICAgICAgICAgICA8bGk+RG9jdW1lbnRhdGlvbiBzdXBwb3J0aW5nIHlvdXIgcGh5c2ljYWwgcHJlc2VuY2Ugb3IgYm9uYSBmaWRlIHJlc2lkZW5jZSBpbiBhIGZvcmVpZ24gY291bnRyeS48L2xpPlxyXG4gICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgIDwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+QWN0aXZlIE1pbGl0YXJ5PC9zdHJvbmc+XHJcbiAgICAgICAgICAgIDx1bD5cclxuICAgICAgICAgICAgICAgIDxsaT5Eb2N1bWVudGF0aW9uIGluZGljYXRpbmcgYWN0aXZlIGR1dHkgc3RhdHVzLCBpbmNsdWRpbmcgZGF0ZXMgb2Ygc2VydmljZSB3aXRoaW4gdGhlIHRheCB5ZWFyLjwvbGk+XHJcbiAgICAgICAgICAgICAgICA8bGk+SWYgYXBwbGljYWJsZSwgb3JkZXJzIGZvciBvdmVyc2VhcyBkZXBsb3ltZW50LjwvbGk+XHJcbiAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5Db21iYXQgWm9uZTwvc3Ryb25nPlxyXG4gICAgICAgICAgICA8dWw+XHJcbiAgICAgICAgICAgICAgICA8bGk+T2ZmaWNpYWwgb3JkZXJzIGRlbW9uc3RyYXRpbmcgeW91ciBkZXBsb3ltZW50IHRvIGEgY29tYmF0IHpvbmUsIGluY2x1ZGluZyB0aGUgc3BlY2lmaWMgZGF0ZXMuPC9saT5cclxuICAgICAgICAgICAgICAgIDxsaT5BbnkgcmVsZXZhbnQgY29tbXVuaWNhdGlvbiBmcm9tIHRoZSBEZXBhcnRtZW50IG9mIERlZmVuc2Ugb3Igb3RoZXIgb2ZmaWNpYWwgYm9kaWVzIHJlZ2FyZGluZyB5b3VyIHNlcnZpY2UgaW4gYSBjb21iYXQgem9uZS48L2xpPlxyXG4gICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgIDwvbGk+XHJcbiAgICA8L29sPlxyXG4gICAgPHA+UGxlYXNlIGVuc3VyZSB0aGF0IHlvdSBwcm92aWRlIHRoaXMgaW5mb3JtYXRpb24gYXQgeW91ciBlYXJsaWVzdCBjb252ZW5pZW5jZSB0byBmYWNpbGl0YXRlIHRoZSBhY2N1cmF0ZSBhbmQgdGltZWx5IHByZXBhcmF0aW9uIG9mIHlvdXIgdGF4IHJldHVybnMuIElmIHlvdSBoYXZlIGFueSBxdWVzdGlvbnMgb3IgbmVlZCBmdXJ0aGVyIGNsYXJpZmljYXRpb24sIGRvIG5vdCBoZXNpdGF0ZSB0byBjb250YWN0IHVzLjwvcD5gXHJcbiAgfSxcclxuICB7XHJcbiAgICBhY3Rpb25UYXhTdWJqZWN0OiBcIkRlcGVuZGVudHNcIixcclxuICAgIGFjdGlvblRpdGxlOiBcIlJlcXVlc3QgZm9yIERlcGVuZGVudCBJbmZvcm1hdGlvblwiLFxyXG4gICAgYWN0aW9uSW5zdHJ1Y3Rpb25zOiBgPHA+V2UgYXJlIGluIHRoZSBwcm9jZXNzIG9mIHByZXBhcmluZyB5b3VyIHRheCBkb2N1bWVudHMgYW5kIG5lZWQgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiByZWdhcmRpbmcgeW91ciBkZXBlbmRlbnRzLiBUaGlzIGluZm9ybWF0aW9uIGlzIGNydWNpYWwgZm9yIGFwcGx5aW5nIHRoZSBtb3N0IGJlbmVmaWNpYWwgZGVwZW5kZW5jeSB0ZXN0cywgaW5jbHVkaW5nIHF1YWxpZmljYXRpb25zIGZvciBIZWFkIG9mIEhvdXNlaG9sZCAoSE9IKSwgQ2hpbGQgVGF4IENyZWRpdCwgYW5kIG90aGVyIHJlbGF0ZWQgYmVuZWZpdHMuIFBsZWFzZSBwcm92aWRlIHRoZSBmb2xsb3dpbmcgZGV0YWlscyBmb3IgZWFjaCBvZiB5b3VyIGNsYWltZWQgZGVwZW5kZW50czo8L3A+XHJcbiAgICA8b2w+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+RnVsbCBOYW1lOjwvc3Ryb25nPiBUaGUgY29tcGxldGUgbGVnYWwgbmFtZSBvZiB0aGUgZGVwZW5kZW50LjwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+U29jaWFsIFNlY3VyaXR5IE51bWJlciAoU1NOKSBvciBUYXhwYXllciBJZGVudGlmaWNhdGlvbiBOdW1iZXIgKFRJTik6PC9zdHJvbmc+IFRoaXMgaXMgbmVjZXNzYXJ5IGZvciBpZGVudGlmaWNhdGlvbiBwdXJwb3Nlcy48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPkRhdGUgb2YgQmlydGg6PC9zdHJvbmc+IEhlbHBzIHRvIGRldGVybWluZSBlbGlnaWJpbGl0eSBmb3IgY2VydGFpbiBjcmVkaXRzIGxpa2UgdGhlIENoaWxkIFRheCBDcmVkaXQuPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5SZWxhdGlvbnNoaXAgdG8gWW91Ojwvc3Ryb25nPiBTcGVjaWZ5IHRoZSBkZXBlbmRlbnQncyByZWxhdGlvbnNoaXAgKHNvbiwgZGF1Z2h0ZXIsIHN0ZXBjaGlsZCwgZm9zdGVyIGNoaWxkLCBicm90aGVyLCBzaXN0ZXIsIGV0Yy4pIHRvIHlvdS48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPlJlc2lkZW5jeTo8L3N0cm9uZz4gQ29uZmlybSB0aGUgZGVwZW5kZW50IGxpdmVkIHdpdGggeW91IGZvciBtb3JlIHRoYW4gaGFsZiB0aGUgeWVhci48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPkZpbmFuY2lhbCBTdXBwb3J0Ojwvc3Ryb25nPiBDb25maXJtIHlvdSBwcm92aWRlZCBtb3JlIHRoYW4gaGFsZiBvZiB0aGUgZGVwZW5kZW504oCZcyBmaW5hbmNpYWwgc3VwcG9ydCBmb3IgdGhlIHllYXIuPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5DaXRpemVuc2hpcDo8L3N0cm9uZz4gQ29uZmlybSB0aGUgZGVwZW5kZW50IGlzIGEgVS5TLiBjaXRpemVuLCBVLlMuIG5hdGlvbmFsLCBvciBhIHJlc2lkZW50IGFsaWVuLjwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+TWFyaXRhbCBTdGF0dXM6PC9zdHJvbmc+IEluZGljYXRlIHdoZXRoZXIgdGhlIGRlcGVuZGVudCBpcyBtYXJyaWVkIGFuZCwgaWYgc28sIHdoZXRoZXIgdGhleSBhcmUgZmlsaW5nIGpvaW50bHkuPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5JbmNvbWUgSW5mb3JtYXRpb246PC9zdHJvbmc+IElmIGFwcGxpY2FibGUsIHByb3ZpZGUgZGV0YWlscyByZWdhcmRpbmcgYW55IGluY29tZSB0aGUgZGVwZW5kZW50IG1heSBoYXZlIGVhcm5lZCBvciByZWNlaXZlZC48L2xpPlxyXG4gICAgPC9vbD5cclxuICAgIDxwPlBsZWFzZSBlbnN1cmUgeW91IHByb3ZpZGUgY29tcGxldGUgYW5kIGFjY3VyYXRlIGluZm9ybWF0aW9uIHRvIGF2b2lkIGFueSBkZWxheXMgaW4gdGhlIHByb2Nlc3Npbmcgb2YgeW91ciB0YXggcmV0dXJuLjwvcD5cclxuICAgIDxwPlRoYW5rIHlvdSBmb3IgeW91ciBwcm9tcHQgYXR0ZW50aW9uIHRvIHRoaXMgbWF0dGVyLiBJZiB5b3UgaGF2ZSBhbnkgcXVlc3Rpb25zIG9yIHJlcXVpcmUgZnVydGhlciBhc3Npc3RhbmNlLCBwbGVhc2UgZG8gbm90IGhlc2l0YXRlIHRvIGNvbnRhY3QgdXMuPC9wPmBcclxuICB9LFxyXG4gIHtcclxuICAgIGFjdGlvblRheFN1YmplY3Q6IFwiSGVhZCBvZiBIb3VzZWhvbGRcIixcclxuICAgIGFjdGlvblRpdGxlOiBcIkhlYWQgb2YgSG91c2Vob2xkIEZpbGluZ1wiLFxyXG4gICAgYWN0aW9uSW5zdHJ1Y3Rpb25zOiBgPHA+VG8gZW5zdXJlIGFjY3VyYXRlIGFuZCBjb21wbGlhbnQgdGF4IGZpbGluZyB1bmRlciB0aGUgXCJIZWFkIG9mIEhvdXNlaG9sZFwiIHN0YXR1cywgd2Uga2luZGx5IHJlcXVlc3QgdGhlIGZvbGxvd2luZyBpbmZvcm1hdGlvbi4gVGhpcyBzdGF0dXMgY2FuIHByb3ZpZGUgc2lnbmlmaWNhbnQgdGF4IGJlbmVmaXRzLCBhbmQgaXQgaXMgY3J1Y2lhbCB0aGF0IGFsbCBJUlMgcmVxdWlyZW1lbnRzIGFyZSBtZXQuIFBsZWFzZSBwcm92aWRlOjwvcD5cclxuICAgIDxvbD5cclxuICAgIDxsaT48c3Ryb25nPk1hcml0YWwgU3RhdHVzOjwvc3Ryb25nPiBDb25maXJtYXRpb24gb2YgeW91ciBtYXJpdGFsIHN0YXR1cyBhcyBvZiB0aGUgbGFzdCBkYXkgb2YgdGhlIHRheCB5ZWFyIChlLmcuLCBzaW5nbGUsIGRpdm9yY2VkLCBsZWdhbGx5IHNlcGFyYXRlZCkuPC9saT5cclxuICAgIDxsaT48c3Ryb25nPkhvdXNlaG9sZCBFeHBlbnNlczo8L3N0cm9uZz4gRGV0YWlsZWQgcmVjb3JkcyBpbmRpY2F0aW5nIHRoYXQgeW91IHBhaWQgbW9yZSB0aGFuIGhhbGYgb2YgdGhlIGNvc3RzIG9mIGtlZXBpbmcgdXAgYSBob21lIGZvciB0aGUgdGF4IHllYXIuIFRoaXMgaW5jbHVkZXMgcmVudCwgbW9ydGdhZ2UgaW50ZXJlc3QsIHByb3BlcnR5IHRheGVzLCB1dGlsaXRpZXMsIHJlcGFpcnMsIG1haW50ZW5hbmNlLCBhbmQgZ3JvY2VyaWVzLjwvbGk+XHJcbiAgICA8bGk+PHN0cm9uZz5RdWFsaWZ5aW5nIFBlcnNvbjo8L3N0cm9uZz4gSW5mb3JtYXRpb24gb24gdGhlIHF1YWxpZnlpbmcgcGVyc29uKHMpIHdobyBsaXZlZCB3aXRoIHlvdSBpbiB0aGUgaG9tZSBmb3IgbW9yZSB0aGFuIGhhbGYgb2YgdGhlIHllYXIsIGV4Y2VwdCBmb3IgdGVtcG9yYXJ5IGFic2VuY2VzIHN1Y2ggYXMgc2Nob29sLiBQbGVhc2UgaW5jbHVkZTpcclxuICAgICAgPHVsPlxyXG4gICAgICA8bGk+RnVsbCBuYW1lIGFuZCByZWxhdGlvbnNoaXAgdG8geW91IChlLmcuLCBjaGlsZCwgcGFyZW50LCBzaWJsaW5nKS48L2xpPlxyXG4gICAgICA8bGk+RHVyYXRpb24gb2YgcmVzaWRlbmN5IGF0IHlvdXIgaG9tZSBkdXJpbmcgdGhlIHRheCB5ZWFyLjwvbGk+XHJcbiAgICAgIDxsaT5TdXBwb3J0aW5nIGRvY3VtZW50cyAoYmlydGggY2VydGlmaWNhdGVzLCBzY2hvb2wgcmVjb3JkcywgZXRjLikgcHJvdmluZyB0aGUgcmVzaWRlbmN5IGFuZCByZWxhdGlvbnNoaXAuPC9saT5cclxuICAgICAgPC91bD5cclxuICAgIDwvbGk+XHJcbiAgICA8bGk+PHN0cm9uZz5BZGRpdGlvbmFsIFN1cHBvcnQ6PC9zdHJvbmc+IEFueSBmdXJ0aGVyIGRvY3VtZW50YXRpb24gdGhhdCBjYW4gc3VwcG9ydCB5b3VyIGNsYWltIGZvciB0aGUgSGVhZCBvZiBIb3VzZWhvbGQgZmlsaW5nIHN0YXR1cy48L2xpPlxyXG4gICAgPC9vbD5cclxuICAgIDxwPlBsZWFzZSBub3RlIHRoYXQgcHJvdmlkaW5nIGFjY3VyYXRlIGFuZCBjb21wbGV0ZSBpbmZvcm1hdGlvbiBpcyBlc3NlbnRpYWwgZm9yIHlvdXIgYmVuZWZpdCBhbmQgdG8gY29tcGx5IHdpdGggdGF4IGxhd3MuIFNob3VsZCB5b3UgaGF2ZSBhbnkgcXVlc3Rpb25zIG9yIHJlcXVpcmUgYXNzaXN0YW5jZSBpbiBnYXRoZXJpbmcgdGhlc2UgZGV0YWlscywgZG8gbm90IGhlc2l0YXRlIHRvIGNvbnRhY3QgdXMuPC9wPmBcclxuICB9LFxyXG4gIHtcclxuICAgIGFjdGlvblRheFN1YmplY3Q6IFwiUmVzaWRlbmN5IFN0YXR1c1wiLFxyXG4gICAgYWN0aW9uVGl0bGU6IFwiSW5mb3JtYXRpb24gb24gUmVzaWRlbmN5IFN0YXR1c1wiLFxyXG4gICAgYWN0aW9uSW5zdHJ1Y3Rpb25zOiBgPHA+V2UgdW5kZXJzdGFuZCB0aGF0IGVpdGhlciB5b3Ugb3IgeW91ciBzcG91c2UgaXMgbm90IGEgVS5TLiBjaXRpemVuLiBUbyBhY2N1cmF0ZWx5IGRldGVybWluZSB5b3VyIHRheCBzdGF0dXMsIHdlIG5lZWQgdG8gYXBwbHkgdGhlIG5lY2Vzc2FyeSBUYXggUmVzaWRlbmN5IFRlc3RzLCB3aGljaCBpbmNsdWRlIHRoZSA8c3Ryb25nPkdyZWVuIENhcmQgVGVzdDwvc3Ryb25nPiBhbmQgdGhlIDxzdHJvbmc+U3Vic3RhbnRpYWwgUHJlc2VuY2UgVGVzdDwvc3Ryb25nPi4gVGhpcyB3aWxsIGhlbHAgdXMgZW5zdXJlIHlvdXIgdGF4IHJldHVybnMgYXJlIGNvbXBsZXRlZCBjb3JyZWN0bHkgYW5kIGNvbXBseSB3aXRoIFUuUy4gcmVndWxhdGlvbnMuPC9wPlxyXG5cclxuICAgIDxwPlRvIHByb2NlZWQsIHdlIGtpbmRseSBhc2sgeW91IHRvIHByb3ZpZGUgdGhlIGZvbGxvd2luZyBpbmZvcm1hdGlvbjo8L3A+XHJcbiAgICA8b2w+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+R3JlZW4gQ2FyZCBTdGF0dXM6PC9zdHJvbmc+IFBsZWFzZSBjb25maXJtIGlmIHlvdSBvciB5b3VyIHNwb3VzZSBoYXZlIGJlZW4gaXNzdWVkIGEgVS5TLiBncmVlbiBjYXJkIChMYXdmdWwgUGVybWFuZW50IFJlc2lkZW50IENhcmQpIGF0IGFueSBwb2ludCBkdXJpbmcgdGhlIHRheCB5ZWFyLiBJZiB5ZXMsIHByb3ZpZGUgYSBjb3B5IG9mIHRoZSBncmVlbiBjYXJkIG9yIHRoZSBvZmZpY2lhbCBkb2N1bWVudCBjb25maXJtaW5nIHRoZSBzdGF0dXMuPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5EYXRlIG9mIEFycml2YWwgaW4gdGhlIFUuUy46PC9zdHJvbmc+IFRoZSBleGFjdCBkYXRlcyB3aGVuIHlvdSBhbmQvb3IgeW91ciBzcG91c2UgZmlyc3QgYXJyaXZlZCBpbiB0aGUgVS5TLiBkdXJpbmcgdGhlIHRheCB5ZWFyLjwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+VHJhdmVsIEhpc3Rvcnk6PC9zdHJvbmc+IEEgZGV0YWlsZWQgbGlzdCBvZiBhbGwgdGhlIGRhdGVzIHlvdSBhbmQvb3IgeW91ciBzcG91c2UgZW50ZXJlZCBhbmQgbGVmdCB0aGUgVS5TLiBkdXJpbmcgdGhlIHRheCB5ZWFyLiBUaGlzIGluZm9ybWF0aW9uIGlzIGNydWNpYWwgZm9yIHRoZSBTdWJzdGFudGlhbCBQcmVzZW5jZSBUZXN0LjwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+VmlzYSBUeXBlOjwvc3Ryb25nPiBJZiB5b3Ugb3IgeW91ciBzcG91c2UgYXJlIG9uIGEgdmlzYSwgcGxlYXNlIHNwZWNpZnkgdGhlIHR5cGUgYW5kIHByb3ZpZGUgYSBjb3B5IG9mIHRoZSB2aXNhLjwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+UHJldmlvdXMgWWVhciBUYXggRmlsaW5nczo8L3N0cm9uZz4gQ29waWVzIG9mIGxhc3QgeWVhcidzIHRheCByZXR1cm5zLCBpZiBhcHBsaWNhYmxlLiBUaGlzIGluZm9ybWF0aW9uIGNhbiBwcm92aWRlIGNvbnRleHQgYW5kIGhlbHAgZGV0ZXJtaW5lIHJlc2lkZW5jeSBzdGF0dXMgbW9yZSBhY2N1cmF0ZWx5LjwvbGk+XHJcbiAgICA8L29sPlxyXG5cclxuICAgIDxwPlBsZWFzZSBlbnN1cmUgYWxsIGRvY3VtZW50cyBhcmUgY2xlYXIgYW5kIGxlZ2libGUuIFlvdSBjYW4gc2VuZCB0aGVtIHRvIHVzIHZpYSBlbWFpbCBvciB0aHJvdWdoIG91ciBzZWN1cmUgY2xpZW50IHBvcnRhbC4gRm9yIGFueSBxdWVzdGlvbnMgb3IgYXNzaXN0YW5jZSwgZmVlbCBmcmVlIHRvIGNvbnRhY3QgdXMgZGlyZWN0bHkuPC9wPlxyXG5cclxuICAgIDxwPldlIGFwcHJlY2lhdGUgeW91ciBwcm9tcHQgYXR0ZW50aW9uIHRvIHRoaXMgbWF0dGVyIGFuZCBsb29rIGZvcndhcmQgdG8gYXNzaXN0aW5nIHlvdSB3aXRoIHlvdXIgdGF4IHByZXBhcmF0aW9uLjwvcD5gXHJcbiAgfSxcclxuICB7XHJcbiAgICBhY3Rpb25UYXhTdWJqZWN0OiBcIkpvaW50IFRheCBSZWxpZWZcIixcclxuICAgIGFjdGlvblRpdGxlOiBcIkpvaW50IFRheCBSZWxpZWYgRGV0YWlsc1wiLFxyXG4gICAgYWN0aW9uSW5zdHJ1Y3Rpb25zOiBgPHA+VG8gYXNzaXN0IHlvdSBlZmZlY3RpdmVseSB3aXRoIHlvdXIgcmVxdWVzdCBmb3Igam9pbnQgdGF4IHJlbGllZiwgd2UgbmVlZCB0byBjb2xsZWN0IHNwZWNpZmljIGluZm9ybWF0aW9uIHRvIHVuZGVyc3RhbmQgeW91ciBzaXR1YXRpb24gdGhvcm91Z2hseS4gVGhpcyB3aWxsIGhlbHAgdXMgZGV0ZXJtaW5lIHRoZSBtb3N0IHN1aXRhYmxlIHR5cGUgb2YgcmVsaWVmIGZvciB5b3VyIGNpcmN1bXN0YW5jZXMsIHdoaWNoIG1heSBpbmNsdWRlIElubm9jZW50IFNwb3VzZSBSZWxpZWYsIEluanVyZWQgU3BvdXNlIEFsbG9jYXRpb24sIFNlcGFyYXRpb24gb2YgTGlhYmlsaXR5IFJlbGllZiwgb3IgRXF1aXRhYmxlIFJlbGllZi4gUGxlYXNlIHByb3ZpZGUgdGhlIGZvbGxvd2luZyBkb2N1bWVudHMgYW5kIGluZm9ybWF0aW9uIGF0IHlvdXIgZWFybGllc3QgY29udmVuaWVuY2U6PC9wPlxyXG4gICAgPG9sPlxyXG4gICAgICA8bGk+PHN0cm9uZz5Db21wbGV0ZSBUYXggUmV0dXJuczo8L3N0cm9uZz4gQ29waWVzIG9mIGFsbCB0YXggcmV0dXJucyBmb3IgdGhlIHllYXJzIHlvdSBhcmUgcmVxdWVzdGluZyByZWxpZWYuPC9saT5cclxuICAgICAgPGxpPjxzdHJvbmc+RGV0YWlsZWQgU3RhdGVtZW50Ojwvc3Ryb25nPiBBIHdyaXR0ZW4gc3RhdGVtZW50IGV4cGxhaW5pbmcgd2h5IHlvdSBiZWxpZXZlIHlvdSBxdWFsaWZ5IGZvciByZWxpZWYsIGluY2x1ZGluZyBhbnkgc3BlY2lmaWMgZXZlbnRzIG9yIGNpcmN1bXN0YW5jZXMgeW91IHdhbnQgdXMgdG8gY29uc2lkZXIuPC9saT5cclxuICAgICAgPGxpPjxzdHJvbmc+SW5jb21lIERvY3VtZW50YXRpb246PC9zdHJvbmc+IFByb29mIG9mIHlvdXIgY3VycmVudCBpbmNvbWUgYW5kIHRoYXQgb2YgeW91ciBzcG91c2UgaWYgYXBwbGljYWJsZSwgc3VjaCBhcyByZWNlbnQgcGF5IHN0dWJzLCBXLTIgZm9ybXMsIG9yIG90aGVyIGluY29tZSBzdGF0ZW1lbnRzLjwvbGk+XHJcbiAgICAgIDxsaT48c3Ryb25nPlByb29mIG9mIEZpbmFuY2lhbCBTaXR1YXRpb246PC9zdHJvbmc+IERvY3VtZW50cyBzaG93aW5nIHlvdXIgY3VycmVudCBmaW5hbmNpYWwgc2l0dWF0aW9uLCBpbmNsdWRpbmcgYmFuayBzdGF0ZW1lbnRzLCBtb250aGx5IGJpbGxzLCBhbmQgYW55IG90aGVyIGxpYWJpbGl0aWVzLjwvbGk+XHJcbiAgICAgIDxsaT48c3Ryb25nPkRvY3VtZW50YXRpb24gb2YgTWFyaXRhbCBTdGF0dXM6PC9zdHJvbmc+IElmIGFwcGxpY2FibGUsIGxlZ2FsIGRvY3VtZW50cyByZWxhdGVkIHRvIHNlcGFyYXRpb24sIGRpdm9yY2UsIG9yIGFubnVsbWVudC48L2xpPlxyXG4gICAgICA8bGk+PHN0cm9uZz5Qcm9vZiBvZiBSZXNpZGVuY2U6PC9zdHJvbmc+IERvY3VtZW50cyB0aGF0IHByb3ZlIHdoZXJlIGVhY2ggb2YgeW91IGhhcyBsaXZlZCBkdXJpbmcgdGhlIHRheCB5ZWFycyBpbiBxdWVzdGlvbi48L2xpPlxyXG4gICAgICA8bGk+PHN0cm9uZz5BbnkgQ29ycmVzcG9uZGVuY2UgZnJvbSB0aGUgSVJTOjwvc3Ryb25nPiBJZiB5b3UgaGF2ZSByZWNlaXZlZCBhbnkgbm90aWNlcyBvciBsZXR0ZXJzIGZyb20gdGhlIElSUyByZWdhcmRpbmcgeW91ciBqb2ludCB0YXggbGlhYmlsaXR5LCBwbGVhc2UgaW5jbHVkZSBjb3BpZXMuPC9saT5cclxuICAgIDwvb2w+XHJcbiAgICA8cD5QbGVhc2UgZW5zdXJlIGFsbCBkb2N1bWVudHMgYXJlIGNsZWFybHkgbGVnaWJsZS4gWW91IG1heSBzZW5kIHRoZW0gdmlhIGVtYWlsLCBvciB1cGxvYWQuIElmIHlvdSBoYXZlIGFueSBxdWVzdGlvbnMgb3IgbmVlZCBmdXJ0aGVyIGNsYXJpZmljYXRpb24gb24gd2hhdCB0byBwcm92aWRlLCBkb24ndCBoZXNpdGF0ZSB0byByZWFjaCBvdXQuPC9wPlxyXG4gICAgPHA+V2UgdW5kZXJzdGFuZCB0aGF0IHRoaXMgcHJvY2VzcyBjYW4gYmUgY29tcGxleCwgYnV0IHdlIGFyZSBoZXJlIHRvIGd1aWRlIHlvdSB0aHJvdWdoIGl0LiBPdXIgZ29hbCBpcyB0byBlbnN1cmUgd2UgaGF2ZSBhIGNvbXByZWhlbnNpdmUgdW5kZXJzdGFuZGluZyBvZiB5b3VyIHNpdHVhdGlvbiB0byBhZHZvY2F0ZSBmb3IgdGhlIG1vc3QgZmF2b3JhYmxlIG91dGNvbWUgb24geW91ciBiZWhhbGYuPC9wPmBcclxuICB9LFxyXG4gIHtcclxuICAgIGFjdGlvblRheFN1YmplY3Q6IFwiMTA5OSBORUMgSW5jb21lXCIsXHJcbiAgICBhY3Rpb25UaXRsZTogXCIxMDk5IE5FQyBJbmNvbWVcIixcclxuICAgIGFjdGlvbkluc3RydWN0aW9uczogYDxwPldlIGFyZSBpbiB0aGUgcHJvY2VzcyBvZiBwcmVwYXJpbmcgeW91ciB0YXggcmV0dXJuIGFuZCByZXF1aXJlIGEgY29tcHJlaGVuc2l2ZSB1bmRlcnN0YW5kaW5nIG9mIGFsbCB5b3VyIHNvdXJjZXMgb2YgaW5jb21lLiBTcGVjaWZpY2FsbHksIHdlIG5lZWQgdG8gYWNjb3VudCBmb3IgeW91ciAxMDk5IE5FQyBJbmNvbWUuIFRoZSAxMDk5LU5FQyBmb3JtIGlzIGNydWNpYWwgZm9yIGNvcnJlY3RseSByZXBvcnRpbmcgeW91ciBub24tZW1wbG95ZWUgY29tcGVuc2F0aW9uLjwvcD5cclxuICAgIDxwPlRvIGVuc3VyZSBhIHRob3JvdWdoIGFuZCBhY2N1cmF0ZSB0YXggcHJlcGFyYXRpb24sIHBsZWFzZSBwcm92aWRlIHVzIHdpdGggdGhlIGZvbGxvd2luZzo8L3A+XHJcbiAgICA8b2w+XHJcbiAgICAgICAgPGxpPjxiPkFsbCAxMDk5LU5FQyBmb3JtczwvYj4geW91IHJlY2VpdmVkIGZvciB0aGUgdGF4IHllYXIuPC9saT5cclxuICAgICAgICA8bGk+RGV0YWlscyBvZiBhbnkgPGI+YWRkaXRpb25hbCBub24tZW1wbG95ZWUgY29tcGVuc2F0aW9uPC9iPiBub3QgcmVwb3J0ZWQgb24gYSAxMDk5LU5FQyBmb3JtLjwvbGk+XHJcbiAgICAgICAgPGxpPkluZm9ybWF0aW9uIHJlZ2FyZGluZyA8Yj5leHBlbnNlcyByZWxhdGVkIHRvIHlvdXIgMTA5OSBORUMgaW5jb21lPC9iPiwgaWYgYXBwbGljYWJsZS48L2xpPlxyXG4gICAgPC9vbD5cclxuICAgIDxwPklmIHlvdSBoYXZlIG5vdCB5ZXQgcmVjZWl2ZWQgYWxsIHlvdXIgMTA5OS1ORUMgZm9ybXMsIHBsZWFzZSBsZXQgdXMga25vdywgYW5kIHByb3ZpZGUgYW4gZXN0aW1hdGUgb2Ygd2hlbiB5b3UgZXhwZWN0IHRvIHJlY2VpdmUgdGhlbS4gVGhpcyBpbmZvcm1hdGlvbiBpcyBjcml0aWNhbCBmb3IgYWNjdXJhdGVseSByZXBvcnRpbmcgeW91ciBpbmNvbWUgYW5kIGF2b2lkaW5nIHBvdGVudGlhbCBwZW5hbHRpZXMgb3IgYXVkaXRzIGZyb20gdGhlIElSUy48L3A+XHJcbiAgICA8cD5QbGVhc2UgcmVhY2ggb3V0IHRvIHVzIGRpcmVjdGx5IHNob3VsZCB5b3UgaGF2ZSBhbnkgcXVlc3Rpb25zIG9yIG5lZWQgZnVydGhlciBjbGFyaWZpY2F0aW9uLiBZb3VyIHByb21wdCByZXNwb25zZSBpcyBncmVhdGx5IGFwcHJlY2lhdGVkIHRvIGVuc3VyZSB5b3VyIHRheCByZXR1cm4gaXMgcHJvY2Vzc2VkIGVmZmljaWVudGx5IGFuZCBhY2N1cmF0ZWx5LjwvcD5cclxuYFxyXG4gIH0sXHJcbiAge1xyXG4gICAgYWN0aW9uVGF4U3ViamVjdDogXCJTY2hlZHVsZSBLLTEgSW5mb3JtYXRpb25cIixcclxuICAgIGFjdGlvblRpdGxlOiBcIlNjaGVkdWxlIEstMSBJbmZvcm1hdGlvblwiLFxyXG4gICAgYWN0aW9uSW5zdHJ1Y3Rpb25zOiBgPHA+V2UgdW5kZXJzdGFuZCB0aGF0IHlvdSBoYXZlIGluZGljYXRlZCB0aGUgcHJlc2VuY2Ugb2YgU2NoZWR1bGUgSyBpbmNvbWUgZm9yIHRoZSBjdXJyZW50IHRheCB5ZWFyLiBJbiBvcmRlciB0byBlbnN1cmUgdGhlIGFjY3VyYWN5IGFuZCBjb21wbGV0ZW5lc3Mgb2YgeW91ciB0YXggcmV0dXJuLCBpdCBpcyBpbXBlcmF0aXZlIHRoYXQgd2UgZ2F0aGVyIGFsbCBuZWNlc3NhcnkgZG9jdW1lbnRzIHJlbGF0ZWQgdG8gdGhpcyBpbmNvbWUuPC9wPlxyXG4gICAgPHA+SWYgd2UgYXJlIHByZXBhcmluZyB5b3VyIGJ1c2luZXNzIHJldHVybiwgcmVzdCBhc3N1cmVkIHRoYXQgd2Ugd2lsbCBnZW5lcmF0ZSB0aGUgYXBwbGljYWJsZSBTY2hlZHVsZSBLLTEocykgZm9yIHlvdXIgYnVzaW5lc3MgaW50ZXJlc3RzLiBIb3dldmVyLCBpdCBpcyBlc3NlbnRpYWwgdGhhdCB3ZSBjb2xsZWN0IGNvcGllcyBvZiA8c3Ryb25nPmFsbCBvdGhlciBTY2hlZHVsZSBLLTFzPC9zdHJvbmc+IHlvdSBtYXkgaGF2ZSByZWNlaXZlZCB0byBpbmNvcnBvcmF0ZSBpbnRvIHlvdXIgcGVyc29uYWwgdGF4IHJldHVybi48L3A+ICBcclxuICAgIDxoMz5TcGVjaWZpYyBEb2N1bWVudCBSZXF1ZXN0OjwvaDM+XHJcbiAgICA8b2w+XHJcbiAgICAgICAgPGxpPkFueSBhbmQgYWxsIFNjaGVkdWxlIEstMShzKSB5b3UgaGF2ZSByZWNlaXZlZCBmcm9tOjwvbGk+XHJcbiAgICAgICAgPHVsPlxyXG4gICAgICAgICAgICA8bGk+UGFydG5lcnNoaXBzPC9saT5cclxuICAgICAgICAgICAgPGxpPlMgQ29ycG9yYXRpb25zPC9saT5cclxuICAgICAgICAgICAgPGxpPkVzdGF0ZSBvciBUcnVzdHM8L2xpPlxyXG4gICAgICAgIDwvdWw+XHJcbiAgICA8L29sPlxyXG4gICAgPHA+UGxlYXNlIGVuc3VyZSB0aGF0IGFsbCBkb2N1bWVudHMgYXJlIDxzdHJvbmc+Y2xlYXIgYW5kIGxlZ2libGU8L3N0cm9uZz4gdG8gcHJldmVudCBhbnkgZGVsYXlzIGluIHByb2Nlc3NpbmcgeW91ciByZXR1cm4uIFlvdSBtYXkgc3VibWl0IHRoZXNlIGRvY3VtZW50cyB0aHJvdWdoIG91ciBzZWN1cmUgY2xpZW50IHBvcnRhbCwgb3IgY29udGFjdCB1cyB0byBtYWtlIGFsdGVybmF0aXZlIGFycmFuZ2VtZW50cyBpZiBuZWNlc3NhcnkuPC9wPlxyXG4gICAgPHA+V2UgYXBwcmVjaWF0ZSB5b3VyIHByb21wdCBhdHRlbnRpb24gdG8gdGhpcyByZXF1ZXN0LiBTaG91bGQgeW91IGhhdmUgYW55IHF1ZXN0aW9ucyBvciByZXF1aXJlIGFueSBhc3Npc3RhbmNlLCBwbGVhc2UgZG8gbm90IGhlc2l0YXRlIHRvIHJlYWNoIG91dC48L3A+YFxyXG4gIH0sXHJcbiAge1xyXG4gICAgYWN0aW9uVGF4U3ViamVjdDogXCJPdGhlciBTZWxmLUVtcGxveW1lbnQgSW5jb21lXCIsXHJcbiAgICBhY3Rpb25UaXRsZTogXCJPdGhlciBTZWxmLUVtcGxveW1lbnQgSW5jb21lXCIsXHJcbiAgICBhY3Rpb25JbnN0cnVjdGlvbnM6IGA8cD5XZSBhcmUgaW4gdGhlIHByb2Nlc3Mgb2YgcHJlcGFyaW5nIHlvdXIgdGF4ZXMgYW5kIGhhdmUgbm90ZWQgdGhhdCB5b3UgaGF2ZSBpbmRpY2F0ZWQgdGhlIHByZXNlbmNlIG9mIHNlbGYtZW1wbG95bWVudCBpbmNvbWUgbm90IHJlcG9ydGVkIHRocm91Z2ggMTA5OS1ORUMgZm9ybXMgb3IgYSBTY2hlZHVsZSBLLTEuIFRvIGVuc3VyZSB5b3VyIHRheCByZXR1cm4gaXMgYWNjdXJhdGUgYW5kIG1heGltaXplcyB5b3VyIGJlbmVmaXRzLCBpdCdzIGNydWNpYWwgd2UgZ2F0aGVyIG1vcmUgZGV0YWlscyBhYm91dCB0aGVzZSBzb3VyY2VzIG9mIGluY29tZS4gUGxlYXNlIHByb3ZpZGUgdGhlIGZvbGxvd2luZyBpbmZvcm1hdGlvbjo8L3A+XHJcbiAgICA8b2w+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+RGVzY3JpcHRpb24gb2YgZWFjaCBzZWxmLWVtcGxveW1lbnQgYWN0aXZpdHk6PC9zdHJvbmc+IEJyaWVmbHkgZGVzY3JpYmUgdGhlIG5hdHVyZSBvZiBlYWNoIGFjdGl2aXR5IGZyb20gd2hpY2ggeW91IGRlcml2ZSBzZWxmLWVtcGxveW1lbnQgaW5jb21lLjwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+RGF0ZXMgb2Ygb3BlcmF0aW9uOjwvc3Ryb25nPiBGb3IgZWFjaCBzZWxmLWVtcGxveW1lbnQgYWN0aXZpdHksIHNwZWNpZnkgdGhlIGRhdGVzIG9yIHJhbmdlIG9mIGRhdGVzIGR1cmluZyB3aGljaCB5b3UgZWFybmVkIGluY29tZS48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPlRvdGFsIGluY29tZSBnZW5lcmF0ZWQ6PC9zdHJvbmc+IEZvciBlYWNoIGFjdGl2aXR5LCBwcm92aWRlIHRoZSB0b3RhbCBhbW91bnQgb2YgaW5jb21lIGVhcm5lZCBiZWZvcmUgYW55IGV4cGVuc2VzLjwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+RXhwZW5zZXMgaW5jdXJyZWQ6PC9zdHJvbmc+IExpc3QgYWxsIGV4cGVuc2VzIHJlbGF0ZWQgdG8gZWFjaCBzZWxmLWVtcGxveW1lbnQgYWN0aXZpdHkuIFBsZWFzZSBjYXRlZ29yaXplIHRoZXNlIGV4cGVuc2VzIChlLmcuLCBvZmZpY2Ugc3VwcGxpZXMsIHRyYXZlbCwgYWR2ZXJ0aXNpbmcpLjwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+UmVjb3JkcyBvciBkb2N1bWVudGF0aW9uOjwvc3Ryb25nPiBBbnkgZXhpc3RpbmcgcmVjb3JkcyBvciBkb2N1bWVudGF0aW9uIHRoYXQgY29ycm9ib3JhdGUgeW91ciBpbmNvbWUgYW5kIGV4cGVuc2VzLCBzdWNoIGFzIGJhbmsgc3RhdGVtZW50cywgcmVjZWlwdHMsIGludm9pY2VzLCBvciBjb250cmFjdHMuPC9saT5cclxuICAgIDwvb2w+XHJcbiAgICA8cD5UaGlzIGluZm9ybWF0aW9uIGlzIHZpdGFsIGZvciBkZXRlcm1pbmluZyB0aGUgY29ycmVjdCBhbW91bnQgb2YgdGF4IHlvdSBvd2UgYW5kIGlkZW50aWZ5aW5nIGFueSBwb3RlbnRpYWwgZGVkdWN0aW9ucyB0aGF0IGNhbiBtaW5pbWl6ZSB5b3VyIHRheCBsaWFiaWxpdHkuIFBsZWFzZSBwcm92aWRlIHRoZXNlIGRldGFpbHMgYXQgeW91ciBlYXJsaWVzdCBjb252ZW5pZW5jZSB0byBlbnN1cmUgYSBzbW9vdGggYW5kIGVmZmljaWVudCB0YXggcHJlcGFyYXRpb24gcHJvY2Vzcy48L3A+XHJcbiAgICA8cD5JZiB5b3UgaGF2ZSBhbnkgcXVlc3Rpb25zIG9yIG5lZWQgYXNzaXN0YW5jZSBpbiBnYXRoZXJpbmcgdGhpcyBpbmZvcm1hdGlvbiwgcGxlYXNlIGRvIG5vdCBoZXNpdGF0ZSB0byBjb250YWN0IHVzLiBZb3VyIHRpbWVseSBjb29wZXJhdGlvbiBpcyBncmVhdGx5IGFwcHJlY2lhdGVkLCBhbmQgd2UgYXJlIGhlcmUgdG8gaGVscCBldmVyeSBzdGVwIG9mIHRoZSB3YXkuPC9wPmBcclxuICB9LFxyXG4gIHtcclxuICAgIGFjdGlvblRheFN1YmplY3Q6IFwiRW1wbG95bWVudCBXYWdlc1wiLFxyXG4gICAgYWN0aW9uVGl0bGU6IFwiRW1wbG95bWVudCBXYWdlc1wiLFxyXG4gICAgYWN0aW9uSW5zdHJ1Y3Rpb25zOiBgPHA+VGhhbmsgeW91IGZvciBlbnRydXN0aW5nIHVzIHdpdGggdGhlIHByZXBhcmF0aW9uIG9mIHlvdXIgdGF4IHJldHVybnMuIEFzIHBhcnQgb2Ygb3VyIGNvbXByZWhlbnNpdmUgcmV2aWV3IGFuZCBpbiBvdXIgcXVlc3QgdG8gZW5zdXJlIHRoZSBhY2N1cmFjeSBvZiB5b3VyIHRheCBmaWxpbmdzLCB3ZSB1bmRlcnN0YW5kIHRoYXQgeW91IGhhdmUgcmVjZWl2ZWQgd2FnZXMgZnJvbSBlbXBsb3ltZW50IG92ZXIgdGhlIHBhc3QgdGF4IHllYXIuPC9wPlxyXG4gICAgPHA+VG8gcHJvY2VlZCBlZmZlY3RpdmVseSwgd2Uga2luZGx5IHJlcXVlc3QgdGhlIGZvbGxvd2luZyBkb2N1bWVudHMgYW5kIGluZm9ybWF0aW9uOjwvcD5cclxuICAgIDxvbD5cclxuICAgICAgICA8bGk+PHN0cm9uZz5XLTIgRm9ybXM6PC9zdHJvbmc+IFBsZWFzZSBwcm92aWRlIGNvcGllcyBvZiBhbGwgVy0yIGZvcm1zIHJlY2VpdmVkIGZyb20geW91ciBlbXBsb3llcnMuIFRoaXMgaW5jbHVkZXMgd2FnZXMgZWFybmVkIGZyb20gYWxsIHNvdXJjZXMsIG5vdCBqdXN0IGZyb20gdGhlIFMtQ29ycG9yYXRpb24sIGlmIGFwcGxpY2FibGUuPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5WZXJpZmljYXRpb24gb2YgUy1Db3Jwb3JhdGlvbiBXYWdlczo8L3N0cm9uZz4gSWYgd2UgYXJlIGFsc28gaGFuZGxpbmcgeW91ciBidXNpbmVzcyB0YXhlcyBmb3IgYW4gUy1Db3Jwb3JhdGlvbiwgd2UgbGlrZWx5IGhhdmUgdGhlIHdhZ2UgaW5mb3JtYXRpb24gZm9yIHRoYXQgZW50aXR5LiBIb3dldmVyLCBmb3IgdGhvcm91Z2huZXNzIGFuZCBjb21wbGlhbmNlLCBwbGVhc2UgY29uZmlybSBpZiB0aGUgd2FnZXMgZnJvbSB0aGUgUy1Db3Jwb3JhdGlvbiBhcmUgZnVsbHkgcmVwcmVzZW50ZWQgaW4gdGhlIGRvY3VtZW50cyB3ZSBhbHJlYWR5IGhvbGQuIFRoaXMgd2lsbCBoZWxwIHVzIHZlcmlmeSB0aGF0IGFsbCBpbmNvbWUgaXMgYWNjdXJhdGVseSByZXBvcnRlZC48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPkFkZGl0aW9uYWwgSW5jb21lIERvY3VtZW50czo8L3N0cm9uZz4gU2hvdWxkIHlvdSBoYXZlIG90aGVyIHNvdXJjZXMgb2Ygd2FnZSBpbmNvbWUgKGUuZy4sIGNvbnRyYWN0IHdvcmssIGJvbnVzZXMsIGV0Yy4pIG5vdCBjb3ZlcmVkIGJ5IHRoZSBXLTIgZm9ybXMgcHJvdmlkZWQsIHBsZWFzZSBpbmNsdWRlIGFueSAxMDk5IGZvcm1zIG9yIG90aGVyIHJlbGV2YW50IGRvY3VtZW50YXRpb24uPC9saT5cclxuICAgIDwvb2w+XHJcbiAgICA8cD5Zb3VyIGNvb3BlcmF0aW9uIGlzIGNydWNpYWwgZm9yIGVuc3VyaW5nIGEgc21vb3RoIGFuZCBlZmZpY2llbnQgdGF4IHByZXBhcmF0aW9uIHByb2Nlc3MuIEtpbmRseSBwcm92aWRlIHRoZSByZXF1ZXN0ZWQgZG9jdW1lbnRzIGFuZCBpbmZvcm1hdGlvbiBhdCB5b3VyIGVhcmxpZXN0IGNvbnZlbmllbmNlLjwvcD5cclxuICAgIDxwPklmIHlvdSBoYXZlIGFueSBxdWVzdGlvbnMgb3IgbmVlZCBmdXJ0aGVyIGNsYXJpZmljYXRpb24sIHBsZWFzZSBkbyBub3QgaGVzaXRhdGUgdG8gY29udGFjdCB1cyBkaXJlY3RseS4gVGhhbmsgeW91IGZvciB5b3VyIHByb21wdCBhdHRlbnRpb24gdG8gdGhpcyBtYXR0ZXIuPC9wPmBcclxuICB9LFxyXG4gIHtcclxuICAgIGFjdGlvblRheFN1YmplY3Q6IFwiUHJvcGVydHkgb3IgU2VydmljZXMgTGlldSBXYWdlc1wiLFxyXG4gICAgYWN0aW9uVGl0bGU6IFwiUHJvcGVydHkvU2VydmljZXMgaW4gTGlldSBvZiBXYWdlc1wiLFxyXG4gICAgYWN0aW9uSW5zdHJ1Y3Rpb25zOiBgPHA+V2UgYXJlIGN1cnJlbnRseSBpbiB0aGUgcHJvY2VzcyBvZiBwcmVwYXJpbmcgeW91ciB0YXggcmV0dXJuIGFuZCBoYXZlIG5vdGVkIHRoYXQgeW91IHJlY2VpdmVkIHByb3BlcnR5IGFuZC9vciBzZXJ2aWNlcyBpbiBsaWV1IG9mIHRyYWRpdGlvbmFsIHdhZ2VzIGR1cmluZyB0aGUgdGF4IHllYXIuIFRoaXMgdHlwZSBvZiBjb21wZW5zYXRpb24gY29uc3RpdHV0ZXMgdGF4YWJsZSBpbmNvbWUgYW5kIG11c3QgYmUgYWNjdXJhdGVseSByZXBvcnRlZCB0byBlbnN1cmUgeW91ciB0YXggcmV0dXJuIGlzIGZ1bGx5IGNvbXBsaWFudCB3aXRoIElSUyByZWd1bGF0aW9ucy48L3A+XHJcbiAgICA8cD5UbyBhY2N1cmF0ZWx5IHJlY29nbml6ZSBhbmQgcmVwb3J0IHRoZXNlIGl0ZW1zIGFzIHRheGFibGUgaW5jb21lLCB3ZSByZXF1aXJlIHRoZSBmb2xsb3dpbmcgZGV0YWlsZWQgaW5mb3JtYXRpb246PC9wPlxyXG4gICAgPG9sPlxyXG4gICAgPGxpPjxzdHJvbmc+RGVzY3JpcHRpb24gb2YgUHJvcGVydHkgb3IgU2VydmljZXM6PC9zdHJvbmc+IFByb3ZpZGUgYSBkZXRhaWxlZCBkZXNjcmlwdGlvbiBvZiBhbnkgcHJvcGVydHkgb3Igc2VydmljZXMgeW91IHJlY2VpdmVkLiBQbGVhc2UgaW5jbHVkZSBwaHlzaWNhbCBjaGFyYWN0ZXJpc3RpY3MgZm9yIHByb3BlcnR5IG9yIHRoZSBzY29wZSBvZiBzZXJ2aWNlcyByZW5kZXJlZC48L2xpPlxyXG4gICAgPGxpPjxzdHJvbmc+RmFpciBNYXJrZXQgVmFsdWUgYXQgVGltZSBvZiBSZWNlaXB0Ojwvc3Ryb25nPiBJbmRpY2F0ZSB0aGUgZmFpciBtYXJrZXQgdmFsdWUgKEZNVikgb2YgZWFjaCBwcm9wZXJ0eSBvciBzZXJ2aWNlIGF0IHRoZSB0aW1lIHlvdSByZWNlaXZlZCBpdC4gSWYgeW91IGhhdmUgYW55IGFwcHJhaXNhbHMgb3IgZG9jdW1lbnRzIHRvIHN1cHBvcnQgdGhlIEZNViwgcGxlYXNlIGluY2x1ZGUgdGhlbS48L2xpPlxyXG4gICAgPGxpPjxzdHJvbmc+RG9jdW1lbnRhdGlvbiBvciBBZ3JlZW1lbnRzOjwvc3Ryb25nPiBQcm92aWRlIGFueSBkb2N1bWVudGF0aW9uIG9yIHdyaXR0ZW4gYWdyZWVtZW50cyB0aGF0IGRldGFpbCB0aGUgYXJyYW5nZW1lbnQgZm9yIHJlY2VpdmluZyBwcm9wZXJ0eSBvciBzZXJ2aWNlcyBpbiBsaWV1IG9mIHdhZ2VzLiBUaGlzIGNhbiBpbmNsdWRlIGNvbnRyYWN0cywgZW1haWxzLCBvciBhbnkgZm9ybSBvZiBjb21tdW5pY2F0aW9uIHRoYXQgb3V0bGluZXMgdGhlIGFncmVlbWVudC48L2xpPlxyXG4gICAgPGxpPjxzdHJvbmc+RGF0ZSBvZiBSZWNlaXB0Ojwvc3Ryb25nPiBTcGVjaWZ5IHRoZSBkYXRlKHMpIG9uIHdoaWNoIHlvdSByZWNlaXZlZCB0aGUgcHJvcGVydHkgb3Igc2VydmljZXMuPC9saT5cclxuICAgIDxsaT48c3Ryb25nPkVtcGxveWVyL1Byb3ZpZGVyIEluZm9ybWF0aW9uOjwvc3Ryb25nPiBQcm92aWRlIHRoZSBuYW1lIGFuZCBjb250YWN0IGluZm9ybWF0aW9uIG9mIHRoZSBpbmRpdmlkdWFsIG9yIGVudGl0eSB0aGF0IHByb3ZpZGVkIHRoZSBwcm9wZXJ0eSBvciBzZXJ2aWNlcy48L2xpPlxyXG4gICAgPC9vbD5cclxuICAgIDxwPlBsZWFzZSBlbnN1cmUgdGhhdCBhbGwgcHJvdmlkZWQgaW5mb3JtYXRpb24gaXMgYXMgYWNjdXJhdGUgYW5kIGNvbXBsZXRlIGFzIHBvc3NpYmxlLiBJbmNvbXBsZXRlIG9yIGluYWNjdXJhdGUgaW5mb3JtYXRpb24gbWF5IGxlYWQgdG8gZGVsYXlzIGluIHRoZSBwcmVwYXJhdGlvbiBvZiB5b3VyIHRheCByZXR1cm4gb3IgcG90ZW50aWFsIGlzc3VlcyB3aXRoIHRoZSBJUlMuPC9wPlxyXG4gICAgPHA+SWYgeW91IGhhdmUgYW55IHF1ZXN0aW9ucyBvciBuZWVkIGNsYXJpZmljYXRpb24gcmVnYXJkaW5nIHRoZSBpbmZvcm1hdGlvbiByZXF1ZXN0ZWQsIHBsZWFzZSBkbyBub3QgaGVzaXRhdGUgdG8gY29udGFjdCB1cyBkaXJlY3RseS4gWW91ciBwcm9tcHQgYXR0ZW50aW9uIHRvIHRoaXMgcmVxdWVzdCBpcyBncmVhdGx5IGFwcHJlY2lhdGVkIGFuZCBjcml0aWNhbCBmb3IgdGhlIHRpbWVseSBhbmQgYWNjdXJhdGUgY29tcGxldGlvbiBvZiB5b3VyIHRheCByZXR1cm4uPC9wPmBcclxuICB9LFxyXG4gIHtcclxuICAgIGFjdGlvblRheFN1YmplY3Q6IFwiRW1wbG95ZWUgQWNjb3VudGFibGUgUGxhblwiLFxyXG4gICAgYWN0aW9uVGl0bGU6IFwiRW1wbG95ZWUgQWNjb3VudGFibGUgUGxhblwiLFxyXG4gICAgYWN0aW9uSW5zdHJ1Y3Rpb25zOiBgPHA+V2UgYXJlIGluIHRoZSBwcm9jZXNzIG9mIHByZXBhcmluZyB5b3VyIHRheCByZXR1cm4gYW5kIG5vdGljZWQgeW91J3ZlIG1lbnRpb25lZCBiZWluZyByZWltYnVyc2VkIGZvciBjZXJ0YWluIGV4cGVuc2VzIHVuZGVyIGFuIEVtcGxveWVlIEFjY291bnRhYmxlIFBsYW4uIFRvIGFjY3VyYXRlbHkgYWNjb3VudCBmb3IgdGhlc2UgcmVpbWJ1cnNlbWVudHMgYW5kIGVuc3VyZSBjb21wbGlhbmNlIHdpdGggSVJTIHJ1bGVzLCB3ZSBraW5kbHkgcmVxdWVzdCB0aGUgZm9sbG93aW5nIGRvY3VtZW50cyBhbmQgaW5mb3JtYXRpb246PC9wPlxyXG4gICAgPG9sPlxyXG4gICAgICAgIDxsaT5BIGNvcHkgb2YgdGhlIGZvcm1hbCB3cml0dGVuIEFjY291bnRhYmxlIFBsYW4gcHJvdmlkZWQgYnkgeW91ciBlbXBsb3llci4gVGhpcyBzaG91bGQgb3V0bGluZSB0aGUgZXhwZW5zZSBhbGxvd2FuY2UgYW5kIHRoZSBzcGVjaWZpY3Mgb2YgdGhlIHJlaW1idXJzZW1lbnQgcG9saWN5LjwvbGk+XHJcbiAgICAgICAgPGxpPkFueSBkb2N1bWVudGF0aW9uIG9yIGNvcnJlc3BvbmRlbmNlIGZyb20geW91ciBlbXBsb3llciBjb25maXJtaW5nIHlvdXIgcGFydGljaXBhdGlvbiBpbiB0aGUgQWNjb3VudGFibGUgUGxhbi48L2xpPlxyXG4gICAgICAgIDxsaT5EZXRhaWxzIG9mIHRoZSBleHBlbnNlcyByZWltYnVyc2VkIHVuZGVyIHRoZSBwbGFuLCBpbmNsdWRpbmcgZGF0ZXMsIGFtb3VudHMsIGFuZCB0aGUgbmF0dXJlIG9mIHRoZSBleHBlbnNlcy48L2xpPlxyXG4gICAgICAgIDxsaT5Qcm9vZiBvZiBleHBlbnNlIChyZWNlaXB0cyBvciBpbnZvaWNlcykgcHJvdmlkZWQgdG8geW91ciBlbXBsb3llciBmb3IgcmVpbWJ1cnNlbWVudCB1bmRlciB0aGUgcGxhbi48L2xpPlxyXG4gICAgICAgIDxsaT5BbnkgYWRkaXRpb25hbCBkb2N1bWVudGF0aW9uIG9yIGluZm9ybWF0aW9uIHJlbGV2YW50IHRvIHRoZSByZWltYnVyc2VtZW50cyBvciB0aGUgQWNjb3VudGFibGUgUGxhbi48L2xpPlxyXG4gICAgPC9vbD5cclxuICAgIDxwPlBsZWFzZSBzZW5kIHVzIHRoaXMgaW5mb3JtYXRpb24gYXQgeW91ciBlYXJsaWVzdCBjb252ZW5pZW5jZSB0byBlbnN1cmUgd2UgY2FuIHByb2NlZWQgc21vb3RobHkgd2l0aCB5b3VyIHRheCByZXR1cm4gcHJlcGFyYXRpb24uIElmIHlvdSBoYXZlIGFueSBxdWVzdGlvbnMgb3IgbmVlZCBmdXJ0aGVyIGNsYXJpZmljYXRpb24sIGRvIG5vdCBoZXNpdGF0ZSB0byByZWFjaCBvdXQuPC9wPlxyXG4gICAgPHA+VGhhbmsgeW91IGZvciB5b3VyIHByb21wdCBhdHRlbnRpb24gdG8gdGhpcyBtYXR0ZXIuPC9wPmBcclxuICB9LFxyXG4gIHtcclxuICAgIGFjdGlvblRheFN1YmplY3Q6IFwiVGF4YWJsZSBGcmluZ2UgQmVuZWZpdHNcIixcclxuICAgIGFjdGlvblRpdGxlOiBcIlRheGFibGUgRnJpbmdlIEJlbmVmaXRzXCIsXHJcbiAgICBhY3Rpb25JbnN0cnVjdGlvbnM6IGBcclxuICAgIDxwPldlIGFyZSBpbiB0aGUgcHJvY2VzcyBvZiBlbnN1cmluZyBhbGwgZm9ybXMgb2YgY29tcGVuc2F0aW9uLCBpbmNsdWRpbmcgdGF4YWJsZSBmcmluZ2UgYmVuZWZpdHMsIGFyZSBhY2N1cmF0ZWx5IHJlcG9ydGVkIG9uIHlvdXIgdGF4IHJldHVybnMuIEJhc2VkIG9uIG91ciBwcmV2aW91cyBjb21tdW5pY2F0aW9uLCBpdCBhcHBlYXJzIHlvdSBtYXkgaGF2ZSByZWNlaXZlZCBiZW5lZml0cyB0aGF0IG5lZWQgdG8gYmUgcmV2aWV3ZWQgZnVydGhlci4gVG8gYXNzaXN0IHlvdSBwcm9wZXJseSwgd2UgcmVxdWVzdCB0aGUgZm9sbG93aW5nIHNwZWNpZmljIGRldGFpbHM6PC9wPlxyXG48b2w+XHJcbiAgPGxpPjxzdHJvbmc+RGVzY3JpcHRpb24gb2YgZWFjaCBiZW5lZml0IHJlY2VpdmVkOjwvc3Ryb25nPiBQbGVhc2UgcHJvdmlkZSBhIGJyaWVmIGRlc2NyaXB0aW9uIG9mIHRoZSBmcmluZ2UgYmVuZWZpdHMgcmVjZWl2ZWQgZHVyaW5nIHRoZSB0YXggeWVhciwgaW5jbHVkaW5nIGJ1dCBub3QgbGltaXRlZCB0byBjb21wYW55IGNhcnMsIG1lbWJlcnNoaXBzLCBlZHVjYXRpb25hbCBhc3Npc3RhbmNlLCBldGMuPC9saT5cclxuICA8bGk+PHN0cm9uZz5WYWx1ZSBvZiBlYWNoIGJlbmVmaXQ6PC9zdHJvbmc+IFRoZSBmYWlyIG1hcmtldCB2YWx1ZSAoRk1WKSBvZiBlYWNoIGJlbmVmaXQuIElmIHlvdSdyZSB1bnN1cmUsIHBsZWFzZSBwcm92aWRlIGFuIGVzdGltYXRlIGFuZCB0aGUgYmFzaXMgZm9yIHRoaXMgZXN0aW1hdGUuPC9saT5cclxuICA8bGk+PHN0cm9uZz5BbnkgYW1vdW50cyBjb250cmlidXRlZCBieSB5b3U6PC9zdHJvbmc+IElmIHlvdSBtYWRlIGNvbnRyaWJ1dGlvbnMgdG93YXJkIHRoZSBjb3N0IG9mIGFueSBiZW5lZml0LCBwbGVhc2Ugc3BlY2lmeSB0aGUgYW1vdW50cyBhbmQgZm9yIHdoaWNoIGJlbmVmaXRzLjwvbGk+XHJcbiAgPGxpPjxzdHJvbmc+QmVuZWZpdCBkb2N1bWVudGF0aW9uOjwvc3Ryb25nPiBBbnkgYXZhaWxhYmxlIGRvY3VtZW50YXRpb24gdGhhdCBjYW4gc3VwcG9ydCB0aGUgaW5mb3JtYXRpb24gcHJvdmlkZWQsIHN1Y2ggYXMgc3RhdGVtZW50cywgYWdyZWVtZW50cywgb3IgcmVjZWlwdHMuPC9saT5cclxuICA8bGk+PHN0cm9uZz5EYXRlczo8L3N0cm9uZz4gVGhlIHBlcmlvZCBkdXJpbmcgd2hpY2ggeW91IHJlY2VpdmVkIHRoZXNlIGJlbmVmaXRzLiBJbmNsdWRlIHNwZWNpZmljIGRhdGVzIGlmIHBvc3NpYmxlLjwvbGk+XHJcbiAgPGxpPjxzdHJvbmc+RW1wbG95ZXIgSW5mb3JtYXRpb246PC9zdHJvbmc+IFRoZSBuYW1lIGFuZCBjb250YWN0IGluZm9ybWF0aW9uIG9mIHRoZSBlbXBsb3llcihzKSBwcm92aWRpbmcgdGhlc2UgYmVuZWZpdHMuPC9saT5cclxuPC9vbD5cclxuPHA+VGhpcyBpbmZvcm1hdGlvbiBpcyBjcnVjaWFsIGZvciBhY2N1cmF0ZWx5IGRldGVybWluaW5nIHRoZSB0YXhhYmxlIHZhbHVlIG9mIHRoZXNlIGZyaW5nZSBiZW5lZml0cyBhbmQgZW5zdXJpbmcgY29tcGxpYW5jZSB3aXRoIElSUyByZWd1bGF0aW9ucy4gSWYgeW91IGhhdmUgYW55IHF1ZXN0aW9ucyBvciBuZWVkIGFzc2lzdGFuY2UgaW4gZ2F0aGVyaW5nIHRoaXMgaW5mb3JtYXRpb24sIHBsZWFzZSBkb24ndCBoZXNpdGF0ZSB0byBjb250YWN0IHVzLjwvcD5cclxuPHA+V2UgYXBwcmVjaWF0ZSB5b3VyIHByb21wdCBhdHRlbnRpb24gdG8gdGhpcyBtYXR0ZXIgYW5kIGxvb2sgZm9yd2FyZCB0byBhc3Npc3RpbmcgeW91IGZ1cnRoZXIuPC9wPmBcclxuICB9LFxyXG4gIHtcclxuICAgIGFjdGlvblRheFN1YmplY3Q6IFwiTm9uIFRheGFibGUgRnJpbmdlIEJlbmVmaXRzXCIsXHJcbiAgICBhY3Rpb25UaXRsZTogXCJOb24gVGF4YWJsZSBGcmluZ2UgQmVuZWZpdHNcIixcclxuICAgIGFjdGlvbkluc3RydWN0aW9uczogYDxwPldlIGFyZSBpbiB0aGUgcHJvY2VzcyBvZiBmaW5hbGl6aW5nIHlvdXIgdGF4IHJldHVybiBhbmQgaGF2ZSBpZGVudGlmaWVkIHBvdGVudGlhbCBub24tdGF4YWJsZSBmcmluZ2UgYmVuZWZpdHMgdGhhdCBtYXkgYXBwbHkgdG8geW91ciBzaXR1YXRpb24uIFRvIGVuc3VyZSBhY2N1cmF0ZSByZXBvcnRpbmcgYW5kIG9wdGltaXplIHlvdXIgdGF4IG91dGNvbWUsIHdlIGtpbmRseSByZXF1ZXN0IHRoZSBmb2xsb3dpbmcgZGV0YWlsZWQgaW5mb3JtYXRpb24gcmVnYXJkaW5nIGFueSBub24tdGF4YWJsZSBmcmluZ2UgYmVuZWZpdHMgeW91IG1heSBoYXZlIHJlY2VpdmVkOjwvcD5cclxuICAgIDxvbD5cclxuICAgICAgPGxpPjxzdHJvbmc+RGVzY3JpcHRpb24gb2YgZWFjaCBiZW5lZml0Ojwvc3Ryb25nPiBQbGVhc2UgcHJvdmlkZSBhIGRldGFpbGVkIGRlc2NyaXB0aW9uIG9mIHRoZSBub24tdGF4YWJsZSBmcmluZ2UgYmVuZWZpdHMgcmVjZWl2ZWQgZHVyaW5nIHRoZSB0YXggeWVhci4gVGhpcyBtYXkgaW5jbHVkZSBoZWFsdGggc2F2aW5ncyBhY2NvdW50cyAoSFNBcyksIGVtcGxveWVlIGRpc2NvdW50cywgcHVibGljIHRyYW5zaXQgcGFzc2VzLCBldGMuPC9saT5cclxuICAgICAgPGxpPjxzdHJvbmc+VmFsdWUgb2YgZWFjaCBiZW5lZml0Ojwvc3Ryb25nPiBUaGUgZmFpciBtYXJrZXQgdmFsdWUgKEZNVikgb2YgZWFjaCBiZW5lZml0LiBGb3Igbm9uLXRheGFibGUgYmVuZWZpdHMsIHRoaXMgaGVscHMgaW4gcmVjb3JkLWtlZXBpbmcgYW5kIGNvbmZpcm1pbmcgZXhlbXB0aW9uIHN0YXR1cy48L2xpPlxyXG4gICAgICA8bGk+PHN0cm9uZz5Db250cmlidXRpb24gYW1vdW50cywgaWYgYW55Ojwvc3Ryb25nPiBJZiB5b3UgaGF2ZSBjb250cmlidXRlZCB0b3dhcmRzIGFueSBvZiB0aGVzZSBiZW5lZml0cywgaW5kaWNhdGUgdGhlIGFtb3VudHMgYW5kIGZvciB3aGljaCBiZW5lZml0cy48L2xpPlxyXG4gICAgICA8bGk+PHN0cm9uZz5CZW5lZml0IGRvY3VtZW50YXRpb246PC9zdHJvbmc+IEFueSBkb2N1bWVudGF0aW9uIHRoYXQgY2FuIGNvcnJvYm9yYXRlIHRoZSBpbmZvcm1hdGlvbiBwcm92aWRlZCwgc3VjaCBhcyBzdGF0ZW1lbnRzLCBhZ3JlZW1lbnRzLCBvciByZWNlaXB0cy48L2xpPlxyXG4gICAgICA8bGk+PHN0cm9uZz5EYXRlcyBvZiByZWNlaXB0Ojwvc3Ryb25nPiBUaGUgdGltZWZyYW1lIGR1cmluZyB3aGljaCB5b3UgcmVjZWl2ZWQgdGhlc2UgYmVuZWZpdHMuIEluY2x1ZGUgYXMgcHJlY2lzZSBkYXRlcyBhcyBwb3NzaWJsZS48L2xpPlxyXG4gICAgICA8bGk+PHN0cm9uZz5FbXBsb3llciBvciBwcm92aWRlciBpbmZvcm1hdGlvbjo8L3N0cm9uZz4gVGhlIG5hbWUgYW5kIGNvbnRhY3QgZGV0YWlscyBvZiB0aGUgZW1wbG95ZXIocykgb3IgdGhpcmQtcGFydHkgcHJvdmlkZXIocykgb2ZmZXJpbmcgdGhlc2UgYmVuZWZpdHMuPC9saT5cclxuICAgIDwvb2w+XHJcbiAgICA8cD5HYXRoZXJpbmcgdGhpcyBpbmZvcm1hdGlvbiBoZWxwcyBlbnN1cmUgdGhhdCB5b3VyIHRheCBmaWxpbmdzIGFyZSBhY2N1cmF0ZSBhbmQgdGhhdCB5b3UgcmVjZWl2ZSB0aGUgZnVsbCBhZHZhbnRhZ2Ugb2Ygbm9uLXRheGFibGUgZnJpbmdlIGJlbmVmaXRzLiBQbGVhc2UgbGV0IHVzIGtub3cgaWYgeW91IG5lZWQgYW55IGhlbHAgaWRlbnRpZnlpbmcgb3IgZG9jdW1lbnRpbmcgdGhlc2UgYmVuZWZpdHMuPC9wPlxyXG4gICAgPHA+WW91ciBwcm9tcHQgcmVzcG9uc2UgaXMgaGlnaGx5IGFwcHJlY2lhdGVkIGFzIHdlIHN0cml2ZSB0byBjb21wbGV0ZSB5b3VyIHRheCBwcmVwYXJhdGlvbiBlZmZpY2llbnRseS4gU2hvdWxkIHlvdSBoYXZlIGFueSBxdWVzdGlvbnMsIGZlZWwgZnJlZSB0byBjb250YWN0IHVzIGRpcmVjdGx5LjwvcD5gXHJcbiAgfSxcclxuICB7XHJcbiAgICBhY3Rpb25UYXhTdWJqZWN0OiBcIlZldGVyYW4gQmVuZWZpdHNcIixcclxuICAgIGFjdGlvblRpdGxlOiBcIlZBIEJlbmVmaXRzXCIsXHJcbiAgICBhY3Rpb25JbnN0cnVjdGlvbnM6IGA8cD5XZSBob3BlIHRoaXMgbWVzc2FnZSBmaW5kcyB5b3Ugd2VsbC4gQXMgcGFydCBvZiBvdXIgb25nb2luZyBlZmZvcnQgdG8gZW5zdXJlIHRoZSBhY2N1cmFjeSBhbmQgY29tcGxldGVuZXNzIG9mIHlvdXIgdGF4IHJldHVybiwgd2UgdW5kZXJzdGFuZCB0aGF0IHlvdSBoYXZlIHJlY2VpdmVkIFZldGVyYW4gQmVuZWZpdHMgZHVyaW5nIHRoZSB0YXggeWVhci4gVG8gYWNjdXJhdGVseSBhc3Nlc3MgdGhlIHRheCBpbXBsaWNhdGlvbnMgb2YgdGhlc2UgYmVuZWZpdHMsIHdlIGtpbmRseSByZXF1ZXN0IGFkZGl0aW9uYWwgaW5mb3JtYXRpb24uPC9wPlxyXG4gICAgPHA+VG8gYXNzaXN0IHVzIGluIHRoaXMgdGFzaywgcGxlYXNlIHByb3ZpZGUgdGhlIGZvbGxvd2luZyBpbmZvcm1hdGlvbjo8L3A+XHJcbiAgICA8b2w+XHJcbiAgICAgICAgPGxpPkEgZGV0YWlsZWQgbGlzdCBvZiB0aGUgVmV0ZXJhbiBCZW5lZml0cyB5b3UgcmVjZWl2ZWQsIGluY2x1ZGluZyBhbnkgZGlzYWJpbGl0eSwgZWR1Y2F0aW9uLCBhbmQgcGVuc2lvbiBiZW5lZml0cy48L2xpPlxyXG4gICAgICAgIDxsaT5PZmZpY2lhbCBkb2N1bWVudGF0aW9uIGZvciBlYWNoIHR5cGUgb2YgYmVuZWZpdCByZWNlaXZlZCwgc3VjaCBhcyBhd2FyZCBsZXR0ZXJzIG9yIHN0YXRlbWVudHMgZnJvbSB0aGUgRGVwYXJ0bWVudCBvZiBWZXRlcmFucyBBZmZhaXJzIChWQSkuPC9saT5cclxuICAgICAgICA8bGk+QW55IGNvcnJlc3BvbmRlbmNlIGZyb20gdGhlIFZBIG9yIG90aGVyIHJlbGV2YW50IGVudGl0aWVzIHJlZ2FyZGluZyB0aGUgdGF4YWJpbGl0eSBvZiB5b3VyIGJlbmVmaXRzLjwvbGk+XHJcbiAgICAgICAgPGxpPlRvdGFsIGFtb3VudCByZWNlaXZlZCBmb3IgZWFjaCBiZW5lZml0IHRocm91Z2hvdXQgdGhlIHRheCB5ZWFyLjwvbGk+XHJcbiAgICAgICAgPGxpPkFueSBvdGhlciBzdXBwb3J0aW5nIGRvY3VtZW50YXRpb24gdGhhdCBjYW4gcHJvdmlkZSBjbGFyaXR5IG9uIHRoZSBuYXR1cmUgYW5kIGFtb3VudCBvZiB5b3VyIFZldGVyYW4gQmVuZWZpdHMuPC9saT5cclxuICAgIDwvb2w+XHJcbiAgICA8cD5UaGlzIGluZm9ybWF0aW9uIGlzIGNydWNpYWwgZm9yIGRldGVybWluaW5nIHdoaWNoIGJlbmVmaXRzIGFyZSB0YXhhYmxlIGFuZCBlbnN1cmluZyB5b3VyIHRheCByZXR1cm4gaXMgY29tcGxldGUgYW5kIGFjY3VyYXRlLiBQbGVhc2Ugc3VibWl0IHRoZXNlIGRvY3VtZW50cyBhdCB5b3VyIGVhcmxpZXN0IGNvbnZlbmllbmNlLjwvcD5cclxuICAgIDxwPklmIHlvdSBoYXZlIGFueSBxdWVzdGlvbnMgb3IgcmVxdWlyZSBhc3Npc3RhbmNlIGluIGdhdGhlcmluZyB0aGVzZSBkb2N1bWVudHMsIHBsZWFzZSBkbyBub3QgaGVzaXRhdGUgdG8gY29udGFjdCB1cy4gVGhhbmsgeW91IGZvciB5b3VyIGNvb3BlcmF0aW9uIGFuZCB0cnVzdCBpbiBvdXIgc2VydmljZXMuPC9wPmBcclxuICB9LFxyXG4gIHtcclxuICAgIGFjdGlvblRheFN1YmplY3Q6IFwiTGlmZSBJbnN1cmFuY2UgUGF5bWVudHNcIixcclxuICAgIGFjdGlvblRpdGxlOiBcIkxpZmUgSW5zdXJhbmNlIFBheW1lbnRzXCIsXHJcbiAgICBhY3Rpb25JbnN0cnVjdGlvbnM6IGA8cD5XZSBoYXZlIG5vdGVkIHlvdXIgbWVudGlvbiBvZiByZWNlaXZpbmcgbGlmZSBpbnN1cmFuY2UgcGF5bWVudHMgZHVyaW5nIHRoZSB0YXggeWVhci4gVG8gYWNjdXJhdGVseSBhc3Nlc3MgdGhlIHRheCBpbXBsaWNhdGlvbnMgYW5kIGVuc3VyZSB0aGVzZSBwcm9jZWVkcyBhcmUgaW5kZWVkIG5vbi10YXhhYmxlLCB3ZSByZXF1aXJlIHRoZSBmb2xsb3dpbmcgZGV0YWlsczo8L3A+XHJcbiAgICA8b2w+XHJcbiAgICAgIDxsaT5UaGUgdG90YWwgYW1vdW50IHJlY2VpdmVkIGZyb20gbGlmZSBpbnN1cmFuY2UgcGF5bWVudHMuPC9saT5cclxuICAgICAgPGxpPkRvY3VtZW50YXRpb24gb3Igc3RhdGVtZW50cyBwZXJ0YWluaW5nIHRvIHRoZSBsaWZlIGluc3VyYW5jZSBwYXltZW50cy48L2xpPlxyXG4gICAgICA8bGk+VGhlIG5hbWUgb2YgdGhlIGluc3VyZWQgaW5kaXZpZHVhbCBhbmQgdGhlaXIgcmVsYXRpb25zaGlwIHRvIHlvdS48L2xpPlxyXG4gICAgICA8bGk+QW55IGNvbW11bmljYXRpb25zIG9yIGxldHRlcnMgZnJvbSB0aGUgaW5zdXJhbmNlIGNvbXBhbnkgcmVnYXJkaW5nIHRoZSB0YXggc3RhdHVzIG9mIHRoZXNlIHBheW1lbnRzLjwvbGk+XHJcbiAgICAgIDxsaT5EZXRhaWxzIHJlZ2FyZGluZyBpZiB0aGUgcG9saWN5IHdhcyBwdXJjaGFzZWQgd2l0aCBhZnRlci10YXggb3IgcHJlLXRheCBkb2xsYXJzLjwvbGk+XHJcbiAgICAgIDxsaT5JZiBhbnkgcG9ydGlvbiBvZiB0aGUgbGlmZSBpbnN1cmFuY2UgcGF5bWVudCB3YXMgYW4gaW52ZXN0bWVudCByZXR1cm4sIHBsZWFzZSBwcm92aWRlIHJlbGF0ZWQgZG9jdW1lbnRzLjwvbGk+XHJcbiAgICA8L29sPlxyXG4gICAgPHA+VGhpcyBpbmZvcm1hdGlvbiBpcyBjcnVjaWFsIGZvciB1cyB0byBndWFyYW50ZWUgdGhlIGFjY3VyYWN5IGFuZCBpbnRlZ3JpdHkgb2YgeW91ciB0YXggcmV0dXJuLiBQbGVhc2UgcHJvdmlkZSB0aGUgcmVxdWVzdGVkIGRvY3VtZW50cyBhbmQgaW5mb3JtYXRpb24gYXQgeW91ciBlYXJsaWVzdCBjb252ZW5pZW5jZS48L3A+XHJcbiAgICA8cD5TaG91bGQgeW91IGhhdmUgYW55IHF1ZXN0aW9ucyBvciBuZWVkIGZ1cnRoZXIgYXNzaXN0YW5jZSwgZmVlbCBmcmVlIHRvIGNvbnRhY3QgdXMuIFdlJ3JlIGhlcmUgdG8gaGVscCE8L3A+YFxyXG4gIH0sXHJcbiAge1xyXG4gICAgYWN0aW9uVGF4U3ViamVjdDogXCJNZWRpY2FyZSBXYWl2ZXIgUGF5bWVudHNcIixcclxuICAgIGFjdGlvblRpdGxlOiBcIk1lZGljYXJlIFdhaXZlciBQYXltZW50c1wiLFxyXG4gICAgYWN0aW9uSW5zdHJ1Y3Rpb25zOiBgPHA+V2UgaG9wZSB0aGlzIG1lc3NhZ2UgZmluZHMgeW91IHdlbGwuIEFzIHdlIHByb2NlZWQgd2l0aCBwcmVwYXJpbmcgeW91ciB0YXggcmV0dXJucywgd2Ugbm90ZWQgdGhhdCB5b3UgaGF2ZSByZWNlaXZlZCBNZWRpY2FyZSBXYWl2ZXIgUGF5bWVudHMgdW5kZXIgdGhlIGRpZmZpY3VsdHktb2YtY2FyZSBwcm92aXNpb25zIGR1cmluZyB0aGUgdGF4IHllYXIuIFRvIGVuc3VyZSB3ZSBtYXhpbWl6ZSB5b3VyIGVsaWdpYmxlIGluY29tZSBleGNsdXNpb25zLCBpdCdzIGNydWNpYWwgd2UgdmVyaWZ5IGNlcnRhaW4gaW5mb3JtYXRpb24gcmVnYXJkaW5nIHlvdXIgbGl2aW5nIGFycmFuZ2VtZW50LCBhcyBwZXIgSVJTIGd1aWRlbGluZXMuPC9wPlxyXG4gICAgPHA+VG8gYXNzaXN0IHVzIGluIGNvbmZpcm1pbmcgdGhhdCB0aGVzZSBwYXltZW50cyBxdWFsaWZ5IGZvciBpbmNvbWUgZXhjbHVzaW9uLCBwbGVhc2UgcHJvdmlkZSB0aGUgZm9sbG93aW5nIGluZm9ybWF0aW9uOjwvcD5cclxuICAgIDxvbD5cclxuICAgICAgICA8bGk+PHN0cm9uZz5Qcm9vZiBvZiBSZXNpZGVuY2U6PC9zdHJvbmc+IERvY3VtZW50cyBwcm92aW5nIHRoYXQgeW91IGFuZCB0aGUgaW5kaXZpZHVhbCB1bmRlciBjYXJlIHNoYXJlZCB0aGUgc2FtZSBwcmltYXJ5IHJlc2lkZW5jZSBkdXJpbmcgdGhlIHJlY2VpcHQgb2YgdGhlc2UgcGF5bWVudHMuIFRoaXMgY291bGQgaW5jbHVkZSB1dGlsaXR5IGJpbGxzLCBhIHJlbnRhbCBhZ3JlZW1lbnQsIG9yIGhvbWVvd25lcidzIGluc3VyYW5jZSBpbiBib3RoIG9mIHlvdXIgbmFtZXMuPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5EZXRhaWxzIG9mIHRoZSBDYXJlIFJlY2lwaWVudDo8L3N0cm9uZz4gSW5mb3JtYXRpb24gYWJvdXQgdGhlIHBlcnNvbiByZWNlaXZpbmcgY2FyZSwgaW5jbHVkaW5nIHRoZWlyIHJlbGF0aW9uc2hpcCB0byB5b3UgYW5kIGFueSBkb2N1bWVudGF0aW9uIHRoYXQgaWRlbnRpZmllcyB0aGVpciBuZWVkIGZvciBjYXJlIChlLmcuLCBhIGxldHRlciBmcm9tIGEgaGVhbHRoY2FyZSBwcm92aWRlcikuPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5QYXltZW50IFJlY29yZHM6PC9zdHJvbmc+IEFueSByZWNvcmRzIG9mIHRoZSBNZWRpY2FyZSBXYWl2ZXIgUGF5bWVudHMgeW91IHJlY2VpdmVkLCBhcyB0aGlzIHdpbGwgaGVscCB1cyBkZXRlcm1pbmUgdGhlIGV4YWN0IGFtb3VudHMgYW5kIHRoZSBwZXJpb2RzIGNvdmVyZWQuPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5BbnkgRm9ybWFsIEFncmVlbWVudHMgb3IgQ29udHJhY3RzOjwvc3Ryb25nPiBJZiB0aGVyZSB3YXMgYSBmb3JtYWwgYWdyZWVtZW50IG9yIGNvbnRyYWN0IGRldGFpbGluZyB0aGUgY2FyZSBwcm92aWRlZCwgcGxlYXNlIGluY2x1ZGUgdGhpcyBhcyB3ZWxsLiBUaGlzIGlzIGVzcGVjaWFsbHkgaW1wb3J0YW50IGlmIHRoZSBjYXJlIGFycmFuZ2VtZW50IHdhcyBmYWNpbGl0YXRlZCB0aHJvdWdoIGEgc3RhdGUgb3IgdGhpcmQtcGFydHkgYWdlbmN5LjwvbGk+XHJcbiAgICA8L29sPlxyXG4gICAgPHA+VGhpcyBpbmZvcm1hdGlvbiBpcyB2aXRhbCB0byBlbnN1cmUgd2UgY29tcGx5IHdpdGggdGF4aW5nIGF1dGhvcml0aWVzIHdoaWxlIGFjY3VyYXRlbHkgcmVmbGVjdGluZyB5b3VyIGZpbmFuY2VzLiBJZiBhbnkgb2YgdGhlc2UgcmVxdWlyZW1lbnRzIHBvc2UgYSBkaWZmaWN1bHR5IG9yIGlmIHlvdSBoYXZlIHF1ZXN0aW9ucywgcGxlYXNlIGRvbid0IGhlc2l0YXRlIHRvIGNvbnRhY3QgdXMgZGlyZWN0bHkuIE91ciBnb2FsIGlzIHRvIHN1cHBvcnQgeW91IHRocm91Z2ggdGhpcyBwcm9jZXNzIGFuZCBvcHRpbWl6ZSB5b3VyIHRheCBiZW5lZml0cy48L3A+XHJcbiAgICA8cD5UaGFuayB5b3UgZm9yIHlvdXIgcHJvbXB0IGF0dGVudGlvbiB0byB0aGlzIG1hdHRlci4gV2UgbG9vayBmb3J3YXJkIHRvIGFzc2lzdGluZyB5b3UgZnVydGhlci48L3A+YFxyXG4gIH0sXHJcbiAge1xyXG4gICAgYWN0aW9uVGF4U3ViamVjdDogXCJEaXNhYmlsaXR5IEluc3VyYW5jZSBCZW5lZml0c1wiLFxyXG4gICAgYWN0aW9uVGl0bGU6IFwiRGlzYWJpbGl0eSBJbnN1cmFuY2UgQmVuZWZpdHNcIixcclxuICAgIGFjdGlvbkluc3RydWN0aW9uczogYDxwPldlIGFyZSBpbiB0aGUgcHJvY2VzcyBvZiBwcmVwYXJpbmcgeW91ciB0YXggcmV0dXJuIGFuZCBub3RlZCB0aGF0IHlvdSByZWNlaXZlZCBkaXNhYmlsaXR5IGluc3VyYW5jZSBiZW5lZml0cyBkdXJpbmcgdGhlIHRheCB5ZWFyLiBUbyBhY2N1cmF0ZWx5IGRldGVybWluZSBpZiB0aGVzZSBiZW5lZml0cyBhcmUgZWxpZ2libGUgdG8gYmUgZXhjbHVkZWQgZnJvbSB5b3VyIGluY29tZSwgd2UgcmVxdWlyZSBmdXJ0aGVyIGRldGFpbHMgcmVnYXJkaW5nIHRoZSBpbnN1cmFuY2UgcHJlbWl1bXMgcGFpZC48L3A+XHJcbiAgICA8cD5LaW5kbHkgcHJvdmlkZSB0aGUgZm9sbG93aW5nIGluZm9ybWF0aW9uIGF0IHlvdXIgZWFybGllc3QgY29udmVuaWVuY2U6PC9wPlxyXG4gICAgPG9sPlxyXG4gICAgICAgIDxsaT5UaGUgdG90YWwgYW1vdW50IG9mIGRpc2FiaWxpdHkgaW5zdXJhbmNlIGJlbmVmaXRzIHJlY2VpdmVkIGR1cmluZyB0aGUgdGF4IHllYXIuPC9saT5cclxuICAgICAgICA8bGk+RGV0YWlsZWQgc3RhdGVtZW50cyBvciBkb2N1bWVudGF0aW9uIHNob3dpbmcgdGhlIGRpc2FiaWxpdHkgaW5zdXJhbmNlIGJlbmVmaXRzIHJlY2VpdmVkLjwvbGk+XHJcbiAgICAgICAgPGxpPkNvbmZpcm1hdGlvbiBvbiB3aG8gcGFpZCB0aGUgaW5zdXJhbmNlIHByZW1pdW1zICh5b3Ugb3IgeW91ciBlbXBsb3llcikuPC9saT5cclxuICAgICAgICA8bGk+SWYgeW91IGhhdmUgY29udHJpYnV0ZWQgdG8gdGhlIHBheW1lbnQgb2YgdGhlIHByZW1pdW1zOlxyXG4gICAgICAgICAgICA8dWw+XHJcbiAgICAgICAgICAgICAgICA8bGk+VGhlIGFtb3VudCB5b3UgcGFpZCB0b3dhcmRzIHRoZSBwcmVtaXVtcy48L2xpPlxyXG4gICAgICAgICAgICAgICAgPGxpPkFueSBzdXBwb3J0aW5nIGRvY3VtZW50cyBmb3IgdGhlIHBheW1lbnRzIG1hZGUgYnkgeW91IChyZWNlaXB0cyBvciBiYW5rIHN0YXRlbWVudHMpLjwvbGk+XHJcbiAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgPC9saT5cclxuICAgICAgICA8bGk+SWYgeW91ciBlbXBsb3llciBjb250cmlidXRlZCB0byB0aGUgcGF5bWVudCBvZiB0aGUgcHJlbWl1bXM6XHJcbiAgICAgICAgICAgIDx1bD5cclxuICAgICAgICAgICAgICAgIDxsaT5UaGUgYW1vdW50IHBhaWQgYnkgeW91ciBlbXBsb3llciB0b3dhcmRzIHRoZSBwcmVtaXVtcy48L2xpPlxyXG4gICAgICAgICAgICAgICAgPGxpPkFueSBkb2N1bWVudHMgaW5kaWNhdGluZyBlbXBsb3llciBjb250cmlidXRpb25zIChwYXkgc3R1YnMsIGVtcGxveWVyIGxldHRlcnMpLjwvbGk+XHJcbiAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgPC9saT5cclxuICAgIDwvb2w+XHJcbiAgICA8cD5UaGlzIGluZm9ybWF0aW9uIGlzIGNydWNpYWwgZm9yIHVzIHRvIGRldGVybWluZSB0aGUgdGF4YWJsZSBwb3J0aW9uLCBpZiBhbnksIG9mIHlvdXIgZGlzYWJpbGl0eSBpbnN1cmFuY2UgYmVuZWZpdHMuIFByb3ZpZGluZyB0aGVzZSBkZXRhaWxzIHdpbGwgaGVscCB1cyBlbnN1cmUgdGhlIGFjY3VyYWN5IG9mIHlvdXIgdGF4IGZpbGluZyBhbmQgcG90ZW50aWFsbHkgbG93ZXIgeW91ciB0YXhhYmxlIGluY29tZS48L3A+XHJcbiAgICA8cD5QbGVhc2UgZG8gbm90IGhlc2l0YXRlIHRvIHJlYWNoIG91dCBpZiB5b3UgaGF2ZSBhbnkgcXVlc3Rpb25zIG9yIGlmIHdlIGNhbiBiZSBvZiBmdXJ0aGVyIGFzc2lzdGFuY2UuIFdlIGFwcHJlY2lhdGUgeW91ciBwcm9tcHQgcmVzcG9uc2UgdG8gdGhpcyByZXF1ZXN0LjwvcD5gXHJcbiAgfSxcclxuICB7XHJcbiAgICBhY3Rpb25UYXhTdWJqZWN0OiBcIkRpc2FiaWxpdHkgUmV0aXJlbWVudCBCZW5lZml0c1wiLFxyXG4gICAgYWN0aW9uVGl0bGU6IFwiRGlzYWJpbGl0eSBSZXRpcmVtZW50IEJlbmVmaXRzXCIsXHJcbiAgICBhY3Rpb25JbnN0cnVjdGlvbnM6IGA8cD5XZSBhcmUgaW4gdGhlIHByb2Nlc3Mgb2YgcHJlcGFyaW5nIHlvdXIgdGF4IGRvY3VtZW50cyBhbmQgaGF2ZSBub3RlZCB0aGF0IHlvdSByZWNlaXZlZCBkaXNhYmlsaXR5IHJldGlyZW1lbnQgYmVuZWZpdHMgZHVyaW5nIHRoZSB0YXggeWVhci4gSW4gb3JkZXIgdG8gYWNjdXJhdGVseSBkZXRlcm1pbmUgdGhlIHRheGFiaWxpdHkgb2YgdGhlc2UgYmVuZWZpdHMsIHdlIG5lZWQgYWRkaXRpb25hbCBkZXRhaWxzLiBUaGUgdGF4YWJpbGl0eSBvZiB0aGVzZSBiZW5lZml0cyBjYW4gZGVwZW5kIG9uIHdoZW4geW91IHRvb2sgcmV0aXJlbWVudCBkdWUgdG8gZGlzYWJpbGl0eS48L3A+XHJcbiAgICA8cD5QbGVhc2UgcHJvdmlkZSB0aGUgZm9sbG93aW5nIGluZm9ybWF0aW9uIGFzIHNvb24gYXMgcG9zc2libGU6PC9wPlxyXG4gICAgPG9sPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPkRhdGUgb2YgUmV0aXJlbWVudDo8L3N0cm9uZz4gVGhlIGV4YWN0IGRhdGUgeW91IHJldGlyZWQgZHVlIHRvIGRpc2FiaWxpdHkuPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5Eb2N1bWVudGF0aW9uIG9mIERpc2FiaWxpdHkgUmV0aXJlbWVudDo8L3N0cm9uZz4gQW55IG9mZmljaWFsIGRvY3VtZW50YXRpb24geW91IGhhdmUgdGhhdCBjb25maXJtcyB5b3VyIHJldGlyZW1lbnQgd2FzIGR1ZSB0byBkaXNhYmlsaXR5LiBUaGlzIG1heSBpbmNsdWRlIGxldHRlcnMgZnJvbSB5b3VyIGVtcGxveWVyLCB0aGUgcmV0aXJlbWVudCBwbGFuLCBvciBtZWRpY2FsIHJlY29yZHMuPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5EZXRhaWxzIG9mIEJlbmVmaXRzIFJlY2VpdmVkOjwvc3Ryb25nPiBTcGVjaWZpYyBhbW91bnRzIGFuZCB0aGUgc291cmNlIG9mIHRoZSBkaXNhYmlsaXR5IHJldGlyZW1lbnQgYmVuZWZpdHMuIFBsZWFzZSBpbmNsdWRlIGFueSByZWxhdGVkIGRvY3VtZW50cyBzdWNoIGFzIHN0YXRlbWVudHMgb3Igbm90aWNlcy48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPlByZXZpb3VzIFllYXIgVy0yIG9yIDEwOTkgRm9ybXM6PC9zdHJvbmc+IElmIHlvdSByZWNlaXZlZCBhbnkgd2FnZXMgb3IgZGlzYWJpbGl0eSBwYXltZW50cyB0aGF0IHdlcmUgcmVwb3J0ZWQgb24gVy0yIG9yIDEwOTkgZm9ybXMgaW4gdGhlIHllYXIgb2YgeW91ciByZXRpcmVtZW50LCBwbGVhc2UgcHJvdmlkZSB0aGVzZSBmb3Jtcy48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPkFueSBDb3JyZXNwb25kZW5jZSBmcm9tIHRoZSBJUlM6PC9zdHJvbmc+IElmIHlvdSBoYXZlIHJlY2VpdmVkIGFueSBub3RpY2VzIG9yIGxldHRlcnMgZnJvbSB0aGUgSVJTIHJlZ2FyZGluZyB5b3VyIGRpc2FiaWxpdHkgcmV0aXJlbWVudCBiZW5lZml0cywgcGxlYXNlIGluY2x1ZGUgY29waWVzIG9mIHRoZXNlIGNvbW11bmljYXRpb25zLjwvbGk+XHJcbiAgICA8L29sPlxyXG4gICAgPHA+VGhlIGFib3ZlIGluZm9ybWF0aW9uIGlzIHZpdGFsIHRvIGVuc3VyZSB5b3VyIHRheCByZXR1cm4gaXMgY29tcGxldGUgYW5kIGFjY3VyYXRlLiBVbmRlcnN0YW5kaW5nIHRoZSBzcGVjaWZpY3Mgb2YgeW91ciBkaXNhYmlsaXR5IHJldGlyZW1lbnQgYmVuZWZpdHMgd2lsbCBhaWQgdXMgaW4gZGV0ZXJtaW5pbmcgdGhlaXIgdGF4YWJpbGl0eSBhbmQgZW5zdXJpbmcgdGhhdCB5b3VyIHRheCBvYmxpZ2F0aW9ucyBhcmUgcHJlY2lzZWx5IGNhbGN1bGF0ZWQuPC9wPlxyXG4gICAgPHA+SWYgeW91IGhhdmUgYW55IHF1ZXN0aW9ucyBvciBuZWVkIGFzc2lzdGFuY2UgZ2F0aGVyaW5nIHRoZXNlIGRvY3VtZW50cywgZmVlbCBmcmVlIHRvIGNvbnRhY3QgdXMuIFlvdXIgcHJvbXB0IHJlc3BvbnNlIGlzIGhpZ2hseSBhcHByZWNpYXRlZC48L3A+YFxyXG4gIH0sXHJcbiAge1xyXG4gICAgYWN0aW9uVGF4U3ViamVjdDogXCJDbGVyZ3kgV2FnZXNcIixcclxuICAgIGFjdGlvblRpdGxlOiBcIkNsZXJneSBXYWdlc1wiLFxyXG4gICAgYWN0aW9uSW5zdHJ1Y3Rpb25zOiBgPHA+V2UgYXJlIGluIHRoZSBwcm9jZXNzIG9mIHByZXBhcmluZyB5b3VyIHRheCByZXR1cm5zIGFuZCBoYXZlIG5vdGVkIHRoYXQgeW91IHJlY2VpdmVkIFctMiB3YWdlcyBhcyBhIGNsZXJneSBtZW1iZXIuIFRvIGVuc3VyZSBhY2N1cmF0ZSByZXBvcnRpbmcgYW5kIHRvIHBvdGVudGlhbGx5IG1heGltaXplIHlvdXIgdGF4IGJlbmVmaXRzLCB3ZSByZXF1aXJlIGZ1cnRoZXIgZGV0YWlscyByZWdhcmRpbmcgeW91ciBjb21wZW5zYXRpb24gcGFja2FnZS48L3A+XHJcbiAgICA8cD5QbGVhc2UgcHJvdmlkZSB0aGUgZm9sbG93aW5nIGRvY3VtZW50cyBhbmQgaW5mb3JtYXRpb24gYXQgeW91ciBlYXJsaWVzdCBjb252ZW5pZW5jZTo8L3A+XHJcbiAgICA8b2w+XHJcbiAgICAgICAgPGxpPjxiPlctMiBGb3JtOjwvYj4gSWYgbm90IGFscmVhZHkgcHJvdmlkZWQsIGluY2x1ZGUgYW55IFctMiBmb3JtcyBpc3N1ZWQgYnkgeW91ciByZWxpZ2lvdXMgaW5zdGl0dXRpb24uPC9saT5cclxuICAgICAgICA8bGk+PGI+SG91c2luZyBBbGxvd2FuY2UgRG9jdW1lbnRhdGlvbjo8L2I+IERldGFpbGVkIHN0YXRlbWVudCBvciBsZXR0ZXIgZnJvbSB5b3VyIHJlbGlnaW91cyBpbnN0aXR1dGlvbiBzcGVjaWZ5aW5nIHRoZSBhbW91bnQgZGVzaWduYXRlZCBhcyBob3VzaW5nIGFsbG93YW5jZS48L2xpPlxyXG4gICAgICAgIDxsaT48Yj5TZWxmLUVtcGxveW1lbnQgVGF4OjwvYj4gQ29uZmlybWF0aW9uIG9uIHdoZXRoZXIgeW91IGhhdmUgdGFrZW4gYSB2b3cgb2YgcG92ZXJ0eSAoaWYgYXBwbGljYWJsZSksIG9yIGFueSBkb2N1bWVudGF0aW9uIHJlbGF0ZWQgdG8gb3B0aW5nIG91dCBvZiBzZWxmLWVtcGxveW1lbnQgdGF4LjwvbGk+XHJcbiAgICAgICAgPGxpPjxiPkV4cGVuc2UgUmVpbWJ1cnNlbWVudHM6PC9iPiBEb2N1bWVudGF0aW9uIHNob3dpbmcgYW55IGV4cGVuc2UgcmVpbWJ1cnNlbWVudHMgcmVjZWl2ZWQgdW5kZXIgYW4gYWNjb3VudGFibGUgcGxhbi48L2xpPlxyXG4gICAgICAgIDxsaT48Yj5PdGhlciBDb21wZW5zYXRpb246PC9iPiBJbmZvcm1hdGlvbiBvbiBhbnkgb3RoZXIgY29tcGVuc2F0aW9uIHJlY2VpdmVkIGluIHlvdXIgY2FwYWNpdHkgYXMgY2xlcmd5LCBpbmNsdWRpbmcgYnV0IG5vdCBsaW1pdGVkIHRvIGxvdmUgb2ZmZXJpbmdzLCBmZWVzIGZvciBzZXJ2aWNlcyAod2VkZGluZ3MsIGZ1bmVyYWxzLCBldGMuKSwgYW5kIHBhcnNvbmFnZSBhbGxvd2FuY2VzLjwvbGk+XHJcbiAgICA8L29sPlxyXG4gICAgPHA+VGhpcyBpbmZvcm1hdGlvbiBpcyBjcnVjaWFsIGZvciB1cyB0byBhY2N1cmF0ZWx5IHJlcHJlc2VudCB5b3VyIGVhcm5pbmdzIGFuZCB0byBjYWxjdWxhdGUgYW55IHBvdGVudGlhbCBkZWR1Y3Rpb25zIGNvcnJlY3RseS4gWW91ciBwcm9tcHQgYXR0ZW50aW9uIHRvIHRoaXMgcmVxdWVzdCB3aWxsIGhlbHAgZW5zdXJlIHRoYXQgeW91ciB0YXggcmV0dXJucyBhcmUgcHJlcGFyZWQgaW4gYSB0aW1lbHkgYW5kIGVmZmljaWVudCBtYW5uZXIuPC9wPlxyXG4gICAgPHA+SWYgeW91IGhhdmUgYW55IHF1ZXN0aW9ucyBvciBuZWVkIGZ1cnRoZXIgY2xhcmlmaWNhdGlvbiBvbiB3aGF0IGlzIHJlcXVpcmVkLCBwbGVhc2UgZG8gbm90IGhlc2l0YXRlIHRvIGNvbnRhY3QgdXMuIFdlIGFyZSBoZXJlIHRvIGFzc2lzdCB5b3UgdGhyb3VnaCBldmVyeSBzdGVwIG9mIHRoaXMgcHJvY2Vzcy48L3A+XHJcbiAgICA8cD5UaGFuayB5b3UgZm9yIHlvdXIgY29vcGVyYXRpb24gYW5kIHByb21wdCBhdHRlbnRpb24gdG8gdGhpcyBtYXR0ZXIuPC9wPmBcclxuICB9LFxyXG4gIHtcclxuICAgIGFjdGlvblRheFN1YmplY3Q6IFwiSW50ZXJlc3QgSW5jb21lXCIsXHJcbiAgICBhY3Rpb25UaXRsZTogXCJJbnRlcmVzdCBJbmNvbWVcIixcclxuICAgIGFjdGlvbkluc3RydWN0aW9uczogYDxwPkluIHJldmlld2luZyB5b3VyIGZpbmFuY2lhbCBhY3Rpdml0aWVzIGZvciB0aGUgdGF4IHllYXIsIHlvdSBpbmRpY2F0ZWQgcmVjZWl2aW5nIGludGVyZXN0IGluY29tZS4gVG8gYWNjdXJhdGVseSBkZXRlcm1pbmUgdGhlIHRheGFiaWxpdHkgb2YgdGhpcyBpbmNvbWUgYW5kIGVuc3VyZSBjb21wbGlhbmNlIHdpdGggdGF4IHJlZ3VsYXRpb25zLCB3ZSByZXF1aXJlIGFkZGl0aW9uYWwgZGV0YWlscy4gS2luZGx5IHByb3ZpZGUgdGhlIGZvbGxvd2luZyBpbmZvcm1hdGlvbjo8L3A+XHJcbiAgICA8b2w+XHJcbiAgICAgIDxsaT48Yj5Tb3VyY2Ugb2YgSW50ZXJlc3QgSW5jb21lOjwvYj4gUGxlYXNlIHNwZWNpZnkgdGhlIGluc3RpdHV0aW9uKHMpIG9yIGVudGl0eShpZXMpIGZyb20gd2hpY2ggeW91IHJlY2VpdmVkIGludGVyZXN0IGluY29tZSAoZS5nLiwgYmFua3MsIGNyZWRpdCB1bmlvbnMpLjwvbGk+XHJcbiAgICAgIDxsaT48Yj5BbW91bnQgUmVjZWl2ZWQ6PC9iPiBDb25maXJtIHRoZSB0b3RhbCBhbW91bnQgb2YgaW50ZXJlc3QgaW5jb21lIHJlY2VpdmVkIGZyb20gZWFjaCBzb3VyY2UgZHVyaW5nIHRoZSB0YXggeWVhci48L2xpPlxyXG4gICAgICA8bGk+PGI+QWNjb3VudCBUeXBlczo8L2I+IElkZW50aWZ5IHRoZSB0eXBlIG9mIGFjY291bnRzIHRoYXQgZ2VuZXJhdGVkIHRoZSBpbnRlcmVzdCAoZS5nLiwgc2F2aW5ncywgY2hlY2tpbmcsIGNlcnRpZmljYXRlcyBvZiBkZXBvc2l0KS48L2xpPlxyXG4gICAgICA8bGk+PGI+VGF4IEZvcm1zIFJlY2VpdmVkOjwvYj4gTGlzdCBhbnkgdGF4IGZvcm1zIHlvdSBoYXZlIHJlY2VpdmVkIHJlbGF0ZWQgdG8gaW50ZXJlc3QgaW5jb21lLCBzdWNoIGFzIEZvcm0gMTA5OS1JTlQgb3IgRm9ybSAxMDk5LU9JRC48L2xpPlxyXG4gICAgICA8bGk+PGI+Rm9yZWlnbiBJbnRlcmVzdDo8L2I+IElmIGFueSBpbnRlcmVzdCBpbmNvbWUgd2FzIGVhcm5lZCBmcm9tIGZvcmVpZ24gYWNjb3VudHMgb3Igc291cmNlcywgcGxlYXNlIHByb3ZpZGUgZGV0YWlscywgaW5jbHVkaW5nIHRoZSBjb3VudHJ5IG9mIG9yaWdpbi48L2xpPlxyXG4gICAgPC9vbD5cclxuICAgIDxwPlByb3ZpZGluZyB0aGVzZSBkZXRhaWxzIHdpbGwgZW5hYmxlIHVzIHRvIGFjY3VyYXRlbHkgYXNzZXNzIHRoZSB0YXggaW1wbGljYXRpb25zIG9mIHlvdXIgaW50ZXJlc3QgaW5jb21lIGFuZCBlbnN1cmUgeW91ciB0YXggcmV0dXJuIGlzIGNvbXBsZXRlIGFuZCBjb3JyZWN0LiBZb3UgY2FuIGF0dGFjaCB0aGUgcmVxdWVzdGVkIGRvY3VtZW50cyBhbmQgaW5mb3JtYXRpb24gYnkgcmVwbHlpbmcgdG8gdGhpcyBlbWFpbCBvciB1cGxvYWRpbmcgdGhlbSBkaXJlY3RseSB0byBvdXIgc2VjdXJlIGNsaWVudCBwb3J0YWwuPC9wPlxyXG4gICAgPHA+SWYgeW91IGhhdmUgYW55IHF1ZXN0aW9ucyBvciByZXF1aXJlIGFzc2lzdGFuY2UgaW4gZ2F0aGVyaW5nIHRoaXMgaW5mb3JtYXRpb24sIGRvIG5vdCBoZXNpdGF0ZSB0byBjb250YWN0IHVzLjwvcD5cclxuICAgIDxwPlRoYW5rIHlvdSBmb3IgeW91ciBwcm9tcHQgYXR0ZW50aW9uIHRvIHRoaXMgbWF0dGVyLjwvcD5gXHJcbiAgfSxcclxuICB7XHJcbiAgICBhY3Rpb25UYXhTdWJqZWN0OiBcIkJhbmsgQWNjb3VudCBPcGVuaW5nIEdpZnRzXCIsXHJcbiAgICBhY3Rpb25UaXRsZTogXCJCYW5rIEFjY291bnQgT3BlbmluZyBHaWZ0c1wiLFxyXG4gICAgYWN0aW9uSW5zdHJ1Y3Rpb25zOiBgPHA+V2UgYXJlIGluIHRoZSBwcm9jZXNzIG9mIHJldmlld2luZyB5b3VyIHRheCBzaXR1YXRpb24gYW5kIGhhdmUgbm90ZWQgdGhhdCB5b3UgcmVjZWl2ZWQgYSBnaWZ0IGZvciBvcGVuaW5nIGFuIGFjY291bnQgYXQgYSBmaW5hbmNpYWwgaW5zdGl0dXRpb24uIFRvIGFjY3VyYXRlbHkgZGV0ZXJtaW5lIHRoZSB0YXhhYmlsaXR5IG9mIHRoaXMgaW5jb21lLCB3ZSBraW5kbHkgcmVxdWVzdCB0aGUgZm9sbG93aW5nIGluZm9ybWF0aW9uOjwvcD5cclxuICAgIDxvbD5cclxuICAgICAgICA8bGk+VGhlIG5hbWUgb2YgdGhlIGZpbmFuY2lhbCBpbnN0aXR1dGlvbiB3aGVyZSB0aGUgYWNjb3VudCB3YXMgb3BlbmVkLjwvbGk+XHJcbiAgICAgICAgPGxpPlRoZSBkYXRlIHRoZSBhY2NvdW50IHdhcyBvcGVuZWQuPC9saT5cclxuICAgICAgICA8bGk+QSBkZXRhaWxlZCBkZXNjcmlwdGlvbiBvZiB0aGUgZ2lmdCByZWNlaXZlZCAoZS5nLiwgY2FzaCwgbWVyY2hhbmRpc2UsIG9yIHNlcnZpY2VzKS48L2xpPlxyXG4gICAgICAgIDxsaT5UaGUgZmFpciBtYXJrZXQgdmFsdWUgb2YgdGhlIGdpZnQgYXQgdGhlIHRpbWUgaXQgd2FzIHJlY2VpdmVkLjwvbGk+XHJcbiAgICAgICAgPGxpPkFueSBkb2N1bWVudGF0aW9uIHByb3ZpZGVkIGJ5IHRoZSBmaW5hbmNpYWwgaW5zdGl0dXRpb24gcmVnYXJkaW5nIHRoZSBnaWZ0IChlLmcuLCBhIGxldHRlciwgZW1haWwgY29uZmlybWF0aW9uLCBvciBzdGF0ZW1lbnQgaW5kaWNhdGluZyB0aGUgdmFsdWUgb2YgdGhlIGdpZnQpLjwvbGk+XHJcbiAgICAgICAgPGxpPkNvbmZpcm1hdGlvbiBpZiB5b3UgaGF2ZSByZWNlaXZlZCBtb3JlIHRoYW4gb25lIGdpZnQgZm9yIG9wZW5pbmcgYWNjb3VudHMgd2l0aGluIHRoZSBzYW1lIHRheCB5ZWFyLCBhbmQgaWYgc28sIHRoZSBkZXRhaWxzIGZvciBlYWNoLjwvbGk+XHJcbiAgICA8L29sPlxyXG4gICAgPHA+UGxlYXNlIHByb3ZpZGUgdGhpcyBpbmZvcm1hdGlvbiBhdCB5b3VyIGVhcmxpZXN0IGNvbnZlbmllbmNlIHRvIGVuc3VyZSB3ZSBjYW4gYWNjdXJhdGVseSBhc3Nlc3MgdGhlIHRheCBpbXBsaWNhdGlvbnMgYW5kIGNvbXBseSB3aXRoIGFsbCBJUlMgcmVxdWlyZW1lbnRzLjwvcD5cclxuICAgIDxwPlRoYW5rIHlvdSBmb3IgeW91ciBwcm9tcHQgYXR0ZW50aW9uIHRvIHRoaXMgbWF0dGVyLjwvcD5gXHJcbiAgfSxcclxuICB7XHJcbiAgICBhY3Rpb25UYXhTdWJqZWN0OiBcIkNEIEludGVyZXN0XCIsXHJcbiAgICBhY3Rpb25UaXRsZTogXCJDRCBJbnRlcmVzdFwiLFxyXG4gICAgYWN0aW9uSW5zdHJ1Y3Rpb25zOiBgPHA+VG8gZW5zdXJlIGFjY3VyYXRlIHJlcG9ydGluZyBvZiB5b3VyIGluY29tZSBmcm9tIENlcnRpZmljYXRlcyBvZiBEZXBvc2l0IChDRHMpIGZvciB0aGUgdGF4IHllYXIsIHdlIGtpbmRseSByZXF1ZXN0IHRoZSBmb2xsb3dpbmcgaW5mb3JtYXRpb24uIFRoaXMgaXMgZXNzZW50aWFsIHRvIGNvbXBseSB3aXRoIElSUyByZWd1bGF0aW9ucyBhbmQgdG8gcG90ZW50aWFsbHkgb3B0aW1pemUgeW91ciB0YXggYmVuZWZpdHMuPC9wPlxyXG4gICAgPG9sPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPk5hbWUgb2YgdGhlIEJhbmsgb3IgRmluYW5jaWFsIEluc3RpdHV0aW9uOjwvc3Ryb25nPiBXaGVyZSB0aGUgQ0QgaXMgaGVsZC48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPkFjY291bnQgTnVtYmVyOjwvc3Ryb25nPiBUaGlzIGhlbHBzIGluIGlkZW50aWZ5aW5nIHRoZSBzcGVjaWZpYyBDRC48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPlRvdGFsIEludGVyZXN0IEVhcm5lZDo8L3N0cm9uZz4gVGhlIGFtb3VudCBvZiBpbnRlcmVzdCBlYXJuZWQgZnJvbSB0aGUgQ0QgZHVyaW5nIHRoZSB0YXggeWVhci48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPkNEIFRlcm06PC9zdHJvbmc+IFRoZSBkdXJhdGlvbiBvciB0ZXJtIG9mIHRoZSBDRCAoZS5nLiwgNiBtb250aHMsIDEgeWVhcikuPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5EYXRlIG9mIFB1cmNoYXNlOjwvc3Ryb25nPiBXaGVuIHlvdSBvcmlnaW5hbGx5IGFjcXVpcmVkIHRoZSBDRC48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPk1hdHVyaXR5IERhdGU6PC9zdHJvbmc+IFdoZW4gdGhlIENEIHJlYWNoZWQgb3Igd2lsbCByZWFjaCBpdHMgZnVsbCB0ZXJtLjwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+MTA5OS1JTlQgRm9ybXM6PC9zdHJvbmc+IElmIHJlY2VpdmVkLCBwbGVhc2UgaW5jbHVkZSBjb3BpZXMgb2YgYW55IDEwOTktSU5UIGZvcm1zIGFzc29jaWF0ZWQgd2l0aCB0aGUgQ0QgaW50ZXJlc3QuPC9saT5cclxuICAgIDwvb2w+XHJcbiAgICA8cD5QbGVhc2UgcHJvdmlkZSB0aGlzIGluZm9ybWF0aW9uIGF0IHlvdXIgZWFybGllc3QgY29udmVuaWVuY2UgdG8gZW5zdXJlIGFjY3VyYXRlIGFuZCB0aW1lbHkgcHJlcGFyYXRpb24gb2YgeW91ciB0YXggZG9jdW1lbnRzLiBZb3UgbWF5IHVwbG9hZCB0aGUgZG9jdW1lbnRzIGRpcmVjdGx5IHRocm91Z2ggb3VyIHNlY3VyZSBjbGllbnQgcG9ydGFsIG9yIGFycmFuZ2UgZm9yIGEgbWVldGluZyB0byBwcm92aWRlIHRoZW0gaW4gcGVyc29uLjwvcD5cclxuICAgIDxwPklmIHlvdSBoYXZlIGFueSBxdWVzdGlvbnMgb3IgbmVlZCBmdXJ0aGVyIGFzc2lzdGFuY2UsIGRvIG5vdCBoZXNpdGF0ZSB0byBjb250YWN0IHVzLjwvcD5cclxuICAgIDxwPlRoYW5rIHlvdSBmb3IgeW91ciBwcm9tcHQgYXR0ZW50aW9uIHRvIHRoaXMgbWF0dGVyLjwvcD5gXHJcbiAgfSxcclxuICB7XHJcbiAgICBhY3Rpb25UYXhTdWJqZWN0OiBcIlRheCBFeGVtcHQgSW50ZXJlc3RcIixcclxuICAgIGFjdGlvblRpdGxlOiBcIlRheCBFeGVtcHQgSW50ZXJlc3RcIixcclxuICAgIGFjdGlvbkluc3RydWN0aW9uczogYDxwPldlIHVuZGVyc3RhbmQgdGhhdCB5b3UgaGF2ZSByZWNlaXZlZCB0YXgtZXhlbXB0IGludGVyZXN0IGR1cmluZyB0aGUgdGF4IHllYXIsIHBvc3NpYmx5IGZyb20gbXVuaWNpcGFsIGJvbmRzIG9yIHNpbWlsYXIgaW52ZXN0bWVudHMuIFRvIGFjY3VyYXRlbHkgcHJlcGFyZSB5b3VyIHRheCByZXR1cm5zIGFuZCBlbnN1cmUgY29tcGxpYW5jZSB3aXRoIHRheCByZWd1bGF0aW9ucywgd2Uga2luZGx5IHJlcXVlc3QgdGhlIGZvbGxvd2luZyBpbmZvcm1hdGlvbjo8L3A+XHJcbiAgICA8b2w+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+U3RhdGVtZW50cyBvZiBUYXgtRXhlbXB0IEludGVyZXN0Ojwvc3Ryb25nPiBQbGVhc2UgcHJvdmlkZSBhbGwgMTA5OS1JTlQgZm9ybXMgb3IgZXF1aXZhbGVudCBzdGF0ZW1lbnRzIHRoYXQgZGV0YWlsIHlvdXIgdGF4LWV4ZW1wdCBpbnRlcmVzdCBpbmNvbWUgZm9yIHRoZSB0YXggeWVhci48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPkRldGFpbHMgb2YgSXNzdWluZyBFbnRpdGllczo8L3N0cm9uZz4gQSBsaXN0IG9yIHN0YXRlbWVudCBpZGVudGlmeWluZyB0aGUgZW50aXRpZXMgdGhhdCBpc3N1ZWQgdGhlIGJvbmRzIG9yIHNpbWlsYXIgaW52ZXN0bWVudHMuIFRoaXMgaW5jbHVkZXMgbXVuaWNpcGFsLCBzdGF0ZSwgb3IgZmVkZXJhbCBlbnRpdGllcy48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPkludmVzdG1lbnQgRGV0YWlsOjwvc3Ryb25nPiBBIGJyZWFrZG93biBvZiB0aGUgaW52ZXN0bWVudHMgY29udHJpYnV0aW5nIHRvIHRheC1leGVtcHQgaW50ZXJlc3QuIFRoaXMgc2hvdWxkIGluY2x1ZGUgdGhlIHB1cmNoYXNlIGRhdGUsIHB1cmNoYXNlIGFtb3VudHMsIGFuZCBhbnkgcmVsYXRlZCBtYXR1cml0eSBkYXRlcy48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPkJyb2tlcmFnZSBBY2NvdW50IFN0YXRlbWVudHM6PC9zdHJvbmc+IENvcGllcyBvZiB5b3VyIGJyb2tlcmFnZSBhY2NvdW50IHN0YXRlbWVudHMgdGhhdCBkZXRhaWwgdHJhbnNhY3Rpb25zIGFuZCBob2xkaW5ncyBpbiB0YXgtZXhlbXB0IGludmVzdG1lbnRzLjwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+QU1UIChBbHRlcm5hdGl2ZSBNaW5pbXVtIFRheCkgQ29uc2lkZXJhdGlvbjo8L3N0cm9uZz4gSWYgYXZhaWxhYmxlLCBkb2N1bWVudGF0aW9uIGluZGljYXRpbmcgd2hldGhlciBhbnkgb2YgdGhlIHRheC1leGVtcHQgaW50ZXJlc3QgaXMgc3ViamVjdCB0byB0aGUgQWx0ZXJuYXRpdmUgTWluaW11bSBUYXguPC9saT5cclxuICAgIDwvb2w+XHJcbiAgICA8cD5UaGlzIGluZm9ybWF0aW9uIGlzIGNydWNpYWwgZm9yIGFuIGFjY3VyYXRlIGFuZCBlZmZpY2llbnQgdGF4IHByZXBhcmF0aW9uIHByb2Nlc3MuIFBsZWFzZSBmb3J3YXJkIHRoZSByZXF1ZXN0ZWQgZG9jdW1lbnRzIGF0IHlvdXIgZWFybGllc3QgY29udmVuaWVuY2UuIElmIHlvdSBoYXZlIGFueSBxdWVzdGlvbnMgb3IgbmVlZCBhc3Npc3RhbmNlIGluIGdhdGhlcmluZyB0aGlzIGluZm9ybWF0aW9uLCBkbyBub3QgaGVzaXRhdGUgdG8gY29udGFjdCB1cy48L3A+XHJcbiAgICA8cD5UaGFuayB5b3UgZm9yIHlvdXIgY29vcGVyYXRpb24gYW5kIHByb21wdCBhdHRlbnRpb24gdG8gdGhpcyBtYXR0ZXIuPC9wPmBcclxuICB9LFxyXG4gIHtcclxuICAgIGFjdGlvblRheFN1YmplY3Q6IFwiRWR1Y2F0aW9uYWwgU2F2aW5ncyBCb25kIEludGVyZXN0XCIsXHJcbiAgICBhY3Rpb25UaXRsZTogXCJFZHVjYXRpb25hbCBTYXZpbmdzIEJvbmQgSW50ZXJlc3RcIixcclxuICAgIGFjdGlvbkluc3RydWN0aW9uczogYDxwPldlIGhvcGUgdGhpcyBtZXNzYWdlIGZpbmRzIHlvdSB3ZWxsLiBBcyBwYXJ0IG9mIG91ciBjb250aW51ZWQgZWZmb3J0IHRvIHByb3ZpZGUgeW91IHdpdGggdGhlIGJlc3QgdGF4IHByZXBhcmF0aW9uIHNlcnZpY2VzLCB3ZSBhcmUgcmVhY2hpbmcgb3V0IHRvIGdhdGhlciBuZWNlc3NhcnkgZG9jdW1lbnRhdGlvbiByZWxhdGVkIHRvIHRoZSBpbnRlcmVzdCB5b3UgbWF5IGhhdmUgcmVjZWl2ZWQgZnJvbSByZWRlZW1pbmcgYW4gRWR1Y2F0aW9uYWwgU2F2aW5ncyBCb25kLjwvcD5cclxuXHJcbiAgICA8cD5UbyBhY2N1cmF0ZWx5IGFzc2VzcyB0aGUgZWxpZ2liaWxpdHkgZm9yIGV4ZW1wdGlvbiBhbmQgdG8gZW5zdXJlIGNvbXBsaWFuY2Ugd2l0aCB0aGUgSVJTLCB3ZSBraW5kbHkgcmVxdWVzdCB5b3UgcHJvdmlkZSB0aGUgZm9sbG93aW5nIGluZm9ybWF0aW9uOjwvcD5cclxuICAgIDxvbD5cclxuICAgICAgICA8bGk+QSBjb3B5IG9mIEZvcm0gMTA5OS1JTlQgb3Igc2ltaWxhciBzdGF0ZW1lbnQgcHJvdmlkZWQgYnkgdGhlIGZpbmFuY2lhbCBpbnN0aXR1dGlvbiwgaW5kaWNhdGluZyB0aGUgYW1vdW50IG9mIGludGVyZXN0IHJlY2VpdmVkIGZyb20gdGhlIEVkdWNhdGlvbmFsIFNhdmluZ3MgQm9uZC48L2xpPlxyXG4gICAgICAgIDxsaT5EZXRhaWxlZCByZWNvcmRzIG9mIHRoZSBFZHVjYXRpb25hbCBTYXZpbmdzIEJvbmRzIHJlZGVlbWVkIGR1cmluZyB0aGUgdGF4IHllYXIsIGluY2x1ZGluZzpcclxuICAgICAgICAgICAgPHVsPlxyXG4gICAgICAgICAgICAgICAgPGxpPkJvbmQgc2VyaWFsIG51bWJlcnM8L2xpPlxyXG4gICAgICAgICAgICAgICAgPGxpPklzc3VlIGRhdGVzPC9saT5cclxuICAgICAgICAgICAgICAgIDxsaT5SZWRlbXB0aW9uIGRhdGVzPC9saT5cclxuICAgICAgICAgICAgICAgIDxsaT5BbW91bnRzPC9saT5cclxuICAgICAgICAgICAgPC91bD5cclxuICAgICAgICA8L2xpPlxyXG4gICAgICAgIDxsaT5SZWNlaXB0cyBvciBkb2N1bWVudGF0aW9uIGZvciBxdWFsaWZpZWQgZWR1Y2F0aW9uYWwgZXhwZW5zZXMgcGFpZCBkdXJpbmcgdGhlIHllYXIsIGluY2x1ZGluZzpcclxuICAgICAgICAgICAgPHVsPlxyXG4gICAgICAgICAgICAgICAgPGxpPlR1aXRpb24gYW5kIGZlZXM8L2xpPlxyXG4gICAgICAgICAgICAgICAgPGxpPkNvdXJzZSBtYXRlcmlhbHM8L2xpPlxyXG4gICAgICAgICAgICAgICAgPGxpPkFueSBvdGhlciByZXF1aXJlZCBleHBlbnNlcyBmb3IgZW5yb2xsbWVudCBvciBhdHRlbmRhbmNlIGF0IGFuIGVsaWdpYmxlIGVkdWNhdGlvbmFsIGluc3RpdHV0aW9uPC9saT5cclxuICAgICAgICAgICAgPC91bD5cclxuICAgICAgICA8L2xpPlxyXG4gICAgICAgIDxsaT5Qcm9vZiBvZiBlbnJvbGxtZW50IGZyb20gYW4gZWxpZ2libGUgZWR1Y2F0aW9uYWwgaW5zdGl0dXRpb24gZm9yIHRoZSBiZW5lZmljaWFyeSBvZiB0aGUgYm9uZC48L2xpPlxyXG4gICAgPC9vbD5cclxuICAgIDxwPlRoaXMgaW5mb3JtYXRpb24gaXMgY3J1Y2lhbCBmb3IgZGV0ZXJtaW5pbmcgdGhlIHRheGFiaWxpdHkgb2YgdGhlIGludGVyZXN0IGluY29tZSBhbmQgcG90ZW50aWFsbHkgbWF4aW1pemluZyB5b3VyIHRheCBiZW5lZml0cy4gV2UgYXBwcmVjaWF0ZSB5b3VyIHByb21wdCBhdHRlbnRpb24gdG8gdGhpcyByZXF1ZXN0IGFuZCByZWNvbW1lbmQgY29tcGlsaW5nIHRoZXNlIGRvY3VtZW50cyBhdCB5b3VyIGVhcmxpZXN0IGNvbnZlbmllbmNlLjwvcD5cclxuICAgIDxwPklmIHlvdSBoYXZlIGFueSBxdWVzdGlvbnMgb3IgbmVlZCBmdXJ0aGVyIGFzc2lzdGFuY2UsIHBsZWFzZSBkbyBub3QgaGVzaXRhdGUgdG8gY29udGFjdCBvdXIgb2ZmaWNlIGRpcmVjdGx5LjwvcD5cclxuICAgIDxwPlRoYW5rIHlvdSBmb3IgeW91ciBjb29wZXJhdGlvbiBhbmQgdHJ1c3QgaW4gb3VyIHNlcnZpY2VzLjwvcD5gXHJcbiAgfSxcclxuICB7XHJcbiAgICBhY3Rpb25UYXhTdWJqZWN0OiBcIkRpdmlkZW5kIEluY29tZVwiLFxyXG4gICAgYWN0aW9uVGl0bGU6IFwiRGl2aWRlbmQgSW5jb21lXCIsXHJcbiAgICBhY3Rpb25JbnN0cnVjdGlvbnM6IGA8cD5XZSBhcmUgY3VycmVudGx5IGluIHRoZSBwcm9jZXNzIG9mIHByZXBhcmluZyB5b3VyIHRheCByZXR1cm5zIGFuZCBoYXZlIG5vdGVkIHRoYXQgeW91IGluZGljYXRlZCByZWNlaXZpbmcgZGl2aWRlbmQgaW5jb21lIG92ZXIgdGhlIHBhc3QgdGF4IHllYXIuIFRvIGVuc3VyZSB3ZSBhY2N1cmF0ZWx5IHJlcG9ydCB0aGlzIGluY29tZSBhbmQgb3B0aW1pemUgeW91ciB0YXggc2l0dWF0aW9uLCB3ZSBraW5kbHkgcmVxdWVzdCB0aGUgZm9sbG93aW5nIGRvY3VtZW50YXRpb24gYW5kIGluZm9ybWF0aW9uOjwvcD5cclxuICAgIDxvbD5cclxuICAgICAgPGxpPkFsbCAxMDk5LURJViBmb3JtcyByZWNlaXZlZCBmcm9tIGNvcnBvcmF0aW9ucyBvciBtdXR1YWwgZnVuZHMuIFRoaXMgaW5jbHVkZXMgZGlzdHJpYnV0aW9ucyBvZiBjYXNoLCBzdG9jaywgb3Igb3RoZXIgcHJvcGVydHkuPC9saT5cclxuICAgICAgPGxpPklmIGFwcGxpY2FibGUsIGRldGFpbHMgcmVnYXJkaW5nIGFueSBmb3JlaWduIGRpdmlkZW5kcyBpbmNsdWRpbmcgdGhlIGFtb3VudCBpbiBmb3JlaWduIGN1cnJlbmN5LCB0aGUgY291bnRyeSBvZiBvcmlnaW4sIGFuZCBhbnkgZm9yZWlnbiB0YXggcGFpZC48L2xpPlxyXG4gICAgICA8bGk+Rm9yIGRpdmlkZW5kcyByZWludmVzdGVkLCBwbGVhc2UgcHJvdmlkZSBzdGF0ZW1lbnRzIG9yIGNvbmZpcm1hdGlvbnMgc2hvd2luZyB0aGVzZSB0cmFuc2FjdGlvbnMuPC9saT5cclxuICAgICAgPGxpPkFueSBvdGhlciByZWxldmFudCBkb2N1bWVudGF0aW9uIG9yIGluZm9ybWF0aW9uIHJlZ2FyZGluZyBkaXZpZGVuZHMgbm90IGNvdmVyZWQgYnkgYSAxMDk5LURJVi48L2xpPlxyXG4gICAgPC9vbD5cclxuICAgIDxwPlBsZWFzZSBlbnN1cmUgYWxsIGRvY3VtZW50cyBhcmUgY2xlYXIgYW5kIGxlZ2libGUgdG8gYXZvaWQgYW55IHByb2Nlc3NpbmcgZGVsYXlzLiBXZSByZWNvbW1lbmQgc2VjdXJlbHkgdXBsb2FkaW5nIHRoZSByZXF1ZXN0ZWQgaW5mb3JtYXRpb24gdGhyb3VnaCBvdXIgY2xpZW50IHBvcnRhbCBvciBhcnJhbmdpbmcgYSBzZWN1cmUgZW1haWwgdHJhbnNtaXNzaW9uLjwvcD5cclxuICAgIDxwPllvdXIgcHJvbXB0IHJlc3BvbnNlIGlzIGFwcHJlY2lhdGVkIGFzIGl0IHdpbGwgaGVscCB1cyBpbiBjb21wbGV0aW5nIHlvdXIgdGF4IHByZXBhcmF0aW9ucyBlZmZpY2llbnRseS4gSWYgeW91IGhhdmUgYW55IHF1ZXN0aW9ucyBvciBuZWVkIGNsYXJpZmljYXRpb24sIGRvIG5vdCBoZXNpdGF0ZSB0byBjb250YWN0IHVzLjwvcD5gXHJcbiAgfVxyXG4gIFxyXG4gIFxyXG4gIFxyXG4gIFxyXG4gIFxyXG4gIFxyXG4gIFxyXG4gIFxyXG4gIFxyXG4gIFxyXG4gIFxyXG4gIFxyXG4gIFxyXG4gIFxyXG4gIFxyXG4gIFxyXG5dO1xyXG4iXX0=
|
|
@@ -20,5 +20,11 @@ export var ActionTaxSubjects;
|
|
|
20
20
|
ActionTaxSubjects["DisabilityInsuranceBenefits"] = "Disability Insurance Benefits";
|
|
21
21
|
ActionTaxSubjects["DisabilityRetirementBenefits"] = "Disability Retirement Benefits";
|
|
22
22
|
ActionTaxSubjects["ClergyWages"] = "Clergy Wages";
|
|
23
|
+
ActionTaxSubjects["InterestIncome"] = "Interest Income";
|
|
24
|
+
ActionTaxSubjects["BankAccountOpeningGifts"] = "Bank Account Opening Gifts";
|
|
25
|
+
ActionTaxSubjects["CDInterest"] = "CD Interest";
|
|
26
|
+
ActionTaxSubjects["TaxExemptInterest"] = "Tax Exempt Interest";
|
|
27
|
+
ActionTaxSubjects["EducationalBondInterst"] = "Educational Savings Bond Interest";
|
|
28
|
+
ActionTaxSubjects["DividendIncome"] = "Dividend Income";
|
|
23
29
|
})(ActionTaxSubjects || (ActionTaxSubjects = {}));
|
|
24
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
30
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLXRheC1zdWJqZWN0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hY3Rpb24tdGVtcy9hY3Rpb24tdGF4LXN1YmplY3RzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBTixJQUFtQixpQkEyQmxCO0FBM0JELFdBQW1CLGlCQUFpQjtJQUNoQyxrRUFBNkMsQ0FBQTtJQUM3QyxpRUFBNEMsQ0FBQTtJQUM1Qyw4Q0FBeUIsQ0FBQTtJQUN6Qix3REFBbUMsQ0FBQTtJQUNuQyx5REFBb0MsQ0FBQTtJQUNwQyx3REFBbUMsQ0FBQTtJQUNuQyxzREFBaUMsQ0FBQTtJQUNqQyx1RUFBa0QsQ0FBQTtJQUNsRCwrRUFBMEQsQ0FBQTtJQUMxRCx5REFBb0MsQ0FBQTtJQUNwQyxrRkFBNkQsQ0FBQTtJQUM3RCwwRUFBcUQsQ0FBQTtJQUNyRCxzRUFBaUQsQ0FBQTtJQUNqRCw2RUFBd0QsQ0FBQTtJQUN4RCx5REFBb0MsQ0FBQTtJQUNwQyxzRUFBaUQsQ0FBQTtJQUNqRCx3RUFBbUQsQ0FBQTtJQUNuRCxrRkFBNkQsQ0FBQTtJQUM3RCxvRkFBK0QsQ0FBQTtJQUMvRCxpREFBNEIsQ0FBQTtJQUM1Qix1REFBa0MsQ0FBQTtJQUNsQywyRUFBc0QsQ0FBQTtJQUN0RCwrQ0FBMEIsQ0FBQTtJQUMxQiw4REFBeUMsQ0FBQTtJQUN6QyxpRkFBNEQsQ0FBQTtJQUM1RCx1REFBa0MsQ0FBQTtBQUN0QyxDQUFDLEVBM0JrQixpQkFBaUIsS0FBakIsaUJBQWlCLFFBMkJuQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBlbnVtICBBY3Rpb25UYXhTdWJqZWN0cyB7XHJcbiAgICBQcmlvclllYXJUYXhSZXR1cm4gPSBcIlByaW9yIFllYXIgVGF4IFJldHVybnNcIixcclxuICAgIFN0YXR1dG9yeUV4dGVuc2lvbnMgPSBcIlN0YXR1dG9yeSBFeHRlbnNpb25zXCIsXHJcbiAgICBEZXBlbmRlbnRzID0gXCJEZXBlbmRlbnRzXCIsXHJcbiAgICBIZWFkSG91c2Vob2xkID0gXCJIZWFkIG9mIEhvdXNlaG9sZFwiLFxyXG4gICAgUmVzaWRlbmN5U3RhdHVzID0gXCJSZXNpZGVuY3kgU3RhdHVzXCIsXHJcbiAgICBKb2ludFRheFJlbGllZiA9IFwiSm9pbnQgVGF4IFJlbGllZlwiLFxyXG4gICAgSW5jb21lMTA5OU5FQyA9IFwiMTA5OSBORUMgSW5jb21lXCIsXHJcbiAgICBTY2hlZHVsZUsxSW5mb3JtYXRpb24gPSBcIlNjaGVkdWxlIEstMSBJbmZvcm1hdGlvblwiLFxyXG4gICAgT3RoZXJTZWxmRW1wbG95bWVudEluY29tZSA9IFwiT3RoZXIgU2VsZi1FbXBsb3ltZW50IEluY29tZVwiLFxyXG4gICAgRW1wbG95bWVudFdhZ2VzID0gXCJFbXBsb3ltZW50IFdhZ2VzXCIsXHJcbiAgICBQcm9wZXJ0eVNlcnZpY2VzTGlldVdhZ2VzID0gXCJQcm9wZXJ0eSBvciBTZXJ2aWNlcyBMaWV1IFdhZ2VzXCIsXHJcbiAgICBFbXBsb3llZUFjY291bnRhYmxlUGxhbiA9IFwiRW1wbG95ZWUgQWNjb3VudGFibGUgUGxhblwiLFxyXG4gICAgVGF4YWJsZUZyaW5nZUJlbmVmaXRzID0gXCJUYXhhYmxlIEZyaW5nZSBCZW5lZml0c1wiLFxyXG4gICAgTm9uVGF4YWJsZUZyaW5nZUJlbmVmaXRzID0gXCJOb24gVGF4YWJsZSBGcmluZ2UgQmVuZWZpdHNcIixcclxuICAgIFZldGVyYW5CZW5lZml0cyA9IFwiVmV0ZXJhbiBCZW5lZml0c1wiLFxyXG4gICAgTGlmZUluc3VyYW5jZVBheW1lbnRzID0gXCJMaWZlIEluc3VyYW5jZSBQYXltZW50c1wiLFxyXG4gICAgTWVkaWNhcmVXYWl2ZXJQYXltZW50cyA9IFwiTWVkaWNhcmUgV2FpdmVyIFBheW1lbnRzXCIsXHJcbiAgICBEaXNhYmlsaXR5SW5zdXJhbmNlQmVuZWZpdHMgPSBcIkRpc2FiaWxpdHkgSW5zdXJhbmNlIEJlbmVmaXRzXCIsXHJcbiAgICBEaXNhYmlsaXR5UmV0aXJlbWVudEJlbmVmaXRzID0gXCJEaXNhYmlsaXR5IFJldGlyZW1lbnQgQmVuZWZpdHNcIixcclxuICAgIENsZXJneVdhZ2VzID0gXCJDbGVyZ3kgV2FnZXNcIixcclxuICAgIEludGVyZXN0SW5jb21lID0gXCJJbnRlcmVzdCBJbmNvbWVcIixcclxuICAgIEJhbmtBY2NvdW50T3BlbmluZ0dpZnRzID0gXCJCYW5rIEFjY291bnQgT3BlbmluZyBHaWZ0c1wiLFxyXG4gICAgQ0RJbnRlcmVzdCA9IFwiQ0QgSW50ZXJlc3RcIixcclxuICAgIFRheEV4ZW1wdEludGVyZXN0ID0gXCJUYXggRXhlbXB0IEludGVyZXN0XCIsXHJcbiAgICBFZHVjYXRpb25hbEJvbmRJbnRlcnN0ID0gXCJFZHVjYXRpb25hbCBTYXZpbmdzIEJvbmQgSW50ZXJlc3RcIixcclxuICAgIERpdmlkZW5kSW5jb21lID0gXCJEaXZpZGVuZCBJbmNvbWVcIlxyXG59Il19
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaS1pbnZlc3RtZW50LWluY29tZS1tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9mb3JtLW1vZGVscy9pLWludmVzdG1lbnQtaW5jb21lLW1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIElJbnZlc3RtZW50SW5jb21lTW9kZWwge1xyXG4gICAgaW50ZXJlc3RJbmNvbWU6IGJvb2xlYW47XHJcbiAgICBpbnRlcmVzdFJlY2VpdmVkMTA5OTogYm9vbGVhbjtcclxuICAgIGludGVyZXN0QW1vdW50MTA5OTogbnVtYmVyO1xyXG4gICAgb3RoZXJJbnRlcmVzdEluY29tZUFtb3VudDogbnVtYmVyO1xyXG4gICAgYmFua0FjY291bnRHaWZ0T3BlbmluZzogYm9vbGVhbjtcclxuICAgIGJhbmtBY2NvdW50R2lmdE9wZW5pbmdBbW91bnQ6IG51bWJlcjtcclxuICAgIGNkSW50ZXJlc3Q6IGJvb2xlYW47XHJcbiAgICBjZEludGVyZXN0QW1vdW50OiBudW1iZXI7XHJcbiAgICB0YXhFeGVtcHRJbnRlcmVzdDogYm9vbGVhbjtcclxuICAgIHRheEV4ZW1wdEludGVyZXN0QW1vdW50OiBudW1iZXI7XHJcbiAgICBlZHVjYXRpb25hbFNhdmluZ3NCb25kSW50ZXJlc3Q6IGJvb2xlYW47XHJcbiAgICBlZHVjYXRpb25hbFNhdmluZ3NCb25kSW50ZXJlc3RBbW91bnQ6IG51bWJlcjtcclxuICAgIGRpdmlkZW5kSW5jb21lOiBib29sZWFuO1xyXG4gICAgb3JkaW5hcnlEaXZpZGVudEFtb3VudDogbnVtYmVyO1xyXG4gICAgcXVhbGlmaWVkRGl2aWRlbnRBbW91bnQ6IG51bWJlcjtcclxuICAgIG5vbkRpdmlkZW5kRGlzdHJpYnV0aW9uQW1vdW50OiBudW1iZXI7XHJcbiAgICBtb25leU1hcmtldERpdmlkZW5kQW1vdW50OiBudW1iZXI7XHJcbiAgICBzdG9ja0RpdmlkZW5kczogYm9vbGVhbjtcclxuICAgIHN0b2NrRGl2aWRlbmRBbW91bnQ6IG51bWJlcjtcclxuICAgIGhhc0RSSVBQbGFuOiBib29sZWFuO1xyXG4gICAgbXV0dWFsRnVuZERpc3RyaWJ1dGlvbnM6IGJvb2xlYW47XHJcbiAgICBtdXR1YWxGdW5kRGlzdHJpYnV0aW9uQW1vdW50OiBudW1iZXI7XHJcbn0iXX0=
|
|
@@ -18,5 +18,11 @@ export declare const enum ActionTaxSubjects {
|
|
|
18
18
|
MedicareWaiverPayments = "Medicare Waiver Payments",
|
|
19
19
|
DisabilityInsuranceBenefits = "Disability Insurance Benefits",
|
|
20
20
|
DisabilityRetirementBenefits = "Disability Retirement Benefits",
|
|
21
|
-
ClergyWages = "Clergy Wages"
|
|
21
|
+
ClergyWages = "Clergy Wages",
|
|
22
|
+
InterestIncome = "Interest Income",
|
|
23
|
+
BankAccountOpeningGifts = "Bank Account Opening Gifts",
|
|
24
|
+
CDInterest = "CD Interest",
|
|
25
|
+
TaxExemptInterest = "Tax Exempt Interest",
|
|
26
|
+
EducationalBondInterst = "Educational Savings Bond Interest",
|
|
27
|
+
DividendIncome = "Dividend Income"
|
|
22
28
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export interface IInvestmentIncomeModel {
|
|
2
2
|
interestIncome: boolean;
|
|
3
3
|
interestReceived1099: boolean;
|
|
4
|
-
interestAmount1099:
|
|
4
|
+
interestAmount1099: number;
|
|
5
5
|
otherInterestIncomeAmount: number;
|
|
6
6
|
bankAccountGiftOpening: boolean;
|
|
7
7
|
bankAccountGiftOpeningAmount: number;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@adonoustech/bacon-tax",
|
|
3
|
-
"version": "2.5.
|
|
3
|
+
"version": "2.5.24",
|
|
4
4
|
"scripts": {
|
|
5
5
|
"build:cjs": "tsc -p tsconfig.cjs.json",
|
|
6
6
|
"build:es": "tsc -p tsconfig.es.json",
|
|
@@ -36,5 +36,5 @@
|
|
|
36
36
|
"bugs": {
|
|
37
37
|
"url": "https://github.com/AdonousTech/bacon-tax/issues"
|
|
38
38
|
},
|
|
39
|
-
"gitHead": "
|
|
39
|
+
"gitHead": "56e9940288382d30eab06acaa3fdf5a08dba7c21"
|
|
40
40
|
}
|
|
@@ -331,6 +331,109 @@ export const ActionTaxFragments = [
|
|
|
331
331
|
<p>This information is crucial for us to accurately represent your earnings and to calculate any potential deductions correctly. Your prompt attention to this request will help ensure that your tax returns are prepared in a timely and efficient manner.</p>
|
|
332
332
|
<p>If you have any questions or need further clarification on what is required, please do not hesitate to contact us. We are here to assist you through every step of this process.</p>
|
|
333
333
|
<p>Thank you for your cooperation and prompt attention to this matter.</p>`
|
|
334
|
+
},
|
|
335
|
+
{
|
|
336
|
+
actionTaxSubject: "Interest Income",
|
|
337
|
+
actionTitle: "Interest Income",
|
|
338
|
+
actionInstructions: `<p>In reviewing your financial activities for the tax year, you indicated receiving interest income. To accurately determine the taxability of this income and ensure compliance with tax regulations, we require additional details. Kindly provide the following information:</p>
|
|
339
|
+
<ol>
|
|
340
|
+
<li><b>Source of Interest Income:</b> Please specify the institution(s) or entity(ies) from which you received interest income (e.g., banks, credit unions).</li>
|
|
341
|
+
<li><b>Amount Received:</b> Confirm the total amount of interest income received from each source during the tax year.</li>
|
|
342
|
+
<li><b>Account Types:</b> Identify the type of accounts that generated the interest (e.g., savings, checking, certificates of deposit).</li>
|
|
343
|
+
<li><b>Tax Forms Received:</b> List any tax forms you have received related to interest income, such as Form 1099-INT or Form 1099-OID.</li>
|
|
344
|
+
<li><b>Foreign Interest:</b> If any interest income was earned from foreign accounts or sources, please provide details, including the country of origin.</li>
|
|
345
|
+
</ol>
|
|
346
|
+
<p>Providing these details will enable us to accurately assess the tax implications of your interest income and ensure your tax return is complete and correct. You can attach the requested documents and information by replying to this email or uploading them directly to our secure client portal.</p>
|
|
347
|
+
<p>If you have any questions or require assistance in gathering this information, do not hesitate to contact us.</p>
|
|
348
|
+
<p>Thank you for your prompt attention to this matter.</p>`
|
|
349
|
+
},
|
|
350
|
+
{
|
|
351
|
+
actionTaxSubject: "Bank Account Opening Gifts",
|
|
352
|
+
actionTitle: "Bank Account Opening Gifts",
|
|
353
|
+
actionInstructions: `<p>We are in the process of reviewing your tax situation and have noted that you received a gift for opening an account at a financial institution. To accurately determine the taxability of this income, we kindly request the following information:</p>
|
|
354
|
+
<ol>
|
|
355
|
+
<li>The name of the financial institution where the account was opened.</li>
|
|
356
|
+
<li>The date the account was opened.</li>
|
|
357
|
+
<li>A detailed description of the gift received (e.g., cash, merchandise, or services).</li>
|
|
358
|
+
<li>The fair market value of the gift at the time it was received.</li>
|
|
359
|
+
<li>Any documentation provided by the financial institution regarding the gift (e.g., a letter, email confirmation, or statement indicating the value of the gift).</li>
|
|
360
|
+
<li>Confirmation if you have received more than one gift for opening accounts within the same tax year, and if so, the details for each.</li>
|
|
361
|
+
</ol>
|
|
362
|
+
<p>Please provide this information at your earliest convenience to ensure we can accurately assess the tax implications and comply with all IRS requirements.</p>
|
|
363
|
+
<p>Thank you for your prompt attention to this matter.</p>`
|
|
364
|
+
},
|
|
365
|
+
{
|
|
366
|
+
actionTaxSubject: "CD Interest",
|
|
367
|
+
actionTitle: "CD Interest",
|
|
368
|
+
actionInstructions: `<p>To ensure accurate reporting of your income from Certificates of Deposit (CDs) for the tax year, we kindly request the following information. This is essential to comply with IRS regulations and to potentially optimize your tax benefits.</p>
|
|
369
|
+
<ol>
|
|
370
|
+
<li><strong>Name of the Bank or Financial Institution:</strong> Where the CD is held.</li>
|
|
371
|
+
<li><strong>Account Number:</strong> This helps in identifying the specific CD.</li>
|
|
372
|
+
<li><strong>Total Interest Earned:</strong> The amount of interest earned from the CD during the tax year.</li>
|
|
373
|
+
<li><strong>CD Term:</strong> The duration or term of the CD (e.g., 6 months, 1 year).</li>
|
|
374
|
+
<li><strong>Date of Purchase:</strong> When you originally acquired the CD.</li>
|
|
375
|
+
<li><strong>Maturity Date:</strong> When the CD reached or will reach its full term.</li>
|
|
376
|
+
<li><strong>1099-INT Forms:</strong> If received, please include copies of any 1099-INT forms associated with the CD interest.</li>
|
|
377
|
+
</ol>
|
|
378
|
+
<p>Please provide this information at your earliest convenience to ensure accurate and timely preparation of your tax documents. You may upload the documents directly through our secure client portal or arrange for a meeting to provide them in person.</p>
|
|
379
|
+
<p>If you have any questions or need further assistance, do not hesitate to contact us.</p>
|
|
380
|
+
<p>Thank you for your prompt attention to this matter.</p>`
|
|
381
|
+
},
|
|
382
|
+
{
|
|
383
|
+
actionTaxSubject: "Tax Exempt Interest",
|
|
384
|
+
actionTitle: "Tax Exempt Interest",
|
|
385
|
+
actionInstructions: `<p>We understand that you have received tax-exempt interest during the tax year, possibly from municipal bonds or similar investments. To accurately prepare your tax returns and ensure compliance with tax regulations, we kindly request the following information:</p>
|
|
386
|
+
<ol>
|
|
387
|
+
<li><strong>Statements of Tax-Exempt Interest:</strong> Please provide all 1099-INT forms or equivalent statements that detail your tax-exempt interest income for the tax year.</li>
|
|
388
|
+
<li><strong>Details of Issuing Entities:</strong> A list or statement identifying the entities that issued the bonds or similar investments. This includes municipal, state, or federal entities.</li>
|
|
389
|
+
<li><strong>Investment Detail:</strong> A breakdown of the investments contributing to tax-exempt interest. This should include the purchase date, purchase amounts, and any related maturity dates.</li>
|
|
390
|
+
<li><strong>Brokerage Account Statements:</strong> Copies of your brokerage account statements that detail transactions and holdings in tax-exempt investments.</li>
|
|
391
|
+
<li><strong>AMT (Alternative Minimum Tax) Consideration:</strong> If available, documentation indicating whether any of the tax-exempt interest is subject to the Alternative Minimum Tax.</li>
|
|
392
|
+
</ol>
|
|
393
|
+
<p>This information is crucial for an accurate and efficient tax preparation process. Please forward the requested documents at your earliest convenience. If you have any questions or need assistance in gathering this information, do not hesitate to contact us.</p>
|
|
394
|
+
<p>Thank you for your cooperation and prompt attention to this matter.</p>`
|
|
395
|
+
},
|
|
396
|
+
{
|
|
397
|
+
actionTaxSubject: "Educational Savings Bond Interest",
|
|
398
|
+
actionTitle: "Educational Savings Bond Interest",
|
|
399
|
+
actionInstructions: `<p>We hope this message finds you well. As part of our continued effort to provide you with the best tax preparation services, we are reaching out to gather necessary documentation related to the interest you may have received from redeeming an Educational Savings Bond.</p>
|
|
400
|
+
|
|
401
|
+
<p>To accurately assess the eligibility for exemption and to ensure compliance with the IRS, we kindly request you provide the following information:</p>
|
|
402
|
+
<ol>
|
|
403
|
+
<li>A copy of Form 1099-INT or similar statement provided by the financial institution, indicating the amount of interest received from the Educational Savings Bond.</li>
|
|
404
|
+
<li>Detailed records of the Educational Savings Bonds redeemed during the tax year, including:
|
|
405
|
+
<ul>
|
|
406
|
+
<li>Bond serial numbers</li>
|
|
407
|
+
<li>Issue dates</li>
|
|
408
|
+
<li>Redemption dates</li>
|
|
409
|
+
<li>Amounts</li>
|
|
410
|
+
</ul>
|
|
411
|
+
</li>
|
|
412
|
+
<li>Receipts or documentation for qualified educational expenses paid during the year, including:
|
|
413
|
+
<ul>
|
|
414
|
+
<li>Tuition and fees</li>
|
|
415
|
+
<li>Course materials</li>
|
|
416
|
+
<li>Any other required expenses for enrollment or attendance at an eligible educational institution</li>
|
|
417
|
+
</ul>
|
|
418
|
+
</li>
|
|
419
|
+
<li>Proof of enrollment from an eligible educational institution for the beneficiary of the bond.</li>
|
|
420
|
+
</ol>
|
|
421
|
+
<p>This information is crucial for determining the taxability of the interest income and potentially maximizing your tax benefits. We appreciate your prompt attention to this request and recommend compiling these documents at your earliest convenience.</p>
|
|
422
|
+
<p>If you have any questions or need further assistance, please do not hesitate to contact our office directly.</p>
|
|
423
|
+
<p>Thank you for your cooperation and trust in our services.</p>`
|
|
424
|
+
},
|
|
425
|
+
{
|
|
426
|
+
actionTaxSubject: "Dividend Income",
|
|
427
|
+
actionTitle: "Dividend Income",
|
|
428
|
+
actionInstructions: `<p>We are currently in the process of preparing your tax returns and have noted that you indicated receiving dividend income over the past tax year. To ensure we accurately report this income and optimize your tax situation, we kindly request the following documentation and information:</p>
|
|
429
|
+
<ol>
|
|
430
|
+
<li>All 1099-DIV forms received from corporations or mutual funds. This includes distributions of cash, stock, or other property.</li>
|
|
431
|
+
<li>If applicable, details regarding any foreign dividends including the amount in foreign currency, the country of origin, and any foreign tax paid.</li>
|
|
432
|
+
<li>For dividends reinvested, please provide statements or confirmations showing these transactions.</li>
|
|
433
|
+
<li>Any other relevant documentation or information regarding dividends not covered by a 1099-DIV.</li>
|
|
434
|
+
</ol>
|
|
435
|
+
<p>Please ensure all documents are clear and legible to avoid any processing delays. We recommend securely uploading the requested information through our client portal or arranging a secure email transmission.</p>
|
|
436
|
+
<p>Your prompt response is appreciated as it will help us in completing your tax preparations efficiently. If you have any questions or need clarification, do not hesitate to contact us.</p>`
|
|
334
437
|
}
|
|
335
438
|
|
|
336
439
|
|
|
@@ -344,4 +447,8 @@ export const ActionTaxFragments = [
|
|
|
344
447
|
|
|
345
448
|
|
|
346
449
|
|
|
450
|
+
|
|
451
|
+
|
|
452
|
+
|
|
453
|
+
|
|
347
454
|
];
|
|
@@ -18,5 +18,11 @@ export const enum ActionTaxSubjects {
|
|
|
18
18
|
MedicareWaiverPayments = "Medicare Waiver Payments",
|
|
19
19
|
DisabilityInsuranceBenefits = "Disability Insurance Benefits",
|
|
20
20
|
DisabilityRetirementBenefits = "Disability Retirement Benefits",
|
|
21
|
-
ClergyWages = "Clergy Wages"
|
|
21
|
+
ClergyWages = "Clergy Wages",
|
|
22
|
+
InterestIncome = "Interest Income",
|
|
23
|
+
BankAccountOpeningGifts = "Bank Account Opening Gifts",
|
|
24
|
+
CDInterest = "CD Interest",
|
|
25
|
+
TaxExemptInterest = "Tax Exempt Interest",
|
|
26
|
+
EducationalBondInterst = "Educational Savings Bond Interest",
|
|
27
|
+
DividendIncome = "Dividend Income"
|
|
22
28
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export interface IInvestmentIncomeModel {
|
|
2
2
|
interestIncome: boolean;
|
|
3
3
|
interestReceived1099: boolean;
|
|
4
|
-
interestAmount1099:
|
|
4
|
+
interestAmount1099: number;
|
|
5
5
|
otherInterestIncomeAmount: number;
|
|
6
6
|
bankAccountGiftOpening: boolean;
|
|
7
7
|
bankAccountGiftOpeningAmount: number;
|